成瀾
(蘇州工業園區職業技術學院,江蘇 蘇州 215123)
“互聯網+”背景下,智能設備日益普及,日常生活中常見的智能設備就有空氣凈化器、空調、熱水器、燈具、烤箱、插座、取暖器等,這些智能硬件與用戶交互的需求越來越多,如果這些硬件是同一家的產品,管理則相對簡單,通常下載一個App就可以連接所有的智能硬件,但如果是不同廠商的產品,往往需要下載多個不同的APP,此時傳統的智能硬件+專用App的交互管理方式就顯露出了弊端,不僅占用內存,而且使得軟件管理變得繁瑣。而騰訊公司推出的微信小程序只需要掃一掃二維碼或者在小程序界面搜索即可使用,這種“即用即走”特性,正好可以彌補這一缺陷[1]。同時對于開發者,微信小程序的開發門檻相比App較低。
為此,本文提出了基于OneNET物聯網云平臺與MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)協議的智能裝置控制小程序設計,以一個智能家居模型的環境調控為載體,嘗試將物聯網、智能硬件與微信小程序相結合,虛實交互、軟硬結合,解決智能裝置的簡便控制問題。
微信小程序的“軟硬結合”是指通過微信小程序軟件實現與本地或遠程外部硬件設備的交互,其中智能家居、通用環境調控、遠程門禁、機器人控制、智能小車控制等都是這類典型應用。微信小程序與硬件交互,根據交互距離的遠近進行劃分,主要分為本地交互和遠程交互兩類。
本地交互:微信小程序與本地硬件設備交互以藍牙通信最為普及,其中藍牙透傳應用最為廣泛,手機軟件通過藍牙給硬件發送字符串數據,硬件接收到信息后會發送應答信息給手機軟件,簡單的軟硬結合項目(如藍牙小車),多以藍牙透傳方式實現。微信小程序提供了藍牙API(Application Programming Interface,應用程序接口)接口,可供開發者調用,開發者可在此基礎上根據個性需求方便地實現定制化應用。
遠程交互:相較本地交互,其體系架構略微復雜。以通用室內環境調控系統為例,首先需要傳感器采集室內環境信息如溫濕度、光照、煙霧濃度等,接著將數據實時傳輸至遠程平臺,然后用戶通過微信小程序API調用查看環境數據,進而根據閾值判斷,調控室內環境設備。此類系統實現架構可歸納為:傳感采集終端(如溫濕度傳感器、光照傳感器等)/控制終端(LED燈、門鎖、窗簾等)->微控中心->遠程平臺->手機/平板微信小程序。
目前,微信小程序與智能硬件遠程交互的實現方式眾多,微控中心實現可以考慮:微控制器+有線/無線通信模塊、微控制器+PC/工控機+橋接軟件、樹莓派等。遠程平臺可以考慮自己架設遠程服務平臺或者使用第三方物聯網開發公眾平臺(如:OneNET-中國移動物聯網開放平臺、阿里云物聯網平臺、百度智能云天工物聯網平臺、微信硬件平臺等),各種實現方式各有利弊。
為充分利用我院現有硬件資源,降低開發難度,在實施過程中,選擇了Arduino微控制器+PC橋接軟件(串口-TCP/IP透傳軟件)+中國移動OneNET物聯網云開發平臺這種模式。如果要實現無線橋接搭配無線模塊如ESP8266即可。該模式中涉及的所有核心技術均對初學者友好、簡單易上手,因此得到了廣泛應用。整個系統的架構如圖1所示。

圖1 遠程交互體系架構
從圖1中可以看出,設計的系統包括了可以利用開發的微信小程序查看環境和設備工作狀態以及實現遠程控制的移動終端和由主控板、通信模塊、各類傳感器及環境設備組成的設備控制端。設備控制端的各類傳感器終端,采集環境數據通過有線或者無線網絡上傳到OneNET云平臺。在OneNET云平臺的應用管理中可以創建數據可視界面,實時查看環境數據,根據預設閾值比對或移動終端指令向主控板發送指令。移動終端通過Wifi或者陸地移動通信網接入中國移動OneNET云平臺,借助云平臺的MQTT協議與主控板通信[2],將移動終端發出的控制指令下發給LED燈、風扇等環境設備,從而實現智能家居環境調控系統設計。
借助Rhinoceros(犀牛)軟件進行智能家居模型3D圖的設計與繪制,如圖2所示。并按設計尺寸裁切亞克力板進行實物制作。空間設計考慮美觀,在北側和西側窗外及底部設計了裝置空間,放置主控板、傳感器及走線。

