聚豐項目 > 基于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關閉