涂鸦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 模组规格书

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

软件

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引脚模组引脚
VCCVCC
GNDGND
SWCLKSCK
SWDIOSDO
RESETRST
USB转串口模组引脚
3.3V3V3
GNDGND
RXDRXD
TXDTXD

输入生产凭证

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

  • 选择端口号(与烧录设备相连的端口),信道选择 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 接口示例

涂鸦Zigbee SDK开发系列教程——2.环境搭建

涂鸦Zigbee SDK开发系列教程——5.应用开发

涂鸦Zigbee SDK开发系列教程——5.应用开发

涂鸦Zigbee SDK开发系列教程——6.SDK API函数接口介绍

涂鸦Zigbee SDK开发系列教程——6.SDK API函数接口介绍