李白華,孫 濤
(安徽農(nóng)業(yè)大學(xué) 經(jīng)濟(jì)技術(shù)學(xué)院 信息與計(jì)算機(jī)系,安徽 合肥 230011)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,溫濕度監(jiān)測(cè)成為智能家居系統(tǒng)構(gòu)建的基礎(chǔ)需求。傳統(tǒng)的智能家居應(yīng)用系統(tǒng)以網(wǎng)關(guān)為中心,增加了系統(tǒng)設(shè)計(jì)的復(fù)雜性,也增加了網(wǎng)絡(luò)管理的成本。在云技術(shù)大量應(yīng)用前,溫濕度的測(cè)量數(shù)據(jù)是在Zigbee網(wǎng)絡(luò)中傳輸。一種是通過串口送往PC機(jī)端的應(yīng)用界面,另一種是透過網(wǎng)關(guān)的網(wǎng)絡(luò)協(xié)議分析功能打包數(shù)據(jù),使數(shù)據(jù)可以在其他網(wǎng)絡(luò)環(huán)境中傳輸。Zigbee網(wǎng)絡(luò)的優(yōu)點(diǎn)是功耗低,但傳輸速率慢,海量數(shù)據(jù)在線傳輸處理會(huì)有系統(tǒng)容量問題,實(shí)現(xiàn)設(shè)備管理也有一定的難度。網(wǎng)關(guān)帶來的問題是設(shè)備費(fèi)用的增加。本文中WiFi模塊采用STM32處理器和WiFi模組串口通信形式,STM32和OneNET平臺(tái)之間的通信以WiFi模組作為介質(zhì),通過無(wú)線網(wǎng)絡(luò)配置WiFi模組,以EDP協(xié)議連接ONENET云平臺(tái),并將傳感器數(shù)據(jù)實(shí)時(shí)發(fā)送到云平臺(tái),實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)和管理。本文設(shè)計(jì)的系統(tǒng)需要用戶在移動(dòng)云平臺(tái)上注冊(cè),獲得平臺(tái)分發(fā)的設(shè)備序列號(hào),以使用序列號(hào)獲取平臺(tái)接收的溫濕度數(shù)據(jù),并訪問以時(shí)間為標(biāo)注的歷史數(shù)據(jù)。云服務(wù)器的引入解決了網(wǎng)關(guān)系統(tǒng)設(shè)計(jì)的復(fù)雜度,降低了成本。此外,云服務(wù)器對(duì)大量數(shù)據(jù)進(jìn)行儲(chǔ)存統(tǒng)籌,有利于發(fā)現(xiàn)物聯(lián)網(wǎng)應(yīng)用中的新需求,帶來新的技術(shù)熱點(diǎn)。
本控制設(shè)備分為傳感器模塊、微處理器系統(tǒng)、WiFi無(wú)線網(wǎng)絡(luò)設(shè)備和云平臺(tái)[1],如圖1所示。
圖1 系統(tǒng)硬件架構(gòu)圖
本文中設(shè)計(jì)系統(tǒng)的關(guān)鍵部分是選用一塊合適的處理器。STM32F103(以下簡(jiǎn)稱STM32)是32位嵌入式處理器,采用ARM Cortex-M3作為內(nèi)核[2],存儲(chǔ)空間為48 kB的動(dòng)態(tài)存儲(chǔ)、256 kB的閃存空間,能夠?yàn)橄到y(tǒng)運(yùn)行提供足夠的數(shù)據(jù)存儲(chǔ)空間。處理器的主頻頻率也能提供優(yōu)良的運(yùn)算速度。
路由器作為系統(tǒng)網(wǎng)絡(luò)環(huán)境的構(gòu)建者,ESP8266連上這個(gè)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包。它作為微處理器與網(wǎng)絡(luò)之間的中介,可以自己作為一個(gè)主控制器工作,也可以作為從設(shè)備被其他控制器控制工作。ESP8266性能穩(wěn)定、體積小,可以運(yùn)行AT指令。本文中此模塊的初始化通過在線進(jìn)行。串口通信方式是WiFi模塊自帶,和微處理器之間的數(shù)據(jù)傳遞也是通過這個(gè)模式完成。
DHT22是一款集成傳感器,輸出信號(hào)類型是數(shù)字型。信號(hào)在芯片內(nèi)部已經(jīng)經(jīng)過電路校準(zhǔn),所以輸出信號(hào)精度較高。輸出溫濕度信號(hào)送往高性能嵌入式處理器,在STM32上運(yùn)行溫濕度采集信號(hào)算法,可以構(gòu)建一個(gè)穩(wěn)定的控制系統(tǒng),長(zhǎng)期監(jiān)控溫濕度數(shù)據(jù),并且得到的結(jié)果精度高。
本系統(tǒng)的軟件設(shè)計(jì)主要在Keil軟件開發(fā)環(huán)境中完成。程序主要包括處理器采集傳感器數(shù)據(jù)程序、網(wǎng)頁(yè)設(shè)置WiFi模塊、WiFi與云平臺(tái)數(shù)據(jù)透?jìng)鞒绦?。主流程如圖2所示。
圖2 系統(tǒng)主程序流程圖
系統(tǒng)啟動(dòng)后開始進(jìn)行一些初始化工作,如初始化定時(shí)器、I/O口等。
WiFi模塊的出廠地址預(yù)先輸入在瀏覽器,以網(wǎng)頁(yè)的方式完成常見的初始化工作。在提示框里輸入用戶名和密碼,進(jìn)入WiFi模塊的設(shè)置頁(yè)面,配置ESP8266的工作模式和參數(shù),使其可以接入無(wú)線網(wǎng)絡(luò),傳遞測(cè)控設(shè)備測(cè)到的數(shù)據(jù)。
(1)station模式為組件的工作模式。
(2)點(diǎn)擊“無(wú)線終端設(shè)置”功能,在“要接入的無(wú)線網(wǎng)絡(luò)名稱(SSID1)”的右側(cè)點(diǎn)擊搜索功能,搜索無(wú)線局域網(wǎng)環(huán)境,接入無(wú)線網(wǎng)絡(luò)。
(3)確保波特率為115200,把串口自動(dòng)成幀和注冊(cè)包類型均關(guān)閉,完成WiFi模塊通信中需要的串口配置要求。
STM32微控制器通過UART口與ESP8266進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)被ESP8266傳載到云平臺(tái)。設(shè)備與云平臺(tái)連接并傳遞數(shù)據(jù)的方式主要有兩種。一種是基于HTTP協(xié)議的傳遞方式,數(shù)據(jù)的類型為JASON格式,方便平臺(tái)進(jìn)行資源管理,并在與其他平臺(tái)發(fā)生數(shù)據(jù)傳遞時(shí)具備一定的優(yōu)勢(shì)。但是,這種連接是一個(gè)短連接,連接的方式限制數(shù)據(jù)的存儲(chǔ)方式。另一種是基于EDP協(xié)議的連接。這種方式的優(yōu)點(diǎn)是長(zhǎng)連接,方便底端設(shè)備上報(bào)數(shù)據(jù)。設(shè)備之間進(jìn)行透?jìng)鲿r(shí)方便快捷,使用平臺(tái)提供的數(shù)據(jù)存儲(chǔ)功能。用戶需要查詢歷史數(shù)據(jù)時(shí)只需登錄平臺(tái)就可以獲得,對(duì)設(shè)備型號(hào)沒有限制。本文設(shè)計(jì)的系統(tǒng)需要傳感器數(shù)據(jù)在云平臺(tái)進(jìn)行存儲(chǔ)并實(shí)時(shí)管理,軟件中需要實(shí)現(xiàn)的連接是EDP長(zhǎng)連接。在此基礎(chǔ)上如果用戶需要增加新的業(yè)務(wù)平臺(tái),可以利用HTTP協(xié)議提供的API對(duì)OneNET提供的資源進(jìn)行管理(如增刪查改設(shè)備、數(shù)據(jù)點(diǎn)等)。
程序開發(fā)中用到了云服務(wù)器的EDPSDK,EDP協(xié)議由此實(shí)現(xiàn),并由此上報(bào)底端設(shè)備傳遞的數(shù)據(jù)到OneNET,進(jìn)行數(shù)據(jù)的存儲(chǔ)管理。
用戶設(shè)備接入云平臺(tái)時(shí),需要按照云平臺(tái)的要求經(jīng)過以下流程:
(1)新建產(chǎn)品,并將產(chǎn)品接入?yún)f(xié)議設(shè)置為EDP;
(2)新建設(shè)備,把系統(tǒng)隨機(jī)生成的設(shè)備ID和APIkey等信息記錄下來;
(3)連接設(shè)備與云平臺(tái);
(4)創(chuàng)建數(shù)據(jù)流,實(shí)現(xiàn)數(shù)據(jù)傳遞到云平臺(tái)。
OneNET可以實(shí)現(xiàn)多種協(xié)議設(shè)備接入,如MQTT、Modbus、HTTP、EDP、TCP等協(xié)議[3],在實(shí)際應(yīng)用時(shí)可以實(shí)現(xiàn)多種應(yīng)用場(chǎng)景。
本文軟件系統(tǒng)設(shè)計(jì)中采用EDP協(xié)議打包封裝數(shù)據(jù),建立與云平臺(tái)之間的連接。實(shí)現(xiàn)系統(tǒng)接入的EDP協(xié)議是在TCP基礎(chǔ)發(fā)展起來的,在上層實(shí)現(xiàn)EDP的事務(wù)。
用戶在云平臺(tái)注冊(cè),通過在云平臺(tái)創(chuàng)建的設(shè)備id和APIkey進(jìn)行EDP協(xié)議封包,發(fā)送連接申請(qǐng)信息到云平臺(tái)。
連接云平臺(tái)時(shí)設(shè)置延時(shí)函數(shù)延時(shí)500 ms,延遲等待時(shí)間大于300 ms,否則設(shè)備連不上云平臺(tái),且短時(shí)間頻繁操作平臺(tái)發(fā)送連接請(qǐng)求對(duì)系統(tǒng)的功耗影響大,不利于系統(tǒng)低功耗的設(shè)計(jì)。
打包數(shù)據(jù)點(diǎn),將數(shù)據(jù)點(diǎn)名稱和值封裝成EDP協(xié)議規(guī)定格式,利用ESP8266設(shè)備并使用發(fā)送數(shù)據(jù)包函數(shù)發(fā)送數(shù)據(jù)包到云平臺(tái)。
系統(tǒng)的主要代碼分析如下:
連接至ONENET云平臺(tái)后,點(diǎn)擊進(jìn)入事先創(chuàng)建的設(shè)備,點(diǎn)擊接收數(shù)據(jù),傳感器的測(cè)量數(shù)據(jù)就能夠按照一定的格式顯示在云平上。在中國(guó)移動(dòng)云服務(wù)器上數(shù)據(jù)顯示界面可以自定義設(shè)置成圓盤或者柱狀形狀顯示,也可以利用API程序按照用戶的需求設(shè)置。同時(shí),平臺(tái)提供數(shù)據(jù)存儲(chǔ)接口,保存的歷史溫濕度數(shù)據(jù)可以供用戶查詢并對(duì)數(shù)據(jù)進(jìn)行統(tǒng)籌分析,如圖3所示。
圖3 云平臺(tái)實(shí)時(shí)數(shù)據(jù)圖
由測(cè)試結(jié)果可知,基于STM32和ESP8266的測(cè)控系統(tǒng)能完成將溫濕度傳感器采集數(shù)據(jù)實(shí)時(shí)上傳到云服務(wù)器平臺(tái)的任務(wù),同時(shí)可以存儲(chǔ)和管理數(shù)據(jù)。整個(gè)系統(tǒng)功耗低,數(shù)據(jù)結(jié)果準(zhǔn)確,WiFi網(wǎng)絡(luò)的容量方便擴(kuò)展功能實(shí)現(xiàn)多傳感器監(jiān)控測(cè)量,可以應(yīng)用于智能測(cè)控場(chǎng)景。