快速入门

更新时间:2023-05-24 10:21:10下载pdf

涂鸦 IoT 开发平台 上创建产品完成且搭建开发环境后,就可以进行应用开发了。本章节将通过对提供的 Demo 进行简单修改,带你快速体验如何通过编写涂鸦模组固件,实现产品的智能化开发。

Demo 功能介绍:硬件使用 ZSU 主控板,要求可以通过按键(S2)和手机 App 来控制板载 LED 灯(D2)。长按配网按键(S2)将会重置配网设备,使其进入配网模式,短按按键控制板载 LED 灯(D2)。

准备工作

硬件

  • ZSU 主控板。也可使用其他涂鸦 Zigbee 模组或其他型号的三明治 Zigbee 主控板。

    快速入门

  • J-Link 烧录器

  • USB 转串口工具

    Demo 中用到的引脚介绍如下。更多信息,请查看 ZSU 模组规格书

    丝印名称 芯片引脚 备注
    S2 PC4 按键引脚,初始化为高电平,低电平有效
    D2 PC5 开关状态指示灯/网络指示灯,低电平有效

软件

本次课程中 SDK 是基于 Windows 系统环境开发,故只介绍 Windows 下开发环境配置,需要获取以下内容:

  • 代码编辑器

    本次开发是在 Windows 上使用 IDE 和 IAR 进行开发,开发环境配置详细流程可参考 环境搭建 章节。

  • 涂鸦 IoT 开发平台

    在进行产品开发前,需要在涂鸦 IoT 开发平台上成功创建产品,拿到待开发产品的产品 ID(PID)。产品创建详细流程,可参考 创建产品 章节。

  • 模组 SDK 与应用 Demo

    模组 SDK 及 Demo 示例获取在下文中说明。

  • 云模组烧录授权平台 工具

    单击此链接,参考烧录授权工具下载和安装步骤。

    1. 登录 涂鸦智慧生产管理系统

    2. 单击 知识库管理 > 软件下载,软件名称搜索 生产解决方案,单击 搜索,并单击 下载 来下载找到的生产解决方案。

      快速入门

    3. 安装完成后,启动并登录到 涂鸦生产解决方案,选择 云模组

      快速入门

    4. 等待 云模组烧录授权平台 加载完成,如下图:

      快速入门

获取 SDK

涂鸦支持通过创建产品后获取 Zigbee SDK。您可以根据自己的产品需求,创建对应品类产品,然后获取对应芯片平台的 SDK。

获取方式:安装 Visual Studio Code 软件,并安装 Tuya Wind IDE 插件,通过 IDE 获取 SDK。

涂鸦官方目前只提供上述 Zigbee SDK 获取方式,其他渠道获取的 SDK 请谨慎使用。

由于获取 SDK 后需要在 IDE 进行首次编译,所以建议使用 IDE 获取 SDK。下面介绍如何使用 IDE 获取 SDK。

获取开发框架

打开 Visual Studio Code,使用涂鸦 IoT 开发平台的账号登录 Tuya Wind IDE,并单击 创建新框架

快速入门

拉取对应芯片的开发包

在项目向导页,创建新的涂鸦项目,搜索方式选择 通过 SDK 名称搜索。如图所示,填写新建项目名称,SDK 名称输入 tuyaos-subdev-zg-efr32_zigbee-mg21a020f1024,选择对应开发框架及版本,更改开发包需要保存的位置,单击 完成 后开始拉取开发包。

快速入门

创建开发框架需要一定的时间,耐心等待进度完成。

快速入门

开发框架生成后,IDE 会自动在项目的左侧添加 SDK 开发框架的全部内容。

快速入门

获取到 SDK 开发资料包后,打开 software/TuyaOS 文件夹。该目录包含的文件夹和文件结构如下所示,内含相关的例程和说明文档,您可以参考 docs 目录下的相关说明文档快速上手。

TuyaOS
  ├── apps        //包含有各种品类的实例代码 Demo,新建项目只需在该文件夹下新建文件夹并添加相关代码即可
       └── tuyaos_demo_zg_light2    //涂鸦 Zigbee 二路彩灯 Demo
  ├── components//包含涂鸦开发的各类开源组件,用户添加组件只需新建目录即可,然后将组件代码放在此文件夹下
  ├── docs        //包含相关说明文档
  ├── include     //包含 TuyaOS 开发框架各类 API 接口文件
  │    ├── adapter  //适配层接口文件
  │    │   ├── adc
  │    │   ├── bluetooth
  │    │   ├── display
  │    │   ├── flash
  │    │   ├── gpio
  │    │   ├── hci
  │    │   ├── i2c
  │    │   ├── init
  │    │   ├── network
  │    │   ├── pwm
  │    │   ├── rtc
  │    │   ├── spi
  │    │   ├── system
  │    │   ├── timer
  │    │   ├── uart
  │    │   ├── watchdog
  │    │   └── zigbee
  │    ├── base
  │    └── components
  │        ├── tal_driver
  │        ├── tal_syste
  │        ├── tal_system_service
  │        └── tal_zigbee
  ├── libs             //包含 TuyaOS 开发框架依赖的库文件
  └── tools            //包含应用在构建和编译过程中所用到的相关工具和脚本
  │    ├── bootloader
  │    ├── commander
  │    ├── ld
  │    ├── scripts
  │    └── templates
  └── build_app.bat    //编译入口脚本文件

