聚丰项目 > 基于RT thread的蓝牙LED调色小夜灯
使用蓝牙控制全彩LED小夜灯,设定色温、开启时长。后续可增加环境数据监测、时间设定、人体感应等扩展功能,再使用手机进行配置。增加小夜灯的物联网属性及功能,实现小物品的智能化,在生活细节处体现科技生活的舒适性。此设计属于原型,仅提供基础功能,更多拓展需要进一步讨论、设计、开发等等。
tashuiqingming
分享tashuiqingming
团队成员
tashuiqingming 嵌入式软件工程师
RT-Thread使用情况概述:
硬件方案:串口蓝牙、板级LED。采用常规的串口蓝牙从模块JDY-33,连接即透传数据,不需要进行额外操作。
内核部分:使用了线程、信号量、定时器 、PWM
设备驱动:
GPIO/PWM/UART 等
MCU通过串口与蓝牙连接,等待设备上线,解析蓝牙回传数据,设定RGB的PWM占空比,设定定时器工作周期。以实现蓝牙控制LED调色、定时工作等基础功能。
软件部分主要涉及两方面:1.串口数据接收。使用软件超时功能,判断一帧数据接收完成,发送接收完成信号量,线程进行数据解析,动作执行。
2.全彩LED的指令打开,超时关闭,指令关闭。三种状态设置情况。
软件命令:
动作 | CMD1/0 | 持续时间 | R | G | B | 备注 |
开 | CMD1 | uint32_t类型数值(1ms) | 0-255 | 0-255 | 0-255 | 间隔符“,” |
关 | CMD0 | —— | —— | —— | —— | —— |
例:
CMD1,1000,122,45,85 打开,持续时间1000ms,RGB数值分别为122、45、85
CMD0 关闭
代码地址:
https://gitee.com/ZhuPengFly/buletooth_rgbled.git
备注:AB32开发板,LPWM互斥输出,板级全彩LED的RGB,其中GB两个IO口连接到LPWM上,故不能实现GB的PWM调色,故实际只对R进行了调色。(PS:互斥这个说法非AB32官方给出,仅个人网上资料查阅所得。若有偏差,欢迎纠正,若有冒犯,敬请谅解)
电脑连接蓝牙,将提供虚拟蓝牙串口,使用串口调试工具,发送指令,如下图:
发送CMD1指令。持续时间20s。MCU调试串口输出信息,同时LED打开,时间戳:23:55:55
MCU调试串口输出信息,同时LED关闭,时间戳:23:56:15。持续时间20s,与CMD1设定时间相符
发送CMD0指令。MCU调试串口输出信息,同时LED关闭