史澤輝
我們已經使用樹莓派和掌控板實現了兩種方案,但造價略偏高、技術也比較簡單。本期使用ESP8266WiFi模塊的Blinker方案來打造低成本高性能網絡控制小車。
通常物聯網項目開發,需要進行設備端、客戶端、服務器端開發,個人開發者不可能負擔這三部分的開發。點燈科技Blinker提供了手機APP到設備端的控制方案,有多種設備端SDK支持,讓開發者更好地聚焦于設備端。配合由Blinker團隊運維的客戶端(BlinkerAPP)、服務器端,可以快速打造出自己的物聯網設備。

Blinker支持藍牙、WiFi等多種主流通信方式,理論上只要支持藍牙或WiFi的設備,都可以使用Blinker連接。使用WiFi接入時,當設備和手機在同一個局域網中用局域網通信,其余情況使用MQTT遠程通信。
ESP8266是一個完整且自成體系的WiFi網絡解決方案,能夠獨立運行,也可以將其添加到任何基于微控制器的設計中,只需通過SPI/SDIO接口或中央處理器AHB橋接口即可承擔WiFi適配器的任務。
ESP8266強大的片上處理和存儲能力,使其可通過GPIO口集成傳感器及其他應用的特定設備,實現了最低前期的開發和運行中最少地占用系統資源。
如圖1所示,客戶端手機APP通過物聯網平臺發送消息,服務器再通過網絡把信號傳輸給設備端ESP8266,繼而控制小車運行(圖1)。

1.手機APP制作
1.1下載并安裝BlinkerAPP
安卓/蘋果均在應用商店中搜索“Blinker”下載安裝。
1.2獲取SecretKey
點擊“+添加設備”,選擇“獨立設備”,“網絡接入”方式,復制key備用。
1.3自定界面功能
在APP中插入兩個滑動條、四個按鍵和一個開關組件,自行布局并美化樣式。
拖動滑動條,手機將向設備發送相應的數值,用以控制速度和時間。按鍵分為三種狀態,分別是輕觸按鍵(tap)、按下未放開(press)、釋放按鍵(pressup)。
大部分組件都有一個鍵值(key)即“組件鍵名”,設備端開發時,對應程序中需要設定組件的鍵值。如前進按鍵的鍵名為“b1”,記住它,后邊設備端編程的時候要用到(圖2)。

2.設備端開發
接下來我們使用Mixly對設備端進行編程。
2.1選擇開發板
在Mixly開始界面中選擇第二屏中的ArduinoESP8266模塊。
2.2安裝相關庫
在右上角“設置”里,點擊“管理庫”,選擇Blinker和ESP8266庫并云端導入安裝,也可以全部安裝,方便以后使用(圖3)。

2.3程序編寫
2.3.1設備聯網
初始化設置聯網為WiFi模式,填入無線網絡名稱(ssid)和密碼(pswd),即我們準備的隨車手機的熱點名稱和密碼,設備密鑰(auth)填寫我們在手機APP中復制的SecretKey,這是設備和APP之間聯網通信的通行證(圖4)。

2.3.2聲明變量
接下來,我們設置幾個變量,方便調用。分別是速度滑動條(sudu)、延時滑動條(yanshi)和點燈按鍵次數(cishu)(圖5)。

2.3.3滑動條數值調用
通過兩個變量調用滑動條的數值,用于控制小車的驅動和轉向速度以及點動延時(圖6)。

2.3.4創建四個方向控制
電機驅動板的IN1、IN2、IN3、IN4分別接ESP8266模塊的d6、d2、d7、d5管腳。其中d6、d2管腳控制馬達1負責轉向,d7、d5管腳控制馬達2負責驅動小車前進和后退(圖7)。

需要注意的,ESP8266模塊的管腳定義和Mixly編程中的管腳定義是不同的。它們的對應關系如圖8:
ESP8266模塊的d6、d2、d7、d5管腳在Mixly編程中分別對應管腳14、13、4、12。
我們以前進鍵為例。它的鍵名為“b1”與手機APP里的前進按鍵相同。把tap設為點動模式,點一下設備會以一定的速度(sudu)運行一定的時間(yanshi)。把press定義為長按模式,設備會一直運行,直到pressup松開,設備即停止(圖9)。

后退、左轉、右轉三個按鍵定義與此相似,不再贅述。重點說一下開關燈的定義方式。
初始設置開關變量為0,此時燈是熄滅狀態,當我們按一次,變量cishu整除2的余數為1,此時燈的狀態為點亮,按兩次,變量cishu整除2的余數為0,燈又熄滅,如此循環(圖10)。
在前兩個案例中我們采用的是現成的網絡監控攝像頭,這一次,我們充分利用隨車手機攝像頭。隨車手機和控制端手機同時登錄QQ,打開視頻通話模式實現遠程監控與實時通話。通話過程中,使用分屏或懸浮窗模式同時兼顧操作。


至此,一套低成本高性能的網紅買菜車改裝完畢(圖11)。