https://www.bilibili.com/video/BV1k34y1p76m
涂鸦Wi-Fi&BLE SoC开发幻彩灯带
随着物联网应用技术的发展,人们的生活融入着越来越多网络化、数字化的行为方式。物联网应用技术的一个重要分支便是智能家居,这一分支对于改善人们的生活水平至关重要。近些年来,消费者对家居的舒适性、便捷性有了一定的要求。针对现阶段己有的智能家居系统成本高、功耗大、集成度低等缺陷,分析并选取合适的平台、传感器和无线组网方式,设计了一款成本低、功耗低、集成度高的智能家居系统,该系统具有较好的应用和参考价值。
本系统采用涂鸦智能涂鸦模组二次开发版本,综合涂鸦Wi-Fi&BLE通信组网技术,以及传感器的应用技术,实现家居环境的智能联网,下图为涂鸦智能的Wi-Fi&BLE SoC NANO主控板(BK7231N)。
本章节介绍涂鸦模组二次开发方案项目流程,涂鸦IoT平台为客户提供一站式物联网解决方案,涵盖设备智能化、云服务、App 软件开发、运营维护等各方面,助力各行业客户实现研发端、生产端、销售端、运营端全产业互联网化。
当您确定好产品需求后,需要将产品具体化到IoT平台上,便于您管理产品并拥有产品运营能力。
涂鸦模组二次开发方案开发周期短、成本低,您在IoT工作台上配置完成后,模块即会携带完整的控制程序,免去外置MCU及繁琐的程序开发,助您快速实现产品智能化,创建项目,标准类目选择“照明”,选择“幻彩灯带”。
选择开发方案,根据下图指示选择“自定义方案”,这里我们是对涂鸦模组进行二次开发,所以选择“自定义方案”。
按照自己将要开发的产品和模组填写产品名称,选择对应的通信协议,配置完成后点击“创建产品”。
这里准备使用CBU模组开发一个可以幻彩灯带的产品。CBU模组是一款Wi-Fi&Bluetooth LE双模模组,选择的通信协议是“WiFi-蓝牙”。
根据产品想要实现的功能,选择对应的功能点,选择完成后点击“确认”。
如果有些你需要的功能点在标准功能点里面没有,可以在标准功能点选择完成后,自定义你需要的功能点。(标准功能点可以在公版面板上很好的显示和操作。如果选择了自定义功能点,可能无法在面板上显示和操作)。
点击“硬件开发”,选择“TuyaOS”,选择“CBU Wi-Fi&Bluetooth 模组”(如果你使用的是其他模组,选择对应的模组即可)。
箭头①指向的“新增自定义固件”是指上传你已经开发好的产品固件(如何开发将会在后面的内容进行讲解)。
点击箭头②指向的“ty_iot_light_app_sdk_bk7231n”下载该模组的SDK。
涂鸦三明治 Wi-Fi&BLE SoC NANO主控板(BK7231N)采用上海博通开发的高性价比的 Wi-Fi &BLE 双模芯片 BK7231N。开发板包含 Wi-Fi 芯片BK7231N、按键、LED 指示灯、 I/O 接口、电源和USB转串口芯片等。
I/O 口及各接口功能定义如下所示:
1:MICROUSB(CN1) :即是 5V DC 输入口,也扩展了 2 个串口功能。
2:拨码开关(S1): 拨码切到 ON 方向导通,通断 USB 转串口芯片的双串口和芯片串口之间的链路。
3: 指示灯(D3):3.3V 电源指示灯。
4:按键(S2):通过 P9 检测,初始化高电平,按下为低电平。
5:指示灯(D2):通过 P16 控制,低电平点亮。
6:按键(RST):复位按键,按下后芯片复位。
涂鸦三明治 Wi-Fi&BLE SoC NANO 主控板(BK7231N)的原理图如下所示:
涂鸦三明治 Wi-Fi&BLE SoC NANO 主控板(BK7231N) 的 PCB 如下图,顶层:
涂鸦三明治 Wi-Fi&BLE NANO 主控板(BK7231N)内置 USB 转串口芯片,单路 USB 口可扩展出 2 个串口。可通过拨码开关(S1)切换模组的两路串口是否连接到 USB 转串口芯片上。拨码开关引脚说明如下表所示。
拨码开关序号 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
芯片引脚 | UART1_RX | UART1_TX | UART2_RX | UART2_TX |
USB芯片 | USB-TX0 | USB-RX0 | USB-TX1 | USB-RX1 |
拨码切到 ON 方向导通,通断 USB 转串口芯片的双串口和芯片串口之间的链路。
芯片 UART 引脚用于与MCU通信或普通 I/O 口使用时,需将相应的拨码位置拨到断开的位置,即数字字母方向。
电脑 COM 口与 USB 芯片串口和芯片 BK7231N 对应关系。
通常情况下A是用来下载程序用的,B是用来打印日志的
电脑 COM 口 | SERIAL-A | SERIAL-B |
---|---|---|
USB芯片 | USB-UART0 | USB-UART1 |
BK7231N | UART1 | UART2 |
将拨码开关(S2)的 1、2 路都拨至 ON 方向,BK7231N 的串口 UART1 与上位机链路导通。
注意:若出现“获取RF标志位失败”的情况,可在授权阶段,将串口2的RXD引脚(P01引脚)和GND短接。
环境搭建请参考涂鸦智能配置说明:
https://developer.tuya.com/cn/docs/iot/Module-SDK-development_tutorial?id=Kauqptzv5yo8a
在涂鸦IoT 开发平台上成功创建自定义开发的产品后,在硬件开发中选择 TuyaOS,即可下载该模组的 SDK。此前需联系涂鸦工作人员开通白名单授权,联系方式放在文末。
将下载好的 SDK 复制到 Windows 和 Ubuntu 的共享文件夹中,在 Ubuntu 虚拟机中输入下列命令进行编译:
cd /home/share/samba/
tar -xzvf *.tar.gz #注意:该命令会将当前目录下所有后缀名为.tar.gz的文件进行解压,建议将*.tar.gz改为你实际要解压的文件的完整名字
cd ty_iot_light_app_sdk_bk7231n_0.1.1
sh build_app.sh ./apps/xh0623_demo_pixel_light_ty xh0623_demo_pixel_light_ty 1.0.0
在开始开发前,需要了解 SDK 的初始化流程。这里需要重点关注四个函数pre_app_init()、pre_device_init()、app_init()和device_init()。启动流程如下图所示。
可以根据下面的提示填写产品的 PID 信息,也可以不对代码进行任何更改,跳过该步骤直接进入下一步编译生成固件。
将apps下的include/light_system目录下的light_system.h中的PRODUCT_KEY修改为您创建得到的 PID,FIRMWARE_KEY是固件key,可以填NULL。
在/home/share/samba/ty_iot_light_app_sdk_bk7231n_0.1.1/app/xh0623_demo_pixel_light_ty/include/src/light_system/light_init.c中可以进行修改。
在/home/share/samba/ty_iot_light_app_sdk_bk7231n_0.1.1/app/xh0623_demo_pixel_light_ty/include/src/light_upload/light_upload.c中可以进行修改,其中DPID_LED_NUM是灯珠数量,DPID_LED_LENGTH是灯带长度,单位为厘米。
在 Ubuntu 终端中将路径切换到有 build_app.sh 的路径下,输入下列命令进行编译。
例:我这里处于home/share/samba/ty_iot_light_app_sdk_bk7231n_0.1.1路径下,开始执行下列命令。
sh build_app.sh ./apps/xh0623_demo_pixel_light_ty xh0623_demo_pixel_light_ty 1.0.0
命令 | 含义 |
---|---|
sh build_app.sh | 命令执行 build_app.sh 脚本。 |
./apps/tuya_demo_light_pwm | 编译的工程所在的路径。 |
tuya_demo_light_pwm | 固件名称,固件标识名,必须要和工程文件夹名称一致。 |
1.0.0 | 软件版本号。 |
编译完成后,将生成的固件按照不同版本放在所编译的工程目录 output 文件夹内。
例:如果我们编译的是 apps 文件夹中的 xh0623_demo_pixel_light_ty工程,编译版本为1.0.0,那么生成的固件将会放在 apps/xh0623_demo_pixel_light_ty/output/1.0.0 中。
编译后的产物如上图所示,这里主要关注的xh0623_demo_pixel_light_ty_QIO_1.0.0.bin、xh0623_demo_pixel_light_ty_UA_1.0.0.bin和xh0623_demo_pixel_light_ty_UG_1.0.0.bin这三个文件。
文件名 | 功能 |
---|---|
xh_bk7231n_light1_io_xx_QIO_1.0.0.bin | 生产区固件:boot+用户区固件+检测固件。 |
xh_bk7231n_light1_io_xx_UA_1.0.0.bin | 用户区固件 |
xh_bk7231n_light1_io_xx_UG_1.0.0.bin | 升级固件 |
自定义开发固件如果不上传到云平台,直接将 UA 文件烧录到已授权的模组中,会导致配网一直无法成功。
进入涂鸦 IoT 平台,在开发的产品中找到“硬件开发”,按照下图指示点击“新增自定义固件”,填写相关固件信息。
“固件标识名”必须和您编译时的 apps 下的工程文件夹的名称一致。
如果固件标识名填写为 wifi_one_light,上传的固件应为 SDK 包中 apps 目录下的 wifi_one_light 文件夹中编译所生成的固件。
“Flash 大小”为 16Mbit 也就是 2M 大小。不同模组的 flash 大小可以在涂鸦文档中心 中查看相关模组的 flash 大小。
1byte(字节) = 8bit(位)。 16Mbit / 8 = 2M。
相关信息填写完成后(没有被②的框框圈到使用默认设置即可),点击“上传固件”,进入“上传固件“步骤。
“固件版本”需要和编译时输入的版本号对应一致。“生产固件”上传包含 QIO 的 bin 文件,“用户区”上传包含 UA的bin 文件,“升级固件”上传包含 UG 的 bin 文件。运行模式选择 QIO。点击保存。
注意:该顺序不一定固定,在后续固件管理中就不是按照“生产固件”,“用户区固件”和“升级固件”的顺序来排序,所以一定要看清楚是什么类型的固件在进行上传。
选择“不限范围”,点击“确认上架”。
注意:这里选择不限范围是为了方便个人开发。如果是公司将要量产的产品,请严格限定固件的使用范围。
通过涂鸦 IoT 开发平台涂鸦模组二次开发方案成功生成固件,或使用自定义开发方案生成固件并上传到涂鸦 IoT 开发平台后,下一步需要对模组进行烧录授权。
本文将详细讲解 3 种不同的烧录授权方式:
自定义开发烧录授权:适用于发布阶段,使用自定义开发方式创建的产品。
三明治开发板方式烧录授权:仅适用于涂鸦三明治开发板的烧录授权。
使用原厂工具烧录:适用于开发阶段。方案的特点是授权一次,重复烧录。
烧录授权所需工具如下:
PMS账号申请网址:https://pms.tuya.com/login
PMS是涂鸦智慧生产管理系统,一个轻量化的生产管理系统,助力中小微生产企业实现降本、提质、增效和减存,完成数字化转型。
登录涂鸦PMS系统。登录成功后,依次点击知识库管理->软件下载->生产解决方案开始下载「生产解决方案」。
安装过程中,程序安装的位置可以根据自身需求进行设置,建议不要有中文路径,避免出现一些意想不到的问题。
安装完成后,启动「生产解决方案」,登录的账号和密码与涂鸦PMS系统(涂鸦智造)的账号和密码一样。
由于是开发CBU Wi-Fi & Bluetooth 模组,故选择生产测试->云模组即可。
选择文件->设置,进行烧录设置,授权波特率最好设置在9600。
使用该方法只能烧录应用区固件,无法给模组进行授权操作。可以使用该方法给已经授权过的模组进行烧录,避免每次更新代码生成固件后都要上传到涂鸦loT平台使用「云模组烧录授权平台」工具进行烧录授权。
下降链接如下:https://images.tuyacn.com/smart/shiliu_zone/SOC_Develop/tools/bk_writer_gui_V1.6.3.rar
使用此方法只能烧录应用区固件,无法给模组进行授权操作。可以使用该方法给已经授权过的模组进行烧录,避免每次更新代码生成固件后都要上传到涂鸦 IoT 开发平台使用云模组工具进行烧录授权。
按照下图步骤,在箭头 ① 所指向的烧录对象中,根据实际烧录的模组选择对应的芯片型号,可在文档中心查看相关模组规格书,确认模组使用的芯片型号。
单击箭头 ② 指向的浏览按钮,选择成功编译生成的包含了 UA 字样的 bin 文件(该文件就是应用区固件,这里选择的固件就是wifi_one_light)。
在箭头 ③ 和箭头 ④ 指向的起始地址中填入0x00011000,操作长度中填入0x00119000。
在箭头 ⑤ 指向的位置选择正确的烧录串口,将箭头 ⑥ 指向的通讯波特率调整为最高,可以加快烧录速度。
单击箭头 ⑦ 指向的烧录,给模组通断电或复位模组使模组重启,开始烧录。烧录完成后,更改后的代码就成功烧录到模组中。你可以不再使用云模组工具对该模组再次进行授权操作。
烧录设置如下所示。
可以在涂鸦手机APP中对模组进行添加。
一般情况下可以自动识别出来。
若APP无法搜索到模组,需要对模组进行重置,查看原理图可以知道P9管脚对应用户按键。
查看/home/share/samba/ty_iot_light_app_sdk_bk7231n_0.1.1/app/xh0623_demo_pixel_light_ty/include/src/light_button/light_button_init.c下有个按键配置代码,可以看到对按键点击4次可以进入复位模式。
用户可以根据自己的喜好给灯带进行设置,配置为自己喜欢的颜色组合,例如配置为蓝绿红。
音乐律动分为本地模式和APP模式,在本地模式下有摇滚、爵士、古典、滚动、能量、频频。
以爵士为例,设置之后可以选择灵敏度来改变灯带频率。
在APP模式下,灯光根据手机麦克风采集到的音乐随之律动。
如设置为音乐律动,显示如下所示。
用户可以给幻彩灯带进行设置,指定打开时间。
同时也可以定义灯带的长度。
这款SDK目前需要白名单授权,有需求的同仁可以扫码联系涂鸦工作人员开通白名单。