史澤輝
我們已經(jīng)使用樹莓派和掌控板實(shí)現(xiàn)了兩種方案,但造價(jià)略偏高、技術(shù)也比較簡單。本期使用ESP8266WiFi模塊的Blinker方案來打造低成本高性能網(wǎng)絡(luò)控制小車。
通常物聯(lián)網(wǎng)項(xiàng)目開發(fā),需要進(jìn)行設(shè)備端、客戶端、服務(wù)器端開發(fā),個人開發(fā)者不可能負(fù)擔(dān)這三部分的開發(fā)。點(diǎn)燈科技Blinker提供了手機(jī)APP到設(shè)備端的控制方案,有多種設(shè)備端SDK支持,讓開發(fā)者更好地聚焦于設(shè)備端。配合由Blinker團(tuán)隊(duì)運(yùn)維的客戶端(BlinkerAPP)、服務(wù)器端,可以快速打造出自己的物聯(lián)網(wǎng)設(shè)備。
Blinker支持藍(lán)牙、WiFi等多種主流通信方式,理論上只要支持藍(lán)牙或WiFi的設(shè)備,都可以使用Blinker連接。使用WiFi接入時(shí),當(dāng)設(shè)備和手機(jī)在同一個局域網(wǎng)中用局域網(wǎng)通信,其余情況使用MQTT遠(yuǎn)程通信。
ESP8266是一個完整且自成體系的WiFi網(wǎng)絡(luò)解決方案,能夠獨(dú)立運(yùn)行,也可以將其添加到任何基于微控制器的設(shè)計(jì)中,只需通過SPI/SDIO接口或中央處理器AHB橋接口即可承擔(dān)WiFi適配器的任務(wù)。
ESP8266強(qiáng)大的片上處理和存儲能力,使其可通過GPIO口集成傳感器及其他應(yīng)用的特定設(shè)備,實(shí)現(xiàn)了最低前期的開發(fā)和運(yùn)行中最少地占用系統(tǒng)資源。
如圖1所示,客戶端手機(jī)APP通過物聯(lián)網(wǎng)平臺發(fā)送消息,服務(wù)器再通過網(wǎng)絡(luò)把信號傳輸給設(shè)備端ESP8266,繼而控制小車運(yùn)行(圖1)。
1.手機(jī)APP制作
1.1下載并安裝BlinkerAPP
安卓/蘋果均在應(yīng)用商店中搜索“Blinker”下載安裝。
1.2獲取SecretKey
點(diǎn)擊“+添加設(shè)備”,選擇“獨(dú)立設(shè)備”,“網(wǎng)絡(luò)接入”方式,復(fù)制key備用。
1.3自定界面功能
在APP中插入兩個滑動條、四個按鍵和一個開關(guān)組件,自行布局并美化樣式。
拖動滑動條,手機(jī)將向設(shè)備發(fā)送相應(yīng)的數(shù)值,用以控制速度和時(shí)間。按鍵分為三種狀態(tài),分別是輕觸按鍵(tap)、按下未放開(press)、釋放按鍵(pressup)。
大部分組件都有一個鍵值(key)即“組件鍵名”,設(shè)備端開發(fā)時(shí),對應(yīng)程序中需要設(shè)定組件的鍵值。如前進(jìn)按鍵的鍵名為“b1”,記住它,后邊設(shè)備端編程的時(shí)候要用到(圖2)。
2.設(shè)備端開發(fā)
接下來我們使用Mixly對設(shè)備端進(jìn)行編程。
2.1選擇開發(fā)板
在Mixly開始界面中選擇第二屏中的ArduinoESP8266模塊。
2.2安裝相關(guān)庫
在右上角“設(shè)置”里,點(diǎn)擊“管理庫”,選擇Blinker和ESP8266庫并云端導(dǎo)入安裝,也可以全部安裝,方便以后使用(圖3)。
2.3程序編寫
2.3.1設(shè)備聯(lián)網(wǎng)
初始化設(shè)置聯(lián)網(wǎng)為WiFi模式,填入無線網(wǎng)絡(luò)名稱(ssid)和密碼(pswd),即我們準(zhǔn)備的隨車手機(jī)的熱點(diǎn)名稱和密碼,設(shè)備密鑰(auth)填寫我們在手機(jī)APP中復(fù)制的SecretKey,這是設(shè)備和APP之間聯(lián)網(wǎng)通信的通行證(圖4)。
2.3.2聲明變量
接下來,我們設(shè)置幾個變量,方便調(diào)用。分別是速度滑動條(sudu)、延時(shí)滑動條(yanshi)和點(diǎn)燈按鍵次數(shù)(cishu)(圖5)。
2.3.3滑動條數(shù)值調(diào)用
通過兩個變量調(diào)用滑動條的數(shù)值,用于控制小車的驅(qū)動和轉(zhuǎn)向速度以及點(diǎn)動延時(shí)(圖6)。
2.3.4創(chuàng)建四個方向控制
電機(jī)驅(qū)動板的IN1、IN2、IN3、IN4分別接ESP8266模塊的d6、d2、d7、d5管腳。其中d6、d2管腳控制馬達(dá)1負(fù)責(zé)轉(zhuǎn)向,d7、d5管腳控制馬達(dá)2負(fù)責(zé)驅(qū)動小車前進(jìn)和后退(圖7)。
需要注意的,ESP8266模塊的管腳定義和Mixly編程中的管腳定義是不同的。它們的對應(yīng)關(guān)系如圖8:
ESP8266模塊的d6、d2、d7、d5管腳在Mixly編程中分別對應(yīng)管腳14、13、4、12。
我們以前進(jìn)鍵為例。它的鍵名為“b1”與手機(jī)APP里的前進(jìn)按鍵相同。把tap設(shè)為點(diǎn)動模式,點(diǎn)一下設(shè)備會以一定的速度(sudu)運(yùn)行一定的時(shí)間(yanshi)。把press定義為長按模式,設(shè)備會一直運(yùn)行,直到pressup松開,設(shè)備即停止(圖9)。
后退、左轉(zhuǎn)、右轉(zhuǎn)三個按鍵定義與此相似,不再贅述。重點(diǎn)說一下開關(guān)燈的定義方式。
初始設(shè)置開關(guān)變量為0,此時(shí)燈是熄滅狀態(tài),當(dāng)我們按一次,變量cishu整除2的余數(shù)為1,此時(shí)燈的狀態(tài)為點(diǎn)亮,按兩次,變量cishu整除2的余數(shù)為0,燈又熄滅,如此循環(huán)(圖10)。
在前兩個案例中我們采用的是現(xiàn)成的網(wǎng)絡(luò)監(jiān)控?cái)z像頭,這一次,我們充分利用隨車手機(jī)攝像頭。隨車手機(jī)和控制端手機(jī)同時(shí)登錄QQ,打開視頻通話模式實(shí)現(xiàn)遠(yuǎn)程監(jiān)控與實(shí)時(shí)通話。通話過程中,使用分屏或懸浮窗模式同時(shí)兼顧操作。
至此,一套低成本高性能的網(wǎng)紅買菜車改裝完畢(圖11)。