丁 濤,劉祥吉
(延安大學化學與化工學院,陜西 延安 716000)
實驗室是科學技術發展的搖籃,許多試驗都要求在嚴格的環境下完成,而溫濕度是實驗室的基本環境條件之一[1]。它影響著試驗數據是否準確、試驗設備能否正常運行。傳統的溫濕度監控系統一般采用臺式機作為監控終端,需要在指定的地點以及專用網絡設備的支持下對目標環境進行監控,大大限制了監控系統的應用范圍和靈活性[2-3]。
本文設計的實驗室溫濕度及有害氣體監控系統,采用了能夠校準輸出信號的溫濕度復合傳感器DHT21。該傳感器具有單總線接口輸出數字信號以及精度高、價格低、外圍元件少、使用方便等優點,傳輸距離約為20 m。本系統采用WiFi模塊ESP8266進行組網,并與互聯網中的遠程服務器進行連接。只要能上網(有線或無線),該系統就能對現場環境進行實時監控,因而擴大了監控范圍。
本文設計的實驗室溫濕度及有害氣體監控系統分為溫濕度采集器、云服務器、手機應用程序(application,APP)或計算機監控端3個部分。監控系統拓撲圖如圖1所示。監控系統利用物聯網特性,對溫濕度采集器進行聯網監控。

圖1 監控系統拓撲圖
由圖1可知:溫濕度采集器連接網絡使用的是目前較為成熟的無線組網技術,其具有組網簡單、設備成本低、布線少等特點。溫濕度采集器使用預設程序,將采集到的溫濕度數據上傳到云服務器中進行數據處理、存儲,并轉發至手機APP,或在計算機監控端進行顯示。
1.2.1DHT21傳感器
DHT21是溫濕度復合傳感器,由存儲在一次性可編程(one time programmable,OTP)內存的校準系數對測量數據進行校準,并以單總線的方式輸出數字信號。其溫度的量程為-40~+80 ℃,分辨率達0.1 ℃,精度為±1 ℃;濕度的分辨率為0.1%,精度受溫度影響較大,在25 ℃時為±3%RH,0~50 ℃時為±5%RH。它們的輸出數字分辨率都為16 bit。只有單片機ESP8266 對DHT21采樣的周期間隔大于1.7 s時,才能得到正確的數值。DHT21與ESP8266連接電路如圖2所示,連接引腳為GPIO5。

圖2 連接電路圖
1.2.2有害氣體檢測傳感器
有害氣體檢測傳感器MQ-7使用氣敏材料 SnO2。該傳感器工作原理為空氣中CO濃度的增加使其電導率增大,故可通過高低溫循環檢測方式檢測CO。MQ-7可以用于檢測多種含有CO的氣體,如煤氣等,因此廣泛應用于工業、家庭氣體泄漏報警裝置中。其加熱功耗小于350 mW,加熱電壓為5.0 V±0.2 V(高溫時)、1.5 V±0.1 V(低溫時),靈敏度大于5,能檢測濃度范圍在12.5~1 250 g/L的CO。MQ-7電路原理如圖3所示。其與ESP8266連接的引腳為GPIO13(軟件上為引腳7)。

圖3 MQ-7電路原理圖
在測量前,應預加熱5 min,否則數據不準確。當輸出值為1時,表示CO濃度正常;當輸出值為0時,表示CO濃度異常。在軟件上觸發下降沿事件,發送報警命令至服務器告知相關人員,并控制報警器進行報警。
1.2.3溫濕度及有害氣體報警模塊
本設計采用的聲光報警器,其具體參數為:工作電壓220 V,功率1~3 W,音量90 dB,工作濕度范圍10%~90%。ESP8266的引腳GPIO15(軟件引腳8)通過繼電器與報警器連接來控制報警器啟停。當其引腳GPIO15輸出1時,繼電器關閉,報警器也關閉;當其引腳GPIO15輸出0時,繼電器開啟,報警器開始報警。
1.2.4采集器顯示模塊
由于ESP8266的引腳資源有限,所以采用顯示屏模塊SSD1306。在使用中,其只需2根電線就能實現與單片機的通信,減少了對單片機的引腳使用。該模塊工作電壓范圍為3.3~5 V,使用的是標準I2C總線協議,大小為0.96英寸(1英寸=25.4 mm),分辨率為128×64。ESP8266的GPIO14與顯示模塊的SDA引腳連接,GPIO12與顯示模塊的SCL引腳連接。
1.2.5采集器硬件結構
溫濕度采集器硬件結構框圖如圖4所示。

圖4 硬件結構框圖
首先,由ESP8266芯片讀取DHT21測得的實驗室溫濕度值,并將其顯示在OLED顯示屏上;然后,通過無線通信,將數據傳送至遠程服務器,進行存儲、計算、分析;最后,轉發至監控端APP。
根據前文介紹,設計制作了電路板和外殼。該電路板使用5 V的電源,并采用USB供電。電路板由OLED顯示模塊、開關按鈕、MICO電源接口、DHT21溫濕度傳感器、ESP8266芯片、5 V轉3.3 V電源模塊以及MQ-7氣體傳感器組成。
軟件部分使用Lua腳本語言編寫,并采用模塊化設計。根據系統功能,軟件劃分為主程序、采集器配網程序、溫濕度采集程序、溫濕度顯示程序、有害氣體濃度檢測程序等。
溫濕度采集器的軟件流程如圖5所示。