圖2 智能家居模型3D設計
搭建簡易的硬件環境:Arduino UNO+傳感器+PC(串口-TCP/IP)透傳軟件。
Arduino是一款集成AVR單片機的軟硬件相結合的開源平臺,它跨平臺、簡單清晰、開放性好,廣受好評,其中Arduino UNO RV3開發板應用最為廣泛,衍生產品也非常多。選擇mBot主板作為微控制器。mBot主板是一個基于Arduino UNO針對教學用途升級改進的主控板,屬于Arduino衍生品,可方便通過圖形化積木式編程或Arduino代碼編程完成硬件編程。
光線傳感器,利用光電晶體管電阻隨外界光強的增加而減小的特性,通過電阻分壓值將光信號輸入轉換為電信號輸出,輸出值為:日常光照下輸出值為大于500的整數,夜晚或黑暗空間輸出值為0到100之間的整數,普通室內照明情況下輸出值為100到500之間的整數,此參考值用于控制程序的閾值設置,在實際環境下需要編寫測試程序觀察輸出值來校準閾值。傳感器有三個引腳,GND(接地)、VCC(接電源)和AO(模擬輸出),連接到Arduino UNO主控板時,用杜邦線分別接到GND、5V和ANALOGIN 6個模擬輸入引腳中的一個,如圖3所示。

圖3 光線傳感器與Arduino UNO連線示意圖
溫度傳感器為DS18B20數字溫度傳感器,測溫范圍為-10℃~+85℃,測量數據以16位二進制形式從SIG引腳輸出。連接到Arduino UNO主控板時,用杜邦線分別接傳感器的GND引腳到主控板的GND、傳感器的VCC引腳到主控板的5V、傳感器的SIG引腳到主控板的DIGITAL引腳,如圖4所示。

圖4 溫度傳感器與Arduino UNO連線示意圖
OneNET是中國移動物聯網開放平臺,支持MQTT、HTTP(Hyper Text Transfer Protocol,超文本傳輸協議)、EDP(Enhanced Device Protocol,增強設備協議)、Modbus、TCP(Transmission Control Protocol,傳輸控制協議)透傳、RGMP(Cisco Router Port Group Management Protocol,思科路由器端口組管理協議)多種網絡協議接入。選擇的MQTT協議提供發布和訂閱兩種消息模式,屬于OSI參考模型的傳輸層協議。MQTT報文格式精簡,可以高效地傳輸數據;三種級別的QoS(Quality of Service,服務質量)支持不同消息的傳輸要求,在保證可靠性的前提下減小開銷;帶Topic的訂閱模式,可以實現消息的一對多發布。MQTT的設計規范使得它更適合物聯網設備低功耗、網絡帶寬小、延時高、不穩定等局限的需求,目前廣泛應用于各領域的物聯網應用。
同時,OneNET云平臺提供開放、豐富的API接口,用戶可以使用API進行設備管理、數據查詢、設備命令交互等操作[3,4],微信小程序可方便調用API接口。
物聯網云平臺的創建和應用原本是個復雜的過程,但OneNET云平臺屏蔽了諸多復雜的技術細節,可適配各種網絡環境和協議類型,支持各類智能硬件的快速接入,其操作流程概述為:在官網注冊賬號并登錄->進入控制臺,在控制臺首頁全部產品服務中選擇MQTT物聯網套件->添加產品->添加設備->創建數據流->添加APIKEY->創建應用。當硬件終端上傳數據至OneNET后,將在平臺對應數據流中新增數據點,多個數據點即可構成數據變化曲線,數據曲線可通過各類終端進行查看,例如溫度數據變化的OneNET圖表展示如圖5所示。

圖5 OneNET平臺數據呈現
首先調研智能家居環境調控項目需求,根據需求搭建微信小程序UI界面[5],通過UI制作提升組件應用熟練度,部分參考界面如圖6,左圖為整體頁面參考,右圖為空調子頁面參考。

圖6 通用環境調控項目UI界面
微信小程序是用JavaScript開發的,采用MQTT傳輸就需要安裝MQTT.js作為MQTT客戶端庫,并在index.js頁面import。
微信小程序API調用:微信小程序通過wx.request調用OneNET API。首先確認并測試新增數據、查看數據的API接口,查看數據需符合GET請求規范,新增數據需符合POST請求規范[6]。GET請求溫度數據格式如下:


在“互聯網+”對智能交互需求的背景下,在微信小程序與智能硬件的交互方式分析的基礎上,本文設計了一款基于中國移動OneNET物聯網云開發平臺和MQTT傳輸協議與控制端微信小程序相結合的智能家居模型的環境調控系統。通過測試證明,本系統運行正常,能部署到實際的智能家居環境中,且可擴展到除環境調控外的其他電器智能控制改造應用。