山東省招遠第一中學牟曉東
上期我們實現了掌控板和樹莓派的基礎通信。今天仍是使用rnPython x和古德微機器人進行“積木”編程,通過MOTT進行主題的發送、傳輸與接收,開發一個可以同時使用手機微信和樹莓派來遠程控制掌控板的物聯網應用項目——根據手機命令,掌控板會做出RGB燈發光、OLED顯示屏輸出歡迎信息以及播放音樂等響應,當然也可以遠控取消對應的動作響應。
運行mPython x,首先設置好Wi-Fi網絡連接:然后設置MOTT模塊的相關信息:“clientjd”:“luke007”,“server”:“www gdwrobot top”,“user”和“password”保持為空,“keepalive”保持默認的“30”不變,添加“連接MOTT”模塊:接著,控制掌控板的OLED顯示屏在第一行輸出提示信息:“MOTT連接成功!”(如圖1)。

建立“一直重復執行”循環結構,其中只放置一個“等待主題消息以‘阻塞模式”語句模塊(從“物聯網”—“MOTT”中選擇).作用是使掌控板處于消息監聽狀態,準備接收手機微信或樹莓派遠程發送過來的指令。“阻塞”模式是指調用結果返回之前,當前線程會被掛起,只有在得到結果之后才會繼續。
接下來是三個“當從主題……接收到……時”循環結構,以第一個控制掌控板三支RGB燈為例:它所對應的監聽主題是‘‘luke007/RGB”,其中的“luke007”是樹莓派設備賬號,而“RGB”則是自定義的主題名稱;然后通過“如果……執行……”和“否則如果……執行…”雙分支選擇結構,判斷消息“_msg”的值是“ON”還是“OFF”,“ON”對應的響應動作是控制RGB燈全部發紅光,“OFF”對應的則是關閉RGB燈。
第二個控制OLED顯示屏的主題名稱是“OLED”,“_msg”消息值為“ON”和“OFF”對應的響應動作分別是在第二行顯示“你好,樹莓派!”和關閉OLED顯示屏:第三個控制蜂鳴器的主題名稱是“M Lisic”,“msg”消息值為“ON”和“OFF”對應的響應動作分別是播放掌控板內置音樂BIRTHDAY(《生日快樂》旋律)和停止音樂播放(如圖2)。

在古德微機器人網站登錄賬號luke007,點擊左側的“控件控制”,保持默認的“服務器地址”(wss://www.gdwrobot.top)和“端口號”(8084)不變,點擊后面的“測試連接”按鈕出現“連接成功”提示后,再點擊“添加控件”按鈕,彈出“添加控件信息”窗口,進行第一個按鈕信息的添加:
控件類型:“按鈕”,設備編號:“luke007”,功能描述:“掌控板RGB燈”:自定義主題:“RGB”,這個主題名稱必須要與上一步在mPython x中為掌控板編程所設置的完全一致,作用是控制RGB燈,點擊“確定”按鈕(如圖3)。

再次點擊“添加控件”按鈕添加另外兩個控件,均是按鈕類型,功能描述的作用是顯示提示,分別設置為“掌控板OLED屏”和“掌控板音樂”:自定義主題是唯一的,分別設置為“OLED”和“Music”,這個也是要與mPython x中設置的完全一致。三個主題默認發送消息的內容是“ON”或“OFF”,同樣也是與掌控板接收端的mPython x編程設置都保持一致,這樣才能保障通信雙方進行數據的正確發送與接收。完成三個按鈕控件的添加設置后,在“應用名稱”處輸入“樹莓派控制掌控板”后,點擊下方的“保存”按鈕,將該項目內容保存至賬號中(如圖4)。

點擊右下角的“生成新的網頁”按鈕,瀏覽器就會彈出一個簡易網頁(地址欄處顯示有“樹莓派控制掌控板”的標題),內容分別是“掌控板RGB燈:”“掌控板OLED屏:”和“掌控板音樂:”,下方各自對應有“開”和“關”兩個按鈕:如果再點擊下方的“分享”按鈕,就會彈出一個“微信掃一掃”二維碼,當打開手機微信端的“掃一掃”并對準該二維碼時,手機微信就會彈出“樹莓派控制掌控板”頁面,內容與網頁一致:三組控件、三對“開”“關”按鈕(如圖5)。

將掌控板通過數據線連接至運行mPyrhon x的電腦USB接口,登錄賬號后再點擊“刷入運行”按鈕,將之前編寫的程序代碼寫入掌控板(“刷入成功”)。

掌控板OLED顯示屏第一行會先顯示“MOTT連接成功!”的提示信息,處于消息監聽狀態:然后給樹莓派通電、啟動操作系統,在古德微機器人平臺點擊“連接設備”,到之前的瀏覽器或手機微信的“樹莓派控制掌控板”,嘗試點擊各“開”“關”按鈕進行測試:第一組“掌控板RGB燈”的開關可遠控掌控板三個RGB亮紅燈和關閉,第二組“掌控板OLED屏”的開關可遠控掌控板的OLED顯示屏第二行顯示“你好,樹莓派!”和關閉,第三組“掌控板音樂”的開關可遠控掌控板的蜂鳴器播放“Happy Birthday”音樂旋律和關閉(如圖6)。本程序源代碼請掃描二維碼下載。