涂鸦Zigbee SDK开发系列教程——3.快速入门
Posted 三明治开发社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了涂鸦Zigbee SDK开发系列教程——3.快速入门相关的知识,希望对你有一定的参考价值。
在涂鸦 IoT 平台上创建产品完成且搭建好开发环境后就可以进行应用开发了。本章节将会通过对提供的 demo 进行简单修改,带你快速体验如何通过编写涂鸦模组固件实现对产品的智能化开发。
demo 功能介绍:硬件使用 ZSU 主控板,要求可以通过按键(S2)和手机 APP 去控制板载LED灯(D2)。长按配网按键(S2)将会重置配网设备,使其进入配网模式,短按按键控制板载 LED 灯(D2)。
准备工作
硬件
-
ZSU 主控板(也可使用其他涂鸦 ZigBee 模组或其他型号的三明治 ZigBee 主控板)
-
J-Link 烧录器
-
USB 转串口工具
demo 中用到的引脚介绍如下,点击查看 ZSU 模组规格书。
丝印名称 芯片引脚 备注 S2 PC4 按键引脚,初始化为高电平,低电平有效 D2 PC5 开关状态指示灯/网络指示灯,低电平有效
软件
Tuya Wind IDE 对所使用的开发环境有一定的要求,所以在安装 IDE 前需要针对不同的开发环境进行配置,涂鸦提供了以下 4 种开发环境的配置教程,您可以根据自己使用的开发环境点此链接参考对应的环境配置:
- Windows 10 系统
- Linux 系统(Ubuntu 18.04 及 Ubuntu 20.04)
- Windows 主机 + Linux 虚拟机(Virtual Box & VMWare)
- Windows 主机 + WSL
本次课程中 SDK 是基于 Windows 系统环境开发,故只介绍 Windows 下开发环境配置,需要获取以下内容:
-
代码编辑器
本次开发是在 Windows 上使用 IDE 和 IAR 进行开发,开发环境配置详细流程可参考2.环境搭建章节。
-
涂鸦 IoT 平台
在对产品进行开发前,需要在涂鸦 IoT 平台上成功创建产品,拿到待开发产品的产品 ID(PID),产品创建详细流程可参考1.创建产品章节。
-
模组 SDK 与应用 demo
模组 SDK 及 demo 示例获取在下文中说明。
-
云模组烧录授权平台工具
点击此链接参考烧录授权工具下载安装步骤;
登录涂鸦智慧生产管理系统后按照如下提示依次点击
知识库管理->软件下载
,软件名称搜索生产解决方案,点击下载;安装完成后启动并登录到涂鸦生产解决方案,选择云模组;
等待云模组烧录授权平台加载完成如下图:
获取 SDK
涂鸦支持通过创建产品后获取 Zigbee SDK,您可以根据自己的产品需求,创建对应品类产品然后获取对应芯片平台的 SDK 。
获取方式:1)在 IoT 平台创建产品并选择相应参数信息后自动生成,SDK 与选择的硬件参数一一对应;
2)安装 VScode 软件,并安装 Tuya Wind IDE 插件,通过 IDE 获取 SDK;
说明:涂鸦官方目前只提供上述 ZigBee SDK 获取方式,其他渠道获取的 SDK 谨慎使用。
由于获取 SDK 后需要在 IDE 进行首次编译所以建议使用 IDE 获取 SDK ,下面介绍如何使用 IDE 获取 SDK 的操作流程。
获取开发框架
在 VScode 下使用涂鸦 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安装参照2.环境搭建章节)。
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
路径下,并用 VSCODE 打开进行首次编译,本例程芯片平台为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 来打开日志功能。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5KWjQfuY-1654681684724)(https://images.tuyacn.com/content-platform/hestia/1647594322fcfaeee5f82.png)]
编译和生成产物介绍
固件编译
-
在 VScode 中展开需要编译的工程文件夹,右击后找到相关选项可进行 build Project 和 clean Project;
针对 IDE 内提供的 demo 都有相应的 Demo 向导可参考,右击工程文件名,选择 Quick Start,即可浏览相关内容。
-
点击Build Project之后,弹出输入应用的编译版本,版本格式为 x.x.x,如编译首版为 1.0.0,按 Enter 确认开始编译。
-
终端开始下载工具链,并在下载完成后自动编译,等待编译完成,通过 Log 确认编译结果及编译产物的路径,可以发现在工程下生成了
output
文件夹用于存放编译产物。 -
(可选)若要清除编译的内容,右击工程文件名并选择 Clean Project,然后输入版本号并按 Enter 确认后就可以清除之前编译的产物。
注意事项:
1.第一次编译必须使用 IDE 进行编译,脚本会自动构建编译环境,之后就可以在生成的
_build
文件夹下找到对应的 IAR 工程,打开工程后就可以正常编译和调试了(第三方工具无法在output
目录下生成新的固件产物);2.IDE 下的脚本会递归遍历demo文件夹和 TuyaOS/components文件夹,自动添加这些文件夹下所有的源文件和头文件到编译环境;
3.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 固件即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DpE2OOwD-1654681684732)(https://images.tuyacn.com/content-platform/hestia/16475944161a4502ec346.png)]
上传固件
自定义开发固件如果不上传到云平台,直接将固件烧录到已授权的模组中,会导致配网一直无法成功,故需要将开发好的固件上传到 IoT 平台。
-
在产品硬件开发页面,选择 TuyaOS 开发方式并选择相应的模组,点击新增自定义固件:
-
填写固件基本信息,点击生成固件KEY:
-
在生成固件 Key 后,点击新增固件版本,来上传在本地生成的固件产物
-
对于 Zigbee 协议来说生产固件和用户区固件是相同的,都上传 QIO 类型生产固件即可,之后点击保存并上架、确认上架
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kIxzxxmS-1654681684739)(https://images.tuyacn.com/content-platform/hestia/16475945146f7f0e27386.png)]
-
固件新增成功示例如下:
获取生产凭证
-
固件上架完成后点击免费领取2个激活码,
-
然后选择交付形式,这里我们选择生产凭证,目前 Zigbee 协议不支持授权码清单交付方式。
-
之后点击确认领取,完成后下载生产凭证并解压,在
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 |
输入生产凭证
-
打开云模组烧录授权平台根据箭头指引,输入获取到的生产凭证,选择工位为烧录授权,点击确定
-
选择端口号(与烧录设备相连的端口),信道选择 RF 测试信道 13,下拉选择 JLink,注意烧录波特率与授权波特率均为 115200,确定后点击 运行
烧录授权成功
等待烧录授权成功
设备配网
设备模组通过云模组授权工具烧录授权完成后,我们需要下载涂鸦智能 APP对设备进行配网,配网成功后就可以通过涂鸦智能 APP 对设备进行控制。涂鸦智能 APP 可以在手机应用商城中搜索下载安装,也可以通过扫描下面的二维码进行下载安装。
Zigbee 子设备配网的前提是当前家庭中已经添加了一个 Zigbee 无线网关,网关的作用就是负责连接智能平台,接收子设备发出的信号并上传只云端服务器,间接地把 Zigbee 子设备接入我们的智能平台,从而用户可在App 上实时查看设备数据并远程控制设备运行状态。
说明:设备配网时,应选择 2.4G 频段的 Wi-Fi 进行连接配网。
网关设备配网
将网关与电源连接,长按配网按键确认配网指示灯常亮,确保手机连接家庭 2.4GHz 频段路由器,此时手机、网关处于同一个局域网;打开涂鸦智能 APP 首页,点击页面右上角添加按钮“+”,选择网关中控/无线网关(Zigbee ),依照页面提示操作设备入网,添加成功后,即可在列表中找到网关设备。
子设备配网
网关配网成功后就可以操作子设备入网了,固件烧录完成后根据代码内的配网引脚设置,控制设备进入配网状态,本教程中设备烧录固件后 SDK 启动时应用层直接调用设备上电自组网函数,在看到网络指示灯在快速闪烁时,设备即进入配网状态。打开涂鸦智能 App 点击刚才已经添加的无线网关,选择添加子设备。添加成功后在网关列表可看到开关设备已添加,并可以使用 App 对设备进行控制了。
点击开关设备电源开关,可看到配置的 led 指示灯对应点亮。
至此,恭喜您完成了一款智能开关产品的原型开发。基于涂鸦 IoT 平台和涂鸦三明治开发套件,您可以方便快捷地搭建智能产品原型,加速智能产品的开发流程。
以上是关于涂鸦Zigbee SDK开发系列教程——3.快速入门的主要内容,如果未能解决你的问题,请参考以下文章
涂鸦Zigbee SDK开发系列教程——7.HAL API 接口示例