免費包郵開發板贈送!安信可藍牙5.2低功耗開發板免費申請啦_嗶哩嗶哩_bilibiliwww.bilibili.com/video/BV1UgSiY1EP9/?spm_id_from=333.999.0.0&vd_source=54c5db21948db2378659b7e8e42bafbf
安信可技術論壇官方B站賬號來啦
提前關注不迷路
在這里優先預告各類活動、教程
以下作品由安信可社區用戶
業余菜狗制作
大家是不是經常看到各種彩色的小燈
bingbing的五顏六色很吸引人
今天用WB2開發板做了一個能加入HA的全彩LED小夜燈
來看看主要的教程
連接WiFi
先對Ai-Thinker-WB2/applications/protocols/mqtt/tcp/例程進行編譯,編譯成功后,燒錄到板子上面去。
上電之后先確認板子有沒有連上WiFi,這個在路由器后臺可以看到,之后在mqtt服務器后天查看WB2是不是有連接上MQTT服務器,沒連上!為啥?哦~~~忘了改代碼里面的MQTT服務器IP了。(這里服務器地址不包含"mqtt://"的前綴,只是純IP地址)
再次編譯上傳,從mqtt服務器后臺可以看到WB2連上mqtt服務器了。
這里用的是emqx的開源服務器,可以在服務器里面看到有訂閱一個主題,嘗試向這個主題發送一個信息,然后用調試器看WB2輸出。
這里順帶一提默認波特率是115200,燒錄器默認的波特率是2000000,要改。
從WB2串口輸出,發現WB2收到的mqtt是在一個看不懂的函數里面執行的,里面執行的代碼就是把收到的主題和信息打印出來.順帶把訂閱和發送的函數也找到了。
遠程點亮LED
那就在處理信息這里改,改成判斷收到的信息是不是"ON"或者"OFF",如果是,那就開啟或關閉LED(這里的判斷,出了很多問題,在妖哥個幫助下,抄了一個arduino的代碼才成功判斷)。
因為要LED亮起來,程式到這里也就加上了Ai-Thinker-WB2/applications/get-started/blink/里面的閃燈代碼。
加上pwm調整亮度
光亮起來,明顯是不夠的,明顯還需要加上一個pwm程式來調節LED的亮度,這里就把blink里面的代碼刪除,換成Ai-Thinker-WB2/applications/peripherals/demo_pwm/里面的代碼,這里面的代碼正好是控制那個板載LED的RGB.不過我嫌pwm的代碼太繁瑣,就給它封裝了一個RGB.h庫丟那里讓我引用就可以了,庫里面就一個函數:RGB(R,G, B, BL),這個函數有4個參數,分辨是顏色參數的RGB的值和亮度值。
但是新的問題來了,mqtt收到的信息是字符串,但是RGB需要的參數是數值,比如收到的信息是"255,0,0",需要分割成255,0,0三個數值。
我在網上找了一大圈,最后用了個笨方法把收到的信息進行歷遍分解,這樣代碼就很長很不好看,不過后面在群友的幫助下,用了個函數分解出來了。
到現在為止,已經可以用mqtt方式無線控制LED的顏色、亮度和開關了。
不過這樣還是有個問題,就是在斷電重新上電之后LED的顏色、亮度和開關狀態都會被重置,需要有個地方儲存這些參數。
存儲數據到flash
在WB2上電后還沒有連上WiFi和mqtt服務器的這段時間,沒有接收到參數,不會亮的。
所以需要把數據存在WB2上,然后就找到了Ai-Thinker-WB2/applications/storage/easyflash/這個demo,把這個demo改一下也加入到我們的代碼中來。
然后設定程式,在啟動的時候從WB2flash中讀取出數據,在去連接WiFi和mqtt,也需要在每次收到命令時將數據存到flash里面。
總結
制作過程的全過程大致就是這樣了,總結一下代碼流程:
上電--->讀取flash--->點亮LED--->連接WiFi和mqtt--->訂閱設置主題--->處理收到信息--->更新LED狀態--->上傳LED狀態--->保存LED狀態到flash
看看演示效果:
玩過HA的都知道設備一旦加入了HA,那么它就具有巨大的可玩性,即使只是一個LED。
這是亮度調節
這是顏色調節
可以直接輸入參數
審核編輯 黃宇
-
led
+關注
關注
242文章
23277瀏覽量
660846 -
開發板
+關注
關注
25文章
5050瀏覽量
97456 -
wifi模塊
+關注
關注
60文章
380瀏覽量
73495
發布評論請先 登錄
相關推薦
評論