涂鸦Wi-Fi&BLE SoC开发幻彩灯带

视频开发

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-蓝牙”。
在这里插入图片描述

根据产品想要实现的功能,选择对应的功能点,选择完成后点击“确认”。
如果有些你需要的功能点在标准功能点里面没有,可以在标准功能点选择完成后,自定义你需要的功能点。(标准功能点可以在公版面板上很好的显示和操作。如果选择了自定义功能点,可能无法在面板上显示和操作)。
在这里插入图片描述

在设备交互中选择自己喜欢的APP界面,也可以自己进行定义。
在这里插入图片描述

点击“硬件开发”,选择“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):复位按键,按下后芯片复位。

原理图及PCB

涂鸦三明治 Wi-Fi&BLE SoC NANO 主控板(BK7231N)的原理图如下所示:
在这里插入图片描述

涂鸦三明治 Wi-Fi&BLE SoC NANO 主控板(BK7231N) 的 PCB 如下图,顶层:
在这里插入图片描述

底层:
在这里插入图片描述

Wi-Fi&BLE SoC NANO主控板(BK7231N)接口说明

涂鸦三明治 Wi-Fi&BLE NANO 主控板(BK7231N)内置 USB 转串口芯片,单路 USB 口可扩展出 2 个串口。可通过拨码开关(S1)切换模组的两路串口是否连接到 USB 转串口芯片上。拨码开关引脚说明如下表所示。

拨码开关序号1234
芯片引脚UART1_RXUART1_TXUART2_RXUART2_TX
USB芯片USB-TX0USB-RX0USB-TX1USB-RX1

拨码切到 ON 方向导通,通断 USB 转串口芯片的双串口和芯片串口之间的链路。
芯片 UART 引脚用于与MCU通信或普通 I/O 口使用时,需将相应的拨码位置拨到断开的位置,即数字字母方向。
电脑 COM 口与 USB 芯片串口和芯片 BK7231N 对应关系。
在这里插入图片描述

通常情况下A是用来下载程序用的,B是用来打印日志的

电脑 COM 口SERIAL-ASERIAL-B
USB芯片USB-UART0USB-UART1
BK7231NUART1UART2

烧录授权接线方式

在这里插入图片描述

