涂鸦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.快速入门相关推荐
- 涂鸦蓝牙SDK开发系列教程——1.快速入门
本系列课程将介绍如何使用 涂鸦蓝牙模组及其 SDK 进行产品开发,帮助开发者更快掌握 涂鸦蓝牙模组.涂鸦蓝牙 SDK.涂鸦 IoT 平台.涂鸦三明治开发套件.涂鸦云模组烧录授权平台 等开发工具的使用方 ...
- 涂鸦Zigbee SDK开发系列教程——2.环境搭建
本章节主要介绍如何搭建涂鸦 Zigbee ZSU 模组 SDK 开发环境. IAR安装 前往 IAR 官网下载 IAR Embedded Workbench IDE(IAR for Arm),下载安装 ...
- 涂鸦Zigbee SDK开发系列教程——4.烧录授权
上一章节中简述了烧录授权方案大致流程,针对不同开发方案对应了不同烧录授权方案,本章节将会针对几种不同的烧录授权方式进行详细讲解. 烧录授权方案 使用 Zigbee SDK 开发完应用功能后,您需要将编 ...
- 涂鸦Zigbee SDK开发系列教程——1.创建产品
使用涂鸦模组进行产品开发主要有三种不同的方式: 零代码开发:涂鸦提供可视化功能配置界面,无需任何编程经验,只需在线配置好产品的功能,即可完成固件开发,快速完成产品智能化. MCU SDK开发:在 MC ...
- 涂鸦 Wi-Fi SDK开发系列教程——3. 快速上手
本系列课程面向有嵌入式开发经验的同学,用来介绍如何在涂鸦的Wi-Fi系列模组和Wi-Fi&Bluetooth LE系列模组上进行二次开发. 上篇回顾:Wi-Fi模组二次开发--SoC开发环境搭 ...
- 涂鸦蓝牙SDK开发系列教程——6.固件升级
涂鸦 IoT 平台提供 固件 OTA 升级 功能,以满足客户在产品发布后,仍可对已出货设备进行固件版本升级的需求,本节课将介绍不同开发方式下固件 OTA 升级的方法.涂鸦方案的 OTA 流程与交互协议 ...
- 涂鸦 Wi-Fi SDK开发系列教程——5.对模组二次开发
上期精彩回顾:Wi-Fi模组二次开发课程--4.烧录授权 本章节旨在通过一个简单Demo,使开发者能够了解涂鸦SDK的启动流程,带领开发者基于涂鸦提供的SDK对模组进行二次开发. Demo功能介绍:硬 ...
- 涂鸦蓝牙SDK开发系列教程——5.应用开发
在前几节课中已经介绍了如何在 涂鸦 IoT 平台 上创建智能产品以及如何搭建涂鸦蓝牙模组的开发环境,在此基础上,本节课将继续以 BTU 模组为例,介绍如何使用 涂鸦蓝牙模组及其 SDK 开发一款温湿度 ...
- 涂鸦 Wi-Fi SDK开发系列教程——4.烧录授权
在涂鸦IoT平台使用免开发方案配置完成,成功生成固件后:或使用自定义开发方案成功开发生成固件并上传到涂鸦IoT平台后.需要对模组进行烧录授权,那么如何对模组进行烧录授权?本章节将会详细的对几种不同的烧 ...
最新文章
- 怎么关闭wordpress评论
- Android Studio 快捷键
- 面试官:如何做 API 接口防刷??
- 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...
- cpp加密php,常用的数据加密规则算法(php包含MD5和RSA)
- ITK:从文件读取转换
- (转载)mysql 用drop和delete方法删除用户的区别
- 安卓反编译揭秘,伪加密APK文件如何被破坏
- 小程序swiper效果高宽设置(微信小程序交流群:604788754)
- Android系统生成jks签名
- 关于主机的思维导图_思维导图可以整理哪些东西?
- LDO分压电阻计算小工具
- Pthread多线程
- 第7章 - 多无人机系统的协同控制 --> 无人机飞行原理
- php从一个字符串中过滤掉英文,php过滤英文字符
- 如何在Hyper-V、Virtual PC等虚拟机中使用USB设备
- 周金涛:人生就是一次康波
- 续写千倍币神话,PlusFo到底是何方神圣?
- 谨慎使用 @MockBean注解
- 碧绿色房间(密室逃脱二)攻略