基于微信和Arduino家用物聯(lián)網(wǎng)系統(tǒng)開發(fā)
引 言
隨著工業(yè) 4.0 的提出,各行各業(yè)開始嘗試將物品與互聯(lián)網(wǎng)相連,進行信息交換和通信,以實現(xiàn)智能化識別、定位、跟蹤、監(jiān)控和管理。家庭物聯(lián)網(wǎng)的出現(xiàn)很大程度上提升了家庭人居環(huán)境的安全性、方便性及宜居性。
目前市場上的家用物聯(lián)網(wǎng)系統(tǒng)多數(shù)都基于樂聯(lián)網(wǎng)、Yeelink 等平臺進行二次開發(fā)。用特定終端硬件驅(qū)動各傳感器采集數(shù)據(jù)并發(fā)送到平臺提供的接口,可在網(wǎng)站上查看自己上傳的數(shù)據(jù)。其開發(fā)雖然較為簡單,但也存在諸多弊端。首先, 以上平臺對手機移動端的支持并不友好,需要下載相應(yīng)的 App 或登錄相應(yīng)的網(wǎng)站才能查看信息。其次,數(shù)據(jù)傳輸?shù)降谌狡脚_的數(shù)據(jù)庫,必然存在數(shù)據(jù)泄露等安全隱患。
考慮到以上弊端,文中提出了基于微信和 Arduino 家用物聯(lián)網(wǎng)系統(tǒng),以WiDo(Arduino 集成了CC3000 WiFi 模塊后的開發(fā)板)為控制板,結(jié)合微信公眾號平臺與阿里云中間服務(wù)器實現(xiàn)家庭遠程監(jiān)控系統(tǒng)。開源平臺Arduino 智能終端具有可定制性、功能強、性價比高等諸多優(yōu)點,為構(gòu)建家用物聯(lián)網(wǎng)系統(tǒng)奠定了良好的基礎(chǔ)。微信平臺開發(fā)方便,對移動端支持比較友好,用戶操作方便。中間服務(wù)器用于存儲數(shù)據(jù)和微信端開發(fā),數(shù)據(jù)在自己的數(shù)據(jù)庫中,不易泄露。該系統(tǒng)具有實現(xiàn)簡便、可靠性高、實用性好、擴展性強等優(yōu)點。
1 系統(tǒng)結(jié)構(gòu)設(shè)計
本系統(tǒng)由感知層、網(wǎng)絡(luò)層和應(yīng)用層組成。
感知層由各傳感器硬件、開關(guān)執(zhí)行元件和 Wido(Arduino 集成了CC3000 WiFi 模塊后的開發(fā)板)組成。主要負責使用傳感器獲取室內(nèi)的各種信息(溫濕度、煙霧、光線亮度)和通過Wido 數(shù)字接口寫入高低電平來控制各電器開關(guān)元件的通斷, 或使用模擬接口輸出模擬電壓達到控制室內(nèi)家用電器的調(diào)幅等。以 LM35 溫度模塊為例,溫度傳感器電路將測量到的溫度信號轉(zhuǎn)換成電壓信號輸出到處理器的端口,處理器根據(jù)相應(yīng)的算法對輸入的電壓信號進行采集、變送、運算后轉(zhuǎn)化為溫度數(shù)據(jù),從而實現(xiàn)了對外界環(huán)境信息的感知采集。
網(wǎng)絡(luò)層由路由器和Internet 以太網(wǎng)組成,提供一條數(shù)據(jù)通道供感知層采集到的數(shù)據(jù)信息上傳到中間服務(wù)器并存貯在數(shù)據(jù)庫中,供微信公眾號用戶隨時查看;同時還要能將微信用戶的指令下傳到感知層執(zhí)行。如用戶可在微信端查看室內(nèi)溫度, 并直接在微信端下達開燈指令,Wido 接收指令并驅(qū)動開關(guān)元件執(zhí)行開關(guān)指令。網(wǎng)絡(luò)層是物聯(lián)網(wǎng)系統(tǒng)的關(guān)鍵,是連接感知層和應(yīng)用層的橋梁。它需要將感知層的信息傳輸?shù)骄W(wǎng)絡(luò)中,并給應(yīng)用層提供一個良好的用戶接口,采用無線路由器避免了冗長的接線,使感知層的硬件設(shè)備擺脫了特定地點的限制,實現(xiàn)了在WiFi 有效輻射范圍內(nèi)的硬件自由配置。
應(yīng)用層是本系統(tǒng)的最高層,直接與用戶連接,由中間服務(wù)器、數(shù)據(jù)庫和微信公眾平臺組成。應(yīng)用層需要接收網(wǎng)絡(luò)層的信息,并將其存儲在相應(yīng)的數(shù)據(jù)庫中,對數(shù)據(jù)庫中的信息及時更新。同時根據(jù)用戶請求,及時準確的將數(shù)據(jù)中的信息反饋給用戶,并將用戶指令存儲在數(shù)據(jù)庫中,發(fā)送到感知層執(zhí)行。微信公眾平臺提供友好的用戶接口和界面,使本系統(tǒng)不拘束于某個區(qū)域,只要用戶的手機能夠聯(lián)網(wǎng),便可以享受該家用物聯(lián)網(wǎng)系統(tǒng)帶來的便捷。
基于微信平臺的物聯(lián)網(wǎng)架構(gòu)如圖 1 所示。
2 硬件設(shè)計
本系統(tǒng)依據(jù)架構(gòu)把硬件設(shè)計分成三部分,分別對應(yīng)感知層、網(wǎng)絡(luò)層、應(yīng)用層,依次為節(jié)點設(shè)備、網(wǎng)絡(luò)設(shè)備、服務(wù)端設(shè)備。
2.1 節(jié)點設(shè)備
節(jié)點設(shè)備端主要采用 WiDo,一塊集成 Arduino Leonardo 主控芯片和 CC3000 WiFi 內(nèi)核的 Arduino 開發(fā)板。相比于 WiFi拓展模塊,WiDo 具有更輕便、更集成、更方便的特點, 且功耗比 WiFi 模塊低,適合作為家用物聯(lián)網(wǎng)長時間的連接節(jié) 點。因采用 WiFi 無線連接,所以對物聯(lián)網(wǎng)節(jié)點選址更加方便。
在利用 Arduino 主控板的基礎(chǔ)上,驅(qū)動各傳感器模塊采 集室內(nèi)數(shù)據(jù),如溫度、濕度等。并由 Arduino 主控板將這些采 集的數(shù)據(jù)通過網(wǎng)絡(luò)設(shè)備上傳到網(wǎng)絡(luò)。節(jié)點設(shè)備還包括 Arduino 主控板驅(qū)動的繼電器等開關(guān)元件,執(zhí)行來自用戶的命令。
在實際模型中,采用的硬件有 WiDo 主控板、LM35 溫度 傳感器、發(fā)光二極燈和電磁繼電器。其中,LM35 溫度傳感器 是各類傳感器模塊的代表,采集室內(nèi)數(shù)據(jù)并上傳。發(fā)光二極 管和電磁繼電器是開關(guān)元件的代表,執(zhí)行來自用戶的開、關(guān)燈 指令以及家用高電壓電器的開關(guān)控制。
2.2 網(wǎng)絡(luò)設(shè)備
網(wǎng)絡(luò)設(shè)備為系統(tǒng)的上下級提供一條數(shù)據(jù)通道,主要由路由器和網(wǎng)線組成。即感知層通過連接路由器接入互聯(lián)網(wǎng)。所以網(wǎng)絡(luò)設(shè)備的穩(wěn)定是第一要義,而日常家庭生活的無線WiFi 網(wǎng)絡(luò)環(huán)境即可滿足要求。
在實際模型中, 為了操作演示方便, 直接用手機開啟WiFi 熱點作為網(wǎng)絡(luò)設(shè)備。
2.3 服務(wù)端設(shè)備
服務(wù)端的主要作用是接收并存儲來自節(jié)點的數(shù)據(jù)和向應(yīng)用層用戶提供的數(shù)據(jù)查詢和指令下達等服務(wù),并且能夠與微信公眾平臺對接。在家庭物聯(lián)網(wǎng)系統(tǒng)中,考慮到成本等問題,一般采用的服務(wù)端設(shè)備是租用的網(wǎng)絡(luò)云服務(wù)器。用戶級別的物聯(lián)網(wǎng)系統(tǒng)一般采用最基本的網(wǎng)絡(luò)云服務(wù)器 + 數(shù)據(jù)庫即可滿足要求。租用的服務(wù)器更加穩(wěn)定,并且有人維護,降低了系統(tǒng)的開發(fā)難度,易于普及家庭物聯(lián)網(wǎng)系統(tǒng)。
在實際模型中采用阿里云的云虛擬主機,其具有 1 G 空間+50 M MySQL 空間,完全能夠滿足物聯(lián)網(wǎng)系統(tǒng)的要求,并為公眾平臺提供穩(wěn)定、安全的服務(wù)。
3 軟件設(shè)計
軟件設(shè)計是家用物聯(lián)網(wǎng)平臺搭建的關(guān)鍵,軟件設(shè)計是在 Internet 以太網(wǎng)基礎(chǔ)上,構(gòu)建一條穩(wěn)定的數(shù)據(jù)通道,以供數(shù)據(jù) 實時、準確的傳輸。但此處涉及兩個端的銜接問題,數(shù)據(jù)從感 知層發(fā)往應(yīng)用層,指令從應(yīng)用層傳入感知層,意味著兩個端 需要實時監(jiān)聽對方的數(shù)據(jù)。所以軟件設(shè)計部分主要分為數(shù)據(jù) 通道構(gòu)建,數(shù)據(jù)發(fā)送與獲取,服務(wù)器端面向微信平臺設(shè)計。
3.1 數(shù)據(jù)通道的構(gòu)建
數(shù)據(jù)通道的構(gòu)建涉及 WiDo 控制板客戶端和服務(wù)器端。 兩者都需要實時監(jiān)聽對方的數(shù)據(jù)。故采用 C/S 客戶端 - 服務(wù) 器模式的網(wǎng)絡(luò)架構(gòu)。
由于服務(wù)器端一直處于網(wǎng)絡(luò)環(huán)境中,所以服務(wù)器端的設(shè)計只需等待客戶端數(shù)據(jù)發(fā)送或控制命令請求并給出回應(yīng)即可。
WiDo 控制板端需要先連接路由器,確定連接以太網(wǎng); 然后在每次需要發(fā)送數(shù)據(jù)或者獲取指令時,先建立與目標服務(wù)器的連接,才能通過HTTP 協(xié)議把數(shù)據(jù)包發(fā)送出去,并接收目標服務(wù)器的應(yīng)答信息。
3.1.1 WiDo客戶端程序設(shè)計
Wido 連接流程圖如圖 2 所示。在確認連接到路由器并由DHCP(動態(tài)主機配置協(xié)議)協(xié)議獲得 IP 地址后,控制板客戶端(Client)即采用輪詢(Polling)方式,由 CPU 定時向服務(wù)器發(fā)起請求,服務(wù)器收到請求后立即返回響應(yīng)信息并關(guān)閉連接, 周而復(fù)始。
WiDo控制板核心代碼由函數(shù)體 setup()和 loop()組成,值得注意的是,setup函數(shù)只在控制板電啟動時執(zhí)行一次,其作用在于完成控制板的串口波特率初始化,控制板初始化,使控制板以WPA2加密方式連接WiFi熱點(AP),同時串口打印連接字符 Connected! 。隨后檢查等待路由器DHCP協(xié)議分配 IP 地址等功能。
Loop 函數(shù)在 Arduino 中會自動循環(huán)調(diào)用,確保 Arduino 控制板與目標服務(wù)器一直處于連接狀態(tài),并以輪詢方式周期性的發(fā)送讀取自傳感器的數(shù)據(jù)及控制命令請求。如果 Arduino處于異常狀態(tài),則會自動重啟進入 setup 然后再進入loop 函數(shù), 即使Arduino 掉電異常,也能自動連接路由器繼續(xù)工作。服務(wù)端存儲流程圖如圖 3 所示。
3.1.2 服務(wù)器端程序設(shè)計
服務(wù)器端一直在等待數(shù)據(jù)POST(Arduino 通過HTTP 協(xié)議將數(shù)據(jù)包 POST 到服務(wù)器),當有數(shù)據(jù)響應(yīng)時才有動作。先將數(shù)據(jù)存儲到數(shù)據(jù)庫中,然后將數(shù)據(jù)中存儲的開關(guān)量取出, 以應(yīng)答的形式發(fā)送給WiDo 控制板。
3.2 數(shù)據(jù)的發(fā)送與獲取
上文已大概說明了數(shù)據(jù)的發(fā)送與獲取過程。在 Arduino 控制板和目標服務(wù)器建立連接時,發(fā)送數(shù)據(jù)到目標服務(wù)器。服務(wù)器收到POST 的數(shù)據(jù)并把開關(guān)量命令以應(yīng)答的形式回復(fù)過去。Arduino 接收應(yīng)答的開關(guān)量,并依據(jù)代碼控制相應(yīng)端口的動作。數(shù)據(jù)發(fā)送與獲取如圖 4 所示。
3.3 服務(wù)端面向微信平臺設(shè)計
微信服務(wù)端的主要任務(wù)是處理用戶發(fā)來的消息。當用戶 請求數(shù)據(jù)時,將數(shù)據(jù)庫中存儲的傳感器數(shù)據(jù)發(fā)送給用戶;當用 戶發(fā)送指令時,將用戶指令存儲在數(shù)據(jù)庫中,等待下一次應(yīng)答 返送給 Arduino。
圖 5 所示為用戶請求數(shù)據(jù)的概念圖,圖 6 所示為用戶發(fā) 送指令的概念圖。
4 實際測試
經(jīng)實際測試,溫度測量最大誤差小于 +0.5 ℃,原因是傳感器的非線性因素。但對家用物聯(lián)網(wǎng)而言,可滿足其實時性與準確性條件。微信端溫度測量對比見表 1 所列。
微信端從發(fā)出命令到實際響應(yīng)時間見表 2 所列。控制端命令自微信客戶端發(fā)出后直至客戶端執(zhí)行機構(gòu)響應(yīng),所用七組時間取平均值,約為 4 s,延遲原因在于網(wǎng)絡(luò)信息的傳輸時延以及控制板的循環(huán)周期時延。執(zhí)行機構(gòu)穩(wěn)定可響應(yīng)。
5 結(jié) 語
本文采用開源 Arduino、阿里云虛擬服務(wù)器以及微信公眾號平臺,構(gòu)建了可遠程監(jiān)控的家用物聯(lián)網(wǎng)系統(tǒng),實現(xiàn)對家庭環(huán)境的監(jiān)控及其反向控制方案。使用WiFi 接入方式避免了控制器冗長的布線且突破了空間限制,同時微信公眾號平臺接入物聯(lián)網(wǎng)系統(tǒng),可實現(xiàn)對插排,燈等家電的智能簡易控制。采用成熟的硬件平臺,不僅穩(wěn)定性高,成本低且易于部署推廣。但目前系統(tǒng)采用的HTTP 協(xié)議自身存在一定安全漏洞,且本系統(tǒng)所采集的參數(shù)和所支持的智能設(shè)備均有待增加,因此未來我們還將繼續(xù)努力,在后續(xù)研究中對其重點改進。