获取 Demo 文件

本次课程以开关产品为示例介绍如何使用 Tuya SDK 进行应用开发,打开 Git 工具输入如下指令获取开关 Demo 工程文件。Git 安装,请参考 环境搭建 章节。

git clone https://github.com/tuya/tuya-iotos-embeded-demo-zigbee-sdk-development-course.git

按 Enter 键,等待 Demo 下载完成。

快速入门

修改代码

获取到 SDK 和 Demo 文件后,将 Demo 工程文件夹 tuyaos_demo_zigbee_switch 放入 SDK 文件夹 /apps 路径下,并用 Visual Studio Code 打开进行首次编译。本例程芯片平台为EFR32MG21A020F1024,结合自身硬件对代码进行简单修改,即可实现智能开关产品功能。

快速入门

修改 PID

根据所创建的产品信息和硬件电路,用户需要将 /apps/tuyaos_demo_zigbee_switch 目录下 appconfig.json 文件中的 firmwareInfo 修改为开关产品设备相关的信息,详细说明如下:

名称 作用
module_name 所使用的模组名称
chip_id 该模组对用的芯片平台
image_type 在 OTA 过程中需要匹配新老固件 image type,决定是否可以升级
manufacture_id 在 OTA 过程中需要匹配设备厂商号,决定是否允许升级
mode_id 用于设备在网关中快速识别使用
pid 产品 ID,用于区分产品类型和 App 面板界面
manufacture_name 产品 PID 能力值
  • mode_id 是设备组网快速识别设备类型使用,是涂鸦子设备与涂鸦网关约定的标识具体。每个产品类型都不一样,需在 涂鸦 Zigbee 设备接入对接规范 中找到各个产品对应的 model_id,并填入 appconfig.json 文件中。

  • pid 是用户在涂鸦 IoT 开发平台创建产品后生成的唯一标识。产品的配置都是和 PID 绑定的,因此需要将 PID 信息填写在固件代码中。

    快速入门

  • module_name 指模组名称,一定要和自己使用的模组名称对应,否则使用上位机时会授权失败。

由于本例程中是开关产品,故开发者只需修改 pid 即可。修改后的 appconfig.json 文件的 firmwareInfo 部分信息如下图所示:

快速入门

Json 文件中的设置会在 include 目录下的 app_config.h 中自动生成相应的宏定义。不要直接修改 app_config.h 文件,该文件由脚本自动生成,切记!

修改配网引脚

配网按键引脚可以通过修改 app_common.c 文件中的 app_button_init,进行配网按键引脚的设置,也可使用默认引脚。

快速入门

修改 LED 引脚

LED 引脚可以通过修改 app_common.c 文件中的 app_gpio_init,选择要控制的 LED 引脚,也可使用默认引脚。

快速入门

打开设备日志

在设备开发调试阶段,可以通过查看 设备日志 来调试设备功能。设备本地日志可通过 USB 转串口工具串口调试助手 进行查看,前提是代码中启用了日志功能。获取到的 SDK 中日志功能 默认关闭,可通过修改 tuya_iot_config.h 中的 ENABLE_TAL_LOG 的值为 1 来打开日志功能。

快速入门

编译和生成产物介绍

固件编译

  1. 在 Visual Studio Code 中,展开需要编译的工程文件夹,右击后找到相关选项,可进行 Build ProjectClean Project

    针对 IDE 内提供的 Demo 都有相应的 Demo 向导可参考,右击工程文件名,选择 Quick Start,即可浏览相关内容。

    快速入门

  2. 单击 Build Project 之后,弹出输入应用的编译版本,版本格式为 x.x.x。如编译首版为 1.0.0,按 Enter 确认开始编译。

    快速入门

  3. 终端开始下载工具链,并在下载完成后自动编译。等待编译完成,通过 Log 确认编译结果及编译产物的路径,可以发现在工程下生成了 output 文件夹用于存放编译产物。

    快速入门

  4. (可选)若要清除编译的内容,右击工程文件名并选择 Clean Project,然后输入版本号并按 Enter 确认后,就可以清除之前编译的产物。

    快速入门

  • 第一次编译必须使用 IDE,脚本会自动构建编译环境。之后就可以在生成的 _build 文件夹下找到对应的 IAR 工程,打开工程后就可以正常编译和调试了。第三方工具无法在 output 目录下生成新的固件产物。
  • IDE 下的脚本会递归遍历 Demo 文件夹和 TuyaOS/components 文件夹,自动添加这些文件夹下所有的源文件和头文件到编译环境。
  • IDE 在每次编译前都会重新构建编译环境,所以禁止进行以下操作:
    • 在使用 IDE 编译时,请关闭 IAR 或 Keil 工具,否则可能会导致文件占用的问题。
    • 在使用 IAR 或 Keil 进行调试时,禁止手动添加源文件和头文件到工程项目中。