圖5 軟件流程圖
系統開機后,先檢測其是否能連接WiFi網絡。如不能開啟APP配網模式,則需等待網絡連接成功后開啟MQTT客戶端;讀取溫濕度后,將數據送往顯示器,并上傳服務器。系統未連接網絡時,將數據存儲在Flash中,等待網絡連接后再全部上傳。
服務器程序主要完成對采集器的認證,并實現數據的接收、處理、存儲與轉發等功能。該程序采用Node.js編程語言編寫。
本服務器程序分為HTTP服務器和MQTT服務器2部分,監控系統在APP實時采集數據時采用MQTT通信協議,溫濕度數據的歷史查詢采用HTTP協議傳輸至APP客戶端。在HTTP服務器中,采用RESTful API標準接口進行設計,并使用JSON Web Token技術對用戶身份驗證并授權。在MQTT服務器中,采用了權限控制技術,使采集器和APP客戶端需輸入用戶名和密碼進行連接,并對發布及訂閱進行了權限限制,使其在允許的權限內運行,保證了通信的安全、可靠[4-6]。
安卓APP監控端通過API Cloud移動應用開發平臺,采用HTML/CSS和JavaScript等Web技術進行編碼,并且在云端進行編譯,生成APK應用文件,降低了用戶在本地搭建編譯環境的難度。其具有與原生APP一樣的流暢度,且能跨平臺。該APP監控端的主要界面列表如表1所示。

表1 APP監控端主要界面列表
根據該系統HTTP服務器的RESTful API以及MQTT服務器權限要求,設計了設備監控界面、數據查詢界面、個人用戶界面等,實現了APP實時監控。其采集間隔為10 s。監控一段時間后,發現其溫濕度數據變化較小,幾乎無變化。
通過對實驗室內的溫濕度及有害氣體測量,驗證了本文設計的系統基本實現了對溫濕度設備上傳的數據的實時監測,并可按條件查詢數據庫中已經存儲的溫濕度數值,達到了預期效果。
此外,該系統還可實現設備分組管理,并對設備進行批量監控,同時可為用戶配置網絡。
其發送的JSON數據格式為:
{
"cmd":"sta",
"data":{
"ssid":"wifi name",
"pwd":"wifi password"
}
}
JSON數據中,cmd字段為采集器要執行的命令,data字段為WiFi賬號信息數據。
該監控系統除了聲光報警器外,還具有短信報警、APP報警等功能。當氣體濃度不正常、溫濕度值高于或低于預設報警值時,溫濕度采集器將會啟動聲光報警器進行報警,并將報警信號上傳至服務器;服務器根據預設程序對其進行判斷處理,下發報警消息至APP客戶端,并發送報警短信[7-12]。
本文設計的溫濕度及有害氣體監控系統報警流程如圖6所示。

圖6 監控系統報警流程圖
本文基于云服務器、物聯網及大數據等背景,通過對智能化監控系統的研究,實現了對溫濕度及有害氣體監控系統的實時監控、歷史數據查詢等基本功能。
此監控系統具有結構簡單、性價比高、易于實現、監控方便等特點[3],實現了設備與用戶的綁定、設備列表顯示、設備實時數據顯示、設備數據存儲、設備歷史數據查詢、設備異常數據報警、用戶注冊、用戶登錄等諸多功能,解決了大數據存儲問題。該監控系統在智能家居、農業情況監測、污水監測等方面具有廣闊的應用前景。
參考文獻:
[1] 劉軍良.WiFi技術在溫濕度遠程監測系統中的應用[J].自動化儀表,2014,35(6):79-82.
[2] 李佳毅,徐曉輝,蘇彥莽,等.基于 Android 平臺的智能溫室視頻無線監控系統[J].農機化研究,2013,35(8):188-191.
[3] 楊鵬,史旺旺,沈楚焱.預裝式變電站溫濕度煙霧WSN傳感器節點設計[J].自動化儀表,2013,34(3):38-40.
[4] 姜濤,王學文,馬家威,等.基于ZigBee和APP技術的智能公交系統及優化設計[J].自動化儀表,2015,36(12):31-35.
[5] 丁函,羅軍,陸文駿,等.智能家居控制APP系統的設計與實現[J].計算機技術與發展,2017,27(1):121-125.
[6] 王艷萍,遲宗濤.基于手機APP的遠程家電控制系統設計[J].單片機與嵌入式系統應用,2017,17 (1):73-75.
[7] 張勇軍,熊慶國.面向溫室集群的環境無線監控系統設計[J].自動化與儀表,2015,30(3):27-30.
[8] 黃雷,文國軍,張奧東.基于Web的非開挖鉆機遠程監控系統[J].自動化儀表,2016,37(4):82-85.
[9] 余湧,馬婭婕,彭攀來,等.一種遠程監控報警系統的設計[J].自動化儀表,2016,37(6):62-65.
[10]趙陽,高強.基于Web遠程監控系統的設計實現[J].自動化儀表,2015,36(1):31-36.
[11]鄧昀,李朝慶,程小輝.基于物聯網的智能家居遠程無線監控系統設計[J].計算機應用,2017,37(1):159-165.
[12]戴宇培,張鈺,劉云飛.智能家居和樓宇的實時監控系統設計[J].單片機與嵌入式系統應用,2017,17(2):49-52.