俞 聰,范 恩,俞哲彤,邱云明,胡珂立
(1.紹興文理學院,浙江 紹興 312000;2.深圳大學 物理與光電工程學院,廣東 深圳 518060)
利用物聯(lián)網(wǎng)技術對監(jiān)視環(huán)境中的物理量精確感知,并對數(shù)據(jù)進行智能處理和可靠傳輸已成為一種重要的監(jiān)測手段[1-4]。在硬件方面,傳感器技術能夠為物聯(lián)網(wǎng)提供便利的數(shù)據(jù)采集條件[5]。在軟件方面,Android技術和Web技術能夠為物聯(lián)網(wǎng)提供便捷的編程方式、良好的用戶交互界面以及豐富的數(shù)據(jù)展現(xiàn)方式[6]。因此,物聯(lián)網(wǎng)系統(tǒng)被廣泛應用于不同領域。目前,大多數(shù)物聯(lián)網(wǎng)系統(tǒng)搭建成本較高,擴展性有待提高,且主要面向大平臺。面向小用戶、低成本的物聯(lián)網(wǎng)平臺技術仍十分缺乏[7]。
在實際環(huán)境監(jiān)測中,對溫濕度的實時測量和調(diào)控非常重要[8-10]。然而,應用場景種類多、測量范圍廣、數(shù)據(jù)采集量大、實時性要求高,為傳統(tǒng)的人工監(jiān)測帶來一定困難。傳統(tǒng)人工測量主要利用傳感器采集數(shù)據(jù),采用人工分析,導致人力成本居高不下,同時,人工分析具有明顯的滯后性,無法滿足實時性要求較高的監(jiān)測領域。雖然大型應用系統(tǒng)會采用物聯(lián)網(wǎng)技術實現(xiàn)數(shù)據(jù)的采集、分析與監(jiān)測,但搭建成本較高,使其應用范圍受到很大約束??紤]到CC2530單片機在搭建傳感網(wǎng)絡方面的優(yōu)勢以及傳感器模塊成本低、數(shù)據(jù)采集方便等優(yōu)點,選擇利用傳感器模塊和CC2530單片機搭建物聯(lián)網(wǎng)監(jiān)測平臺[11]。此外,考慮到Android智能手機的便攜性、可編程性及良好的用戶界面,以及Web程序的低成本、可操作性強等特點,因此借助Android端、Web端實現(xiàn)監(jiān)測數(shù)據(jù)在無線平臺和有線平臺的可視化監(jiān)測[12-14]。
本文開發(fā)了一套基于Android和Web平臺的溫濕度云端監(jiān)測系統(tǒng)。該系統(tǒng)首先利用搭載DHT11模塊的CC2530單片機實時采集溫濕度數(shù)據(jù),同時通過串口將監(jiān)測數(shù)據(jù)發(fā)送至PC主機;然后在PC端編寫串口接收函數(shù)解析數(shù)據(jù),并上傳至云端MySQL數(shù)據(jù)庫;最后,利用所開發(fā)的Android程序和Web程序通過請求本地Apache服務器獲取云數(shù)據(jù)庫溫濕度數(shù)據(jù),分別在Android端和Web端繪制曲線。通過實測實驗,本系統(tǒng)能夠?qū)崿F(xiàn)監(jiān)測環(huán)境溫濕度數(shù)據(jù)的實時采集以及多樣化動態(tài)圖表顯示,同時能夠?qū)崿F(xiàn)在不同時段對圖表的主動或被動更新,提高數(shù)據(jù)采集和分析效率。
為了降低溫濕度測量成本,減輕測量人員的監(jiān)測負擔,系統(tǒng)將自動完成監(jiān)測環(huán)境的溫濕度測量與數(shù)據(jù)傳輸,并通過Android平臺與Web瀏覽器實現(xiàn)無線環(huán)境和有線環(huán)境的溫濕度實時監(jiān)測。本系統(tǒng)主要包括以下功能:
(1)利用DHT11溫濕度傳感器實時采集溫濕度數(shù)據(jù),并通過串口發(fā)送至PC主機;
(2)通過Java程序編寫串口數(shù)據(jù)接收窗體,同時將溫濕度數(shù)據(jù)上傳至云端MySQL數(shù)據(jù)庫;
(3)本地上傳的數(shù)據(jù)由云端MySQL數(shù)據(jù)庫存儲;
(4)Android APP程序通過請求本地的Apache服務器獲取云數(shù)據(jù)庫中的溫濕度數(shù)據(jù),通過動態(tài)曲線實時顯示溫濕度變化情況;
(5)Web瀏覽器通過請求本地Apache服務器獲取云端數(shù)據(jù)后,在瀏覽器中以動態(tài)曲線的形式實時顯示溫濕度變化情況。
如圖1所示,系統(tǒng)的搭建主要由6部分組成。
圖1 系統(tǒng)功能架構(gòu)
(1)搭載傳感器模塊的CC2530單片機:該單片機采用C語言編程,使用IAR Systems公司開發(fā)的IAR作為嵌入式開發(fā)的編輯器,具有開發(fā)套件齊全且調(diào)試方便等優(yōu)勢。
(2)PC串口接收窗體程序:使用Java語言編寫,采用IntelliJ IDEA作為代碼編輯器。
(3)騰訊云平臺MySQL數(shù)據(jù)庫:配合Navicat作為數(shù)據(jù)管理工具,成本低廉且管理方便。
(4)Apache本地服務器:作為中間代理,部署方便,后臺使用PHP編程,編譯器為Visual Studio Code,負責編寫API數(shù)據(jù)調(diào)用接口。
(5)Android端APP:采用Android Studio作為開發(fā)工具,以Java作為開發(fā)語言。
(6)Web端程序:采用HTML+JS+CSS的形式,使用Visual Studio Code開發(fā)。
為提高監(jiān)測平臺的擴展性,數(shù)據(jù)表除了設計溫濕度字段外,還預留了空氣質(zhì)量字段,如圖2所示。此外,還可以根據(jù)實際需求添加一些需要輔助測量的數(shù)據(jù)字段,配合相關傳感器。通過數(shù)據(jù)庫能夠?qū)崿F(xiàn)采集數(shù)據(jù)的實時存儲與管理,滿足平臺后期的擴展需求。
圖2 系統(tǒng)數(shù)據(jù)庫設計
2.3.1 數(shù)據(jù)采集
考慮到CC2530單片機成本低、擴展性好,故采用單片機搭建測量平臺。該平臺利用DHT11采集溫濕度數(shù)據(jù),傳感器配合CC2530單片機每5 s測量1次。然后,測量的溫濕度數(shù)據(jù)通過串口發(fā)送至PC端。
2.3.2 串口接收
在傳感器獲取數(shù)據(jù)后,通過串口將數(shù)據(jù)發(fā)送至PC端,在PC端使用Java編寫的串口接收窗體函數(shù)接收數(shù)據(jù)。當窗體程序接收到數(shù)據(jù)時,窗體函數(shù)可以實時顯示溫濕度數(shù)據(jù),同時,窗體程序能夠在后臺對接收的數(shù)據(jù)采用正則表達式進行清理和選取,并上傳至騰訊云端MySQL數(shù)據(jù)庫,實現(xiàn)實時存儲。此外,該程序還預留了接口,可以連接本地數(shù)據(jù)庫,并將數(shù)據(jù)存儲在本地MySQL中。
2.3.3 本地服務器
由于Apache服務器部署方便、運行穩(wěn)定,系統(tǒng)的本地服務器以其為基礎進行布署。為了便于開發(fā),選擇XAMPP集成開發(fā)環(huán)境。圖3為服務器8080端口開啟狀態(tài)。服務器端程序采用PHP開發(fā),主要負責從云端MySQL數(shù)據(jù)庫獲取溫濕度數(shù)據(jù),再將其封裝成JSON格式的數(shù)據(jù),編寫API接口,方便Web瀏覽器或者Android客戶端通過訪問獲取數(shù)據(jù)。
圖3 服務器端口開啟狀態(tài)
2.3.4 Android端溫濕度實時監(jiān)控
Android客戶端通過第三方網(wǎng)絡通信框架Okhttp在局域網(wǎng)內(nèi)請求本地Apache服務器的API接口,并從接口中獲取JSON格式的數(shù)據(jù);成功獲取數(shù)據(jù)后,在后臺完成解析和匹配,并通過Android第三方圖表庫MPAndroidChart繪制溫濕度折線圖。圖4所示為APP的初始化狀態(tài)。
圖4 Android溫濕度監(jiān)控初始化
2.3.5 Web端溫濕度實時監(jiān)控
Web端程序采用HTML+CSS+JS實現(xiàn)頁面設計,JS使用JQuery庫編寫Ajax,請求本地Apache服務器上的JSON數(shù)據(jù)。訪問機制與Android端相似,數(shù)據(jù)來源于云端數(shù)據(jù)庫。采用JS圖表繪制庫HighCharts繪制折線圖,折線圖每秒自動刷新一次。Web端程序的初始狀態(tài)如圖5所示。
圖5 Web溫濕度監(jiān)控初始化
完成物聯(lián)網(wǎng)平臺搭建后,將單片機控制程序燒錄至節(jié)點板;接通電源后,溫濕度采集節(jié)點開始采集數(shù)據(jù),并向PC端程序發(fā)送采集的實時溫濕度數(shù)據(jù);同時,在PC端運行Java串口接收窗體程序,在窗體中可以顯示發(fā)送的溫濕度數(shù)據(jù),如圖6所示;最后,通過該程序后臺將數(shù)據(jù)上傳至云端MySQL數(shù)據(jù)庫。
圖6 串口數(shù)據(jù)接收測試結(jié)果
Android端APP是本系統(tǒng)的數(shù)據(jù)可視化模塊之一。在手機安裝該程序,與本地服務器處于同一局域網(wǎng)內(nèi),打開APP后就可以向本地Apache服務器請求溫濕度數(shù)據(jù),并完成解析,同時將相關圖表呈現(xiàn)在屏幕上。如圖7所示,用戶點擊屏幕就可以刷新當前數(shù)據(jù),數(shù)據(jù)自動更新設定周期為5 s/次。
圖7 APP數(shù)據(jù)獲取結(jié)果
Web端監(jiān)控程序是本系統(tǒng)數(shù)據(jù)可視化模塊的另一部分。在同一局域網(wǎng)內(nèi),瀏覽器向服務器發(fā)起Ajax請求獲取數(shù)據(jù);完成數(shù)據(jù)解析后,在瀏覽器中以動態(tài)折線圖的形式顯示。數(shù)據(jù)自動更新周期設定為1 s/次。網(wǎng)頁端監(jiān)控只需運行HTML頁面即可實現(xiàn)實時監(jiān)控。服務器返回數(shù)據(jù)結(jié)果如圖8所示,Web數(shù)據(jù)獲取結(jié)果如圖9所示。
圖8 服務器返回數(shù)據(jù)結(jié)果
圖9 Web數(shù)據(jù)獲取結(jié)果
溫濕度數(shù)據(jù)是環(huán)境監(jiān)測應用中的重要參數(shù)??紤]到傳統(tǒng)人工監(jiān)測方式難以做到環(huán)境的實時監(jiān)測和數(shù)據(jù)的可視化,使得數(shù)據(jù)分析存在一定的滯后性;且隨著數(shù)據(jù)量的增大,數(shù)據(jù)管理十分困難。為此,本系統(tǒng)根據(jù)實際需求,開發(fā)了一套基于多平臺的溫濕度云端監(jiān)測系統(tǒng)。該系統(tǒng)利用硬件實現(xiàn)對溫濕度的實時采集,利用軟件實現(xiàn)數(shù)據(jù)的存儲和可視化。硬件部分采用搭載DHT11溫濕度傳感器的CC2530單片機采集溫濕度數(shù)據(jù),通過串口發(fā)送至PC主機監(jiān)測程序,監(jiān)測程序接收數(shù)據(jù)后上傳至云端MySQL數(shù)據(jù)庫。對于云端數(shù)據(jù),可以分別通過Android APP與Web程序訪問本地Apache服務器,從而實現(xiàn)Android端、Web端的數(shù)據(jù)實時訪問,并通過折線圖動態(tài)顯示,以方便用戶對數(shù)據(jù)進行分析。因此,本文開發(fā)的溫濕度監(jiān)測系統(tǒng)在環(huán)境監(jiān)測中具有一定的應用價值和借鑒意義。同時,由于CC2530單片機良好的網(wǎng)絡搭建能力以及MySQL數(shù)據(jù)庫友好的操作方式,使得該系統(tǒng)具有良好的可拓展性。