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