将拨码开关(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 开发平台下载 SDK 进行验证

在涂鸦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定义

可以根据下面的提示填写产品的 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 种不同的烧录授权方式:
自定义开发烧录授权:适用于发布阶段,使用自定义开发方式创建的产品。
三明治开发板方式烧录授权:仅适用于涂鸦三明治开发板的烧录授权。
使用原厂工具烧录:适用于开发阶段。方案的特点是授权一次,重复烧录。

烧录准备工作

烧录授权所需工具如下:

  1. PMS 账号
  2. CBU Nano开发板或涂鸦WiFi模组+usb转UART串口工具
  3. 云模组烧录授权工具
  4. 原厂烧录工具

PMS 账号

PMS账号申请网址:https://pms.tuya.com/login
PMS是涂鸦智慧生产管理系统,一个轻量化的生产管理系统,助力中小微生产企业实现降本、提质、增效和减存,完成数字化转型。
登录涂鸦PMS系统。登录成功后,依次点击知识库管理->软件下载->生产解决方案开始下载「生产解决方案」。
在这里插入图片描述

安装过程中,程序安装的位置可以根据自身需求进行设置,建议不要有中文路径,避免出现一些意想不到的问题。
安装完成后,启动「生产解决方案」,登录的账号和密码与涂鸦PMS系统(涂鸦智造)的账号和密码一样。
由于是开发CBU Wi-Fi & Bluetooth 模组,故选择生产测试->云模组即可。
在这里插入图片描述

选择文件->设置,进行烧录设置,授权波特率最好设置在9600。

在这里插入图片描述

授权设置

点击产品->三明治开发板->绑定开发板进行绑定。
在这里插入图片描述

一般情况下,开发板背部都有一张标签,上面附带了ID和密码。
在这里插入图片描述

点击申请新的授权码,即可选择需要添加的产品。
在这里插入图片描述

使用云模组烧录授权平台烧录

设置完毕之后将授权码输入到生产凭证中,选择烧录模式。
在这里插入图片描述

点击运行,在对开发板进行复位就可以进行下载。
在这里插入图片描述

原厂工具烧录UA文件

使用该方法只能烧录应用区固件,无法给模组进行授权操作。可以使用该方法给已经授权过的模组进行烧录,避免每次更新代码生成固件后都要上传到涂鸦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中对模组进行添加。
一般情况下可以自动识别出来。
在这里插入图片描述

若没有识别,点击照明,灯带进行添加。
在这里插入图片描述

若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目前需要白名单授权,有需求的同仁可以扫码联系涂鸦工作人员开通白名单。
在这里插入图片描述

### 涂鸦WiFi HAL 实现与使用 #### 什么是涂鸦WiFi HAL? 硬件抽象层 (Hardware Abstraction Layer, HAL) 是一种软件接口,用于隐藏底层硬件的具体细节。对于涂鸦WiFi模块而言,HAL 提供了一组标准化函数来操作Wi-Fi芯片和其他外设[^1]。 #### 如何实现涂鸦WiFi HAL? 为了创建一个有效的涂鸦WiFi HAL库,开发者通常会遵循以下设计原则: - **封装复杂度**: 将复杂的寄存器级编程转换成易于使用的API调用。 - **跨平台兼容性**: 确保相同的代码可以在不同类型的微控制器上运行而无需修改。 - **性能优化**: 平衡资源消耗和执行效率之间的关系,在不影响功能的前提下尽可能减少内存占用并提高速度。 具体到涂鸦WiFi HAL 的实现中,这涉及到编写驱动程序以支持特定型号的Wi-Fi模组,并通过定义统一的数据结构和函数原型使这些特性对外部应用程序透明化[^2]。 #### 使用教程 当利用已有的涂鸦WiFi HAL 库开发项目时,一般按照如下流程进行集成: 安装依赖项之后加载预编译好的固件镜像文件至目标设备;初始化网络连接参数配置(SSID/Password等),并通过相应的API完成无线接入点的选择以及身份验证过程;最后根据实际需求发送HTTP请求获取远程服务器上的数据或将本地传感器采集的信息上传云端存储服务端口[^3]. ```c #include "tuya_hal_wifi.h" void setup() { tuya_hal_wifi_init(); // 初始化 Wi-Fi 功能 } void loop() { if (!tuya_hal_wifi_is_connected()) { tuya_hal_wifi_connect("your_ssid", "your_password"); // 连接到指定 SSID 和密码的 WiFi 网络 } } ``` 上述C语言片段展示了如何设置并维持稳定的互联网链接状态。这里假设已经包含了必要的头文件 `tuya_hal_wifi.h` ,其中声明了所有关于Wi-Fi管理的方法签名[^4]。 #### 示例代码 下面给出一段完整的Arduino风格示例代码,它实现了自动重连机制下的Web客户端行为模式: ```cpp // 定义全局变量保存当前尝试次数 int retryCount = 0; void connectToWifi(){ Serial.print("Connecting to "); Serial.println(ssid); /* 开始连接 */ WiFi.begin(ssid,password); while(WiFi.status()!= WL_CONNECTED){ delay(500); Serial.print("."); // 如果超过最大重试次数则重启ESP8266 if(retryCount++ >= MAX_RETRIES){ ESP.restart(); } } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN,HIGH); // 调用自定义函数建立TCP/IP栈 connectToWifi(); } void loop() { HTTPClient http; String serverPath="http://example.com"; if((http.get(serverPath)).startsWith("HTTP/1.")){ int statusCode=http.responseStatusCode(); if(statusCode==200){ String payload=http.getString(); Serial.println(payload); }else{ Serial.printf("[HTTP] GET... failed, error:%s\n",http.errorToString(httpCode).c_str()); } } http.end(); delay(10*1000); // 每隔十秒发起一次新的GET请求 } ``` 这段代码不仅完成了基本的联网任务,还加入了错误处理逻辑确保即使在网络条件不佳的情况下也能保持稳定的工作表现[^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记帖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值