聚豐項目 > 基于RT thread的藍(lán)牙LED調(diào)色小夜燈
使用藍(lán)牙控制全彩LED小夜燈,設(shè)定色溫、開啟時長。后續(xù)可增加環(huán)境數(shù)據(jù)監(jiān)測、時間設(shè)定、人體感應(yīng)等擴(kuò)展功能,再使用手機(jī)進(jìn)行配置。增加小夜燈的物聯(lián)網(wǎng)屬性及功能,實現(xiàn)小物品的智能化,在生活細(xì)節(jié)處體現(xiàn)科技生活的舒適性。此設(shè)計屬于原型,僅提供基礎(chǔ)功能,更多拓展需要進(jìn)一步討論、設(shè)計、開發(fā)等等。
tashuiqingming
tashuiqingming
團(tuán)隊成員
tashuiqingming 嵌入式軟件工程師
RT-Thread使用情況概述:
硬件方案:串口藍(lán)牙、板級LED。采用常規(guī)的串口藍(lán)牙從模塊JDY-33,連接即透傳數(shù)據(jù),不需要進(jìn)行額外操作。
內(nèi)核部分:使用了線程、信號量、定時器 、PWM
設(shè)備驅(qū)動:
GPIO/PWM/UART 等
MCU通過串口與藍(lán)牙連接,等待設(shè)備上線,解析藍(lán)牙回傳數(shù)據(jù),設(shè)定RGB的PWM占空比,設(shè)定定時器工作周期。以實現(xiàn)藍(lán)牙控制LED調(diào)色、定時工作等基礎(chǔ)功能。
軟件部分主要涉及兩方面:1.串口數(shù)據(jù)接收。使用軟件超時功能,判斷一幀數(shù)據(jù)接收完成,發(fā)送接收完成信號量,線程進(jìn)行數(shù)據(jù)解析,動作執(zhí)行。
2.全彩LED的指令打開,超時關(guān)閉,指令關(guān)閉。三種狀態(tài)設(shè)置情況。
軟件命令:
動作 | CMD1/0 | 持續(xù)時間 | R | G | B | 備注 |
開 | CMD1 | uint32_t類型數(shù)值(1ms) | 0-255 | 0-255 | 0-255 | 間隔符“,” |
關(guān) | CMD0 | —— | —— | —— | —— | —— |
例:
CMD1,1000,122,45,85 打開,持續(xù)時間1000ms,RGB數(shù)值分別為122、45、85
CMD0 關(guān)閉
代碼地址:
https://gitee.com/ZhuPengFly/buletooth_rgbled.git
備注:AB32開發(fā)板,LPWM互斥輸出,板級全彩LED的RGB,其中GB兩個IO口連接到LPWM上,故不能實現(xiàn)GB的PWM調(diào)色,故實際只對R進(jìn)行了調(diào)色。(PS:互斥這個說法非AB32官方給出,僅個人網(wǎng)上資料查閱所得。若有偏差,歡迎糾正,若有冒犯,敬請諒解)
電腦連接藍(lán)牙,將提供虛擬藍(lán)牙串口,使用串口調(diào)試工具,發(fā)送指令,如下圖:
發(fā)送CMD1指令。持續(xù)時間20s。MCU調(diào)試串口輸出信息,同時LED打開,時間戳:23:55:55
MCU調(diào)試串口輸出信息,同時LED關(guān)閉,時間戳:23:56:15。持續(xù)時間20s,與CMD1設(shè)定時間相符
發(fā)送CMD0指令。MCU調(diào)試串口輸出信息,同時LED關(guān)閉