第一次使用 IDE 编译完成后,就可以使用第三方工具 IAR 或 Keil 来编译调试,打开开发资料包,进入目录 apps\tuyaos_demo_zigbee_switch\_build,双击 .eww 文件即可打开工程。打开后,单击 Rebuild ALL 即可进行开发编译。

打开 IAR 后建议不要通过 Open workspace 方式来打开工程,否则编译可能出错,另外 Rebuild All 之前建议先 Clean

快速入门

生成产物

编译完成后,在 output 文件夹下生成可用于烧录执行的 QIO 生产固件和 UG 全量升级固件,DIFF 是用于差分升级的固件,在生产时烧录 QIO 固件即可。

快速入门

上传固件

自定义开发固件如果不上传到涂鸦 IoT 开发平台,直接将固件烧录到已授权的模组中,会导致配网一直无法成功,故需要将开发好的固件上传到涂鸦 IoT 开发平台。

  1. 在产品 硬件开发 页面,选择 TuyaOS 开发方式并选择相应的模组,单击 新增自定义固件

    快速入门

  2. 填写固件基本信息,单击 生成固件KEY

    快速入门

  3. 在生成固件 Key 后,单击 新增固件版本,上传在本地生成的固件产物。

    快速入门

  4. 对于 Zigbee 协议来说,生产固件用户区固件 是相同的,都上传 QIO 类型生产固件即可。之后,单击保存并上架确认上架

    快速入门

  5. 固件新增成功示例如下:

    快速入门

获取生产凭证

  1. 固件上架完成后,单击 免费领取2个激活码

    快速入门

  2. 选择交付形式,本例中选择 生产凭证。目前 Zigbee 协议不支持 授权码清单 交付方式。

    快速入门

  3. 单击 确认领取,完成后下载生产凭证并解压,在 Token_information.txt 文档中提取生产凭证。

    快速入门

烧录授权

烧录授权接线方式

按照下表将三明治开发板、烧录器等与电脑连接起来。

J-Link 引脚 模组引脚
VCC VCC
GND GND
SWCLK SCK
SWDIO SDO
RESET RST
USB转串口 模组引脚
3.3V 3V3
GND GND
RXD RXD
TXD TXD

输入生产凭证

  1. 打开 云模组烧录授权平台,根据箭头指引,输入获取到的 生产凭证,选择工位为 烧录授权,并单击 确定

    快速入门

  2. 选择 端口号(与烧录设备相连的端口),信道选择 RF 测试信道 13,下拉选择 JLink,注意 烧录 波特率与 授权 波特率均为 115200,确定后单击 运行

    快速入门

烧录授权成功

等待烧录授权成功。

快速入门

设备配网

设备模组通过 云模组授权工具 烧录授权完成后,需要下载 智能生活 App 对设备进行配网,配网成功后就可以通过智能生活 App 对设备进行控制。智能生活 App 可以在手机应用商城中搜索下载安装,也可以通过扫描下面的二维码进行下载安装。

Zigbee 子设备配网的前提是当前家庭中已经添加了一个 Zigbee 无线网关,网关负责连接涂鸦 IoT 开发平台,接收子设备发出的信号并上传到云端服务器,间接地把 Zigbee 子设备接入涂鸦 IoT 开发平台,从而用户可在 App 上实时查看设备数据并远程控制设备运行状态。

设备配网时,应选择 2.4G 频段的 Wi-Fi 进行连接配网。

网关设备配网

  1. 将网关与电源连接,长按配网按键确认配网指示灯常亮,确保手机连接家庭 2.4GHz 频段路由器,此时手机、网关处于同一个局域网。

  2. 打开智能生活 App 首页,单击页面右上角添加按钮 +,选择网关中控/无线网关(Zigbee),依照页面提示操作设备入网。

  3. 添加成功后,即可在列表中找到网关设备。

    快速入门

子设备配网

网关配网成功后就可以操作子设备入网了。固件烧录完成后,根据代码内的配网引脚设置,控制设备进入配网状态。
在本教程中,设备烧录固件后 SDK 启动时,应用层直接调用设备上电自组网函数,在看到网络指示灯快速闪烁时,设备即进入配网状态。打开智能生活 App,单击刚才已经添加的无线网关,选择添加子设备。添加成功后,在网关列表可看到开关设备已添加,并可以使用 App 对设备进行控制。

快速入门

单击开关设备 电源开关,可看到配置的 LED 指示灯对应点亮。

快速入门

至此,恭喜您完成了一款智能开关产品的原型开发。基于涂鸦 IoT 开发平台和涂鸦三明治开发套件,您可以方便快捷地搭建智能产品原型,加速智能产品的开发流程。