李白華,孫 濤
(安徽農業大學 經濟技術學院 信息與計算機系,安徽 合肥 230011)
隨著物聯網技術的發展,溫濕度監測成為智能家居系統構建的基礎需求。傳統的智能家居應用系統以網關為中心,增加了系統設計的復雜性,也增加了網絡管理的成本。在云技術大量應用前,溫濕度的測量數據是在Zigbee網絡中傳輸。一種是通過串口送往PC機端的應用界面,另一種是透過網關的網絡協議分析功能打包數據,使數據可以在其他網絡環境中傳輸。Zigbee網絡的優點是功耗低,但傳輸速率慢,海量數據在線傳輸處理會有系統容量問題,實現設備管理也有一定的難度。網關帶來的問題是設備費用的增加。本文中WiFi模塊采用STM32處理器和WiFi模組串口通信形式,STM32和OneNET平臺之間的通信以WiFi模組作為介質,通過無線網絡配置WiFi模組,以EDP協議連接ONENET云平臺,并將傳感器數據實時發送到云平臺,實現對數據的存儲和管理。本文設計的系統需要用戶在移動云平臺上注冊,獲得平臺分發的設備序列號,以使用序列號獲取平臺接收的溫濕度數據,并訪問以時間為標注的歷史數據。云服務器的引入解決了網關系統設計的復雜度,降低了成本。此外,云服務器對大量數據進行儲存統籌,有利于發現物聯網應用中的新需求,帶來新的技術熱點。
本控制設備分為傳感器模塊、微處理器系統、WiFi無線網絡設備和云平臺[1],如圖1所示。

圖1 系統硬件架構圖
本文中設計系統的關鍵部分是選用一塊合適的處理器。STM32F103(以下簡稱STM32)是32位嵌入式處理器,采用ARM Cortex-M3作為內核[2],存儲空間為48 kB的動態存儲、256 kB的閃存空間,能夠為系統運行提供足夠的數據存儲空間。處理器的主頻頻率也能提供優良的運算速度。
路由器作為系統網絡環境的構建者,ESP8266連上這個網絡發送數據包。它作為微處理器與網絡之間的中介,可以自己作為一個主控制器工作,也可以作為從設備被其他控制器控制工作。ESP8266性能穩定、體積小,可以運行AT指令。本文中此模塊的初始化通過在線進行。串口通信方式是WiFi模塊自帶,和微處理器之間的數據傳遞也是通過這個模式完成。
DHT22是一款集成傳感器,輸出信號類型是數字型。信號在芯片內部已經經過電路校準,所以輸出信號精度較高。輸出溫濕度信號送往高性能嵌入式處理器,在STM32上運行溫濕度采集信號算法,可以構建一個穩定的控制系統,長期監控溫濕度數據,并且得到的結果精度高。
本系統的軟件設計主要在Keil軟件開發環境中完成。程序主要包括處理器采集傳感器數據程序、網頁設置WiFi模塊、WiFi與云平臺數據透傳程序。主流程如圖2所示。

圖2 系統主程序流程圖
系統啟動后開始進行一些初始化工作,如初始化定時器、I/O口等。
WiFi模塊的出廠地址預先輸入在瀏覽器,以網頁的方式完成常見的初始化工作。在提示框里輸入用戶名和密碼,進入WiFi模塊的設置頁面,配置ESP8266的工作模式和參數,使其可以接入無線網絡,傳遞測控設備測到的數據。
(1)station模式為組件的工作模式。
(2)點擊“無線終端設置”功能,在“要接入的無線網絡名稱(SSID1)”的右側點擊搜索功能,搜索無線局域網環境,接入無線網絡。
(3)確保波特率為115200,把串口自動成幀和注冊包類型均關閉,完成WiFi模塊通信中需要的串口配置要求。
STM32微控制器通過UART口與ESP8266進行數據傳輸,數據被ESP8266傳載到云平臺。設備與云平臺連接并傳遞數據的方式主要有兩種。一種是基于HTTP協議的傳遞方式,數據的類型為JASON格式,方便平臺進行資源管理,并在與其他平臺發生數據傳遞時具備一定的優勢。但是,這種連接是一個短連接,連接的方式限制數據的存儲方式。另一種是基于EDP協議的連接。這種方式的優點是長連接,方便底端設備上報數據。設備之間進行透傳時方便快捷,使用平臺提供的數據存儲功能。用戶需要查詢歷史數據時只需登錄平臺就可以獲得,對設備型號沒有限制。本文設計的系統需要傳感器數據在云平臺進行存儲并實時管理,軟件中需要實現的連接是EDP長連接。在此基礎上如果用戶需要增加新的業務平臺,可以利用HTTP協議提供的API對OneNET提供的資源進行管理(如增刪查改設備、數據點等)。
程序開發中用到了云服務器的EDPSDK,EDP協議由此實現,并由此上報底端設備傳遞的數據到OneNET,進行數據的存儲管理。
用戶設備接入云平臺時,需要按照云平臺的要求經過以下流程:
(1)新建產品,并將產品接入協議設置為EDP;
(2)新建設備,把系統隨機生成的設備ID和APIkey等信息記錄下來;
(3)連接設備與云平臺;
(4)創建數據流,實現數據傳遞到云平臺。
OneNET可以實現多種協議設備接入,如MQTT、Modbus、HTTP、EDP、TCP等協議[3],在實際應用時可以實現多種應用場景。
本文軟件系統設計中采用EDP協議打包封裝數據,建立與云平臺之間的連接。實現系統接入的EDP協議是在TCP基礎發展起來的,在上層實現EDP的事務。
用戶在云平臺注冊,通過在云平臺創建的設備id和APIkey進行EDP協議封包,發送連接申請信息到云平臺。
連接云平臺時設置延時函數延時500 ms,延遲等待時間大于300 ms,否則設備連不上云平臺,且短時間頻繁操作平臺發送連接請求對系統的功耗影響大,不利于系統低功耗的設計。
打包數據點,將數據點名稱和值封裝成EDP協議規定格式,利用ESP8266設備并使用發送數據包函數發送數據包到云平臺。
系統的主要代碼分析如下:

連接至ONENET云平臺后,點擊進入事先創建的設備,點擊接收數據,傳感器的測量數據就能夠按照一定的格式顯示在云平上。在中國移動云服務器上數據顯示界面可以自定義設置成圓盤或者柱狀形狀顯示,也可以利用API程序按照用戶的需求設置。同時,平臺提供數據存儲接口,保存的歷史溫濕度數據可以供用戶查詢并對數據進行統籌分析,如圖3所示。

圖3 云平臺實時數據圖
由測試結果可知,基于STM32和ESP8266的測控系統能完成將溫濕度傳感器采集數據實時上傳到云服務器平臺的任務,同時可以存儲和管理數據。整個系統功耗低,數據結果準確,WiFi網絡的容量方便擴展功能實現多傳感器監控測量,可以應用于智能測控場景。