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