史澤輝
上期我們利用古德微機器人圖形化編程平臺實現了買菜車的遠程遙控,但實際上路測試你會發現,因為服務器響應速度問題,延遲還是比較厲害的。本期我們換成巴法云物聯網平臺,用掌控板結合手機APP來優化體驗(圖1)。

手機APP通過巴法云物聯網平臺發送消息,掌控板通過私鑰訂閱相關主題消息,當收到消息后做出相應動作(圖2)。


1. 巴法云物聯網平臺部署
提供物聯網云服務的平臺很多,如阿里云、華為云、亞馬遜云、微軟云、騰訊云、涂鴉智能、百度云、電信CTWing、移動OneNET、中國聯通。今天我們用的巴法云是一款輕量級的物聯網開發平臺,支持發布和訂閱模式,支持TCP長連接和MQTT多模式。因為物聯網設備的特殊性,為了保證數據在低帶寬、不可靠的網絡中傳輸有效的數據,巴法云協議的設計原則是精簡,不添加可有可無的功能,盡力保持云平臺輕量級的特性,構思了一套新的平臺產品交互語言。
1.1 登錄注冊
打開巴法云官網,https://cloud.bemfa.com,點擊注冊,郵箱即可注冊,也可使用微信掃碼,一鍵登錄。
1.2獲取私鑰
登錄完成后,可在控制臺看到自己的私鑰UID,如圖3所示:

這個私鑰就是我們手機APP和硬件之間進行通信的通行證,點開小眼睛可以看到私鑰內容,復制,后面要用到它。
1.3創建主題
在控制臺創建主題。規范名稱是字母、數字或字母+數字組合,點擊創建主題完成(圖4)。

1.4 推送消息
在該主題處輸入消息,點擊推送即可。如果單片機已聯網,并且訂閱了這個主題,在此處推送消息,單片機就可以收到推送的消息。當然我們不可能在這里遙控小車,接下來我們來制作的手機APP里,會通過這個物聯網平臺云推送消息(圖5)。

巴法云向主題推送消息,支持POST協議,格式是數據類型 "Content-Type":"application/x-www-form-urlencoded"
API 地址為 https://apis.bemfa.com/va/postmsg,其后必須連接相關參數,如下表所示:

如此,我們的發送方式就是:
https : //apis.bemfa.com/va/postmsg?uid=私鑰&topic= 主題&type=3&msg=消息內容
其中私鑰就是前面巴法云注冊登錄后那個UID,這是不可更改的。主題和消息內容是我們自己定義的。編輯完整上面的鏈接,在手機APP 的邏輯設計里直接使用。
2. 手機APP制作
2.1CoCo編輯器
制作手機APP 的軟件和平臺也很多,如App Inventor 等。本期我們使用的CoCo是編程貓自研的國內首款面向教育領域圖形化手機應用編輯器(coco.codemao.cn)。它的低門檻、跨平臺的特性使得不懂編程的人也可以制作出專業的APP,從而解決現實問題、實現創意(圖6)。

2.2 組件設計
初次使用時可以跟著平臺教程熟悉一下CoCo,點擊右下角邊看邊做按鈕進入邊看邊做模式。
制作我們要控制小車用的APP。從控件庫拖四個按鈕到舞臺區,排列好。可以對舞臺畫布背景和按鈕樣式進行編輯,方法是單擊選擇按鈕圖標,在右側的屬性里進行相關參數設置(圖7)。

2.3邏輯設計
分別給四個按鈕編程,設置其HTTP客戶端網址為我們在巴法云里編輯的完整推送地址https://apis.bemfa.com/va/postmsg?uid=私鑰&topic=主題&type=3&msg= 消息內容,四個按鈕分別發送消息內容為0、1、2、3,當然你也可以自定義消息內容如left、right 等,保持與硬件編程中的設置一致即可(圖8)。

2.4 打包導出
應用編程完成后,點擊打包按鈕,生成一個.apk 文件,掃描二維碼或者將apk下載傳輸到手機上,在手機上安裝,就可以使用APP 了(圖9)(圖10)。

3. 掌控板程序編寫
本期我們用的開發板是掌控板,編程軟件是Mixly 圖形化編程。當然你也可以用其他開發板如Micro:bit、樹莓派等,編程也可以采用Mind+ 或者Python 代碼編程。
3.1硬件連接
掌控板P8、P9、P13、P14 號端口分別接電機驅動板的IN1、IN2、IN3、IN4。電機驅動板從小車原來的12V電瓶取電(圖11)。

3.2配置網絡
當你的創作能力達到物聯網應用的程度時,基本的圖形化編程就不需要從基礎講起了吧。這里直接上程序截圖,參考制作即可。
打開Mixly 圖形化編程, 我們選擇Arduino ESP32模塊(圖12)。

給掌控板配置網絡為我們要用的WiFi和巴法云建立的應用(圖13)。

3.4接收消息
訂閱主題是我們在巴法云平臺剛剛創建的,名稱要一致。消息是APP里四個按鈕發送的四個消息,這里分別是0、1、2、3,代表前進、后退、左轉、右轉。當接收到相應的消息,分別設置掌控板輸出相應的信號,控制四個GPIO端口輸出高電平(圖14)。

3.2控制電機
電機驅動模塊通過掌控板四個GPIO端口信號進行控制,分別對應驅動電機的前進后退和轉向電機的左轉右轉。這樣,我們就實現了手機APP 通過物聯網平臺向掌控板發送指令繼而控制電機的功能了。
邏輯如下表:

遠端圖傳我們依然采用現成的網絡監控攝像頭,通過小車上的隨身WiFi 提供網絡,此處不再贅述。下一期,我們將利用最小的模塊ESP8266 親手打造低造價高性能遠程控制小車,敬請關注。