在涂鸦 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.快速入门相关推荐

  1. 涂鸦蓝牙SDK开发系列教程——1.快速入门

    本系列课程将介绍如何使用 涂鸦蓝牙模组及其 SDK 进行产品开发,帮助开发者更快掌握 涂鸦蓝牙模组.涂鸦蓝牙 SDK.涂鸦 IoT 平台.涂鸦三明治开发套件.涂鸦云模组烧录授权平台 等开发工具的使用方 ...

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

    本章节主要介绍如何搭建涂鸦 Zigbee ZSU 模组 SDK 开发环境. IAR安装 前往 IAR 官网下载 IAR Embedded Workbench IDE(IAR for Arm),下载安装 ...

  3. 涂鸦Zigbee SDK开发系列教程——4.烧录授权

    上一章节中简述了烧录授权方案大致流程,针对不同开发方案对应了不同烧录授权方案,本章节将会针对几种不同的烧录授权方式进行详细讲解. 烧录授权方案 使用 Zigbee SDK 开发完应用功能后,您需要将编 ...

  4. 涂鸦Zigbee SDK开发系列教程——1.创建产品

    使用涂鸦模组进行产品开发主要有三种不同的方式: 零代码开发:涂鸦提供可视化功能配置界面,无需任何编程经验,只需在线配置好产品的功能,即可完成固件开发,快速完成产品智能化. MCU SDK开发:在 MC ...

  5. 涂鸦 Wi-Fi SDK开发系列教程——3. 快速上手

    本系列课程面向有嵌入式开发经验的同学,用来介绍如何在涂鸦的Wi-Fi系列模组和Wi-Fi&Bluetooth LE系列模组上进行二次开发. 上篇回顾:Wi-Fi模组二次开发--SoC开发环境搭 ...

  6. 涂鸦蓝牙SDK开发系列教程——6.固件升级

    涂鸦 IoT 平台提供 固件 OTA 升级 功能,以满足客户在产品发布后,仍可对已出货设备进行固件版本升级的需求,本节课将介绍不同开发方式下固件 OTA 升级的方法.涂鸦方案的 OTA 流程与交互协议 ...

  7. 涂鸦 Wi-Fi SDK开发系列教程——5.对模组二次开发

    上期精彩回顾:Wi-Fi模组二次开发课程--4.烧录授权 本章节旨在通过一个简单Demo,使开发者能够了解涂鸦SDK的启动流程,带领开发者基于涂鸦提供的SDK对模组进行二次开发. Demo功能介绍:硬 ...

  8. 涂鸦蓝牙SDK开发系列教程——5.应用开发

    在前几节课中已经介绍了如何在 涂鸦 IoT 平台 上创建智能产品以及如何搭建涂鸦蓝牙模组的开发环境,在此基础上,本节课将继续以 BTU 模组为例,介绍如何使用 涂鸦蓝牙模组及其 SDK 开发一款温湿度 ...

  9. 涂鸦 Wi-Fi SDK开发系列教程——4.烧录授权

    在涂鸦IoT平台使用免开发方案配置完成,成功生成固件后:或使用自定义开发方案成功开发生成固件并上传到涂鸦IoT平台后.需要对模组进行烧录授权,那么如何对模组进行烧录授权?本章节将会详细的对几种不同的烧 ...

最新文章

  1. 怎么关闭wordpress评论
  2. Android Studio 快捷键
  3. 面试官:如何做 API 接口防刷??
  4. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...
  5. cpp加密php,常用的数据加密规则算法(php包含MD5和RSA)
  6. ITK:从文件读取转换
  7. (转载)mysql 用drop和delete方法删除用户的区别
  8. 安卓反编译揭秘,伪加密APK文件如何被破坏
  9. 小程序swiper效果高宽设置(微信小程序交流群:604788754)
  10. Android系统生成jks签名
  11. 关于主机的思维导图_思维导图可以整理哪些东西?
  12. LDO分压电阻计算小工具
  13. Pthread多线程
  14. 第7章 - 多无人机系统的协同控制 --> 无人机飞行原理
  15. php从一个字符串中过滤掉英文,php过滤英文字符
  16. 如何在Hyper-V、Virtual PC等虚拟机中使用USB设备
  17. 周金涛:人生就是一次康波
  18. 续写千倍币神话,PlusFo到底是何方神圣?
  19. 谨慎使用 @MockBean注解
  20. 碧绿色房间(密室逃脱二)攻略

热门文章

  1. 电子计算器的RoHS检测
  2. 默安科技入选2021年网络安全优秀企业“云安全十强”
  3. 01Excel数据格式
  4. 数据字典(一级字典,二级字典)
  5. 同一栋办公楼连接的计算机网络是,在同一栋办公楼连接的计算机网络是(  )...
  6. BZOJ 2938: [Poi2000]病毒 ACAM
  7. 输入值/表单提交参数过滤,防止sql注入或非法攻击的方法
  8. 边缘计算与云边端协同网络的融合与挑战
  9. Mac 设置快速锁屏的方式
  10. 开始的开始——努力坚持