薛文輝,李仁銘,潘宇浚,鄭 何,武永華
(福建江夏學(xué)院 電子信息科學(xué)學(xué)院,福建 福州 350108)
摘 要 :為保證實(shí)驗(yàn)室人員的人身和財(cái)產(chǎn)安全,設(shè)計(jì)了實(shí)驗(yàn)室環(huán)境安全監(jiān)控系統(tǒng),系統(tǒng)由服務(wù)端、設(shè)備端、客戶端構(gòu)成。服務(wù)端可劃分為前置服務(wù)器和后置服務(wù)器 ;設(shè)備端選取 STM32F103ZET6 作為核心處理器,通過(guò)ESP8266 無(wú)線傳輸模塊實(shí)現(xiàn)溫濕度傳感器、煙霧傳感器、一氧化碳傳感器數(shù)據(jù)上傳 ;客戶端采用 Qt 實(shí)現(xiàn)系統(tǒng)用戶管理功能、實(shí)驗(yàn)室環(huán)境數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)功能、傳感器歷史數(shù)據(jù)查看功能。通過(guò)測(cè)試,在網(wǎng)絡(luò)節(jié)點(diǎn)范圍內(nèi)可以對(duì)數(shù)據(jù)進(jìn)行高效采集并傳輸至云服務(wù)器,每 30 s 對(duì)客戶端的傳感器數(shù)據(jù)進(jìn)行更新。用戶可以通過(guò)客戶端遠(yuǎn)距離查看實(shí)驗(yàn)室監(jiān)測(cè)數(shù)據(jù),能夠更加快捷地發(fā)現(xiàn)實(shí)驗(yàn)室出現(xiàn)的各種安全問(wèn)題。
中圖分類號(hào) :TP393 文獻(xiàn)標(biāo)識(shí)碼 :A 文章編號(hào) :2095-1302(2022)09-0029-03
0 引 言
近年來(lái),隨著信息管理水平的迅速提高,傳統(tǒng)的實(shí)驗(yàn)室管理模式已不能滿足實(shí)際需要 [1]。傳統(tǒng)的高校實(shí)驗(yàn)室環(huán)境監(jiān)測(cè)數(shù)據(jù)無(wú)法得到統(tǒng)一的信息化監(jiān)管,實(shí)驗(yàn)室的物理環(huán)境仍需要依靠人工管理,消耗了很多人力和物力 [2]。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,云服務(wù)器、網(wǎng)絡(luò)技術(shù)使得環(huán)境數(shù)據(jù)收集有了更好的設(shè)計(jì)方案。本文將基于云服務(wù)器、網(wǎng)絡(luò)通信技術(shù)、STM32 嵌入式技術(shù)等對(duì)實(shí)驗(yàn)室環(huán)境安全監(jiān)控系統(tǒng)進(jìn)行設(shè)計(jì)。本系統(tǒng)共分成三個(gè)模塊 :云服務(wù)端模塊、客戶端模塊、設(shè)備端模塊。云服務(wù)端可劃分為前置服務(wù)器和后置服務(wù)器 [3]。前置服務(wù)器用于對(duì)設(shè)備端、客戶端的數(shù)據(jù)進(jìn)行提取分析,后置服務(wù)器用于提取和更新 SQLite3 數(shù)據(jù)庫(kù) [4] 的內(nèi)容。設(shè)備端使用 STM32F103ZET6[5] 作為核心處理器,采用DHT11 溫濕度傳感器 [6] 采集溫濕度、MQ-2 煙霧傳感器 [7] 采集煙霧數(shù)值、MQ-7 一氧化碳傳感器 [8] 采集有毒氣體數(shù)值,通過(guò) ESP8266 無(wú)線傳輸模塊 [9] 將三個(gè)環(huán)境傳感器檢測(cè)到的實(shí)驗(yàn)室環(huán)境數(shù)據(jù)上傳??蛻舳诉\(yùn)用 Qt5.10.1 作為開(kāi)發(fā)環(huán)境實(shí)現(xiàn)系統(tǒng)用戶管理功能、環(huán)境數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)功能、傳感器歷史數(shù)據(jù)查看功能。本系統(tǒng)每 30 s 對(duì)客戶端的傳感器數(shù)據(jù)進(jìn)行實(shí)時(shí)更新,且用戶可以遠(yuǎn)距離查看實(shí)驗(yàn)室監(jiān)測(cè)數(shù)據(jù)。
1 實(shí)驗(yàn)室監(jiān)控系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)由服務(wù)端、設(shè)備端、客戶端構(gòu)成,系統(tǒng)總設(shè)計(jì)框圖如圖1所示。
本系統(tǒng)服務(wù)端是建立在云平臺(tái)的,可劃分為前置服務(wù)器和后置服務(wù)器。前置服務(wù)器 [10] 采用Epoll Socket技術(shù)、線程池技術(shù)、IPC通信技術(shù)、TCP通信技術(shù)等,用于對(duì)設(shè)備端、客戶端的數(shù)據(jù)進(jìn)行提取分析。后置服務(wù)器主要負(fù)責(zé)業(yè)務(wù)處理,用于提取和更新SQLite3數(shù)據(jù)庫(kù)內(nèi)容并實(shí)時(shí)保存。兩個(gè)子服務(wù)器之間以共享內(nèi)存作為進(jìn)程間通信工具 [11]。
本系統(tǒng)客戶端使用Qt5.10.1界面開(kāi)發(fā)軟件作為開(kāi)發(fā)環(huán)境,用于與服務(wù)器進(jìn)行通信,獲取云端服務(wù)器數(shù)據(jù)庫(kù)內(nèi)容 ;采用MVC[12] 框架實(shí)現(xiàn)登錄注冊(cè)、獲取傳感器實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)等功能。
本系統(tǒng)設(shè)備端是以 HMI 串口觸摸屏 [13] 作為主控制器,用戶可以查看 HMI 串口觸摸屏所顯示的實(shí)時(shí)傳感器數(shù)據(jù)。設(shè)備端以單片機(jī)STM32F103ZET6芯片作為中央處理器,主控制器與中央處理器之間的通信靠USART 串口完成。環(huán)境數(shù)據(jù)由DHT11溫濕度傳感器、MQ-2 煙霧傳感器、MQ-7一氧化碳傳感器監(jiān)測(cè)。無(wú)線通信系統(tǒng)由ESP8266WiFi模塊構(gòu)成。
2 系統(tǒng)服務(wù)端設(shè)計(jì)
本系統(tǒng)前置服務(wù)器負(fù)責(zé)設(shè)備端和Qt客戶端之間的TCPSocket[14] 通信。通過(guò)Epoll Socket 的I/O復(fù)用實(shí)現(xiàn)對(duì)客戶端、設(shè)備端的連接通信對(duì)應(yīng)的Socket套接字進(jìn)行保存。前置服務(wù)器封裝的線程池模塊負(fù)責(zé)對(duì)接收到的數(shù)據(jù)包進(jìn)行解析,并存入共享內(nèi)存,同時(shí)監(jiān)聽(tīng)并接收后置服務(wù)器對(duì)業(yè)務(wù)處理完畢后所寫入共享內(nèi)存的數(shù)據(jù)。
本系統(tǒng)服務(wù)器選用的IPC通信工具是共享內(nèi)存。本系統(tǒng)云服務(wù)器將共享內(nèi)存區(qū)按照結(jié)構(gòu)體大小的1000倍進(jìn)行創(chuàng)建,劃分成1000個(gè)塊結(jié)構(gòu)體,其中共享內(nèi)存首地址Shm_addr指針作為共享內(nèi)存判斷的起始點(diǎn)。本服務(wù)器會(huì)開(kāi)辟一個(gè)線程用于判斷共享內(nèi)存起始點(diǎn)內(nèi)是否為空,倘若為空則不讀取數(shù)據(jù) ;如果判斷索引內(nèi)容為有效數(shù)值,則提取出來(lái)跳入下一個(gè)結(jié)構(gòu)體塊循環(huán)執(zhí)行,直到下一個(gè)塊為空。共享內(nèi)存可以存儲(chǔ)1000個(gè)結(jié)構(gòu)體,在全部接收完畢之后會(huì)將其清空,保證下一次前置服務(wù)器和后置服務(wù)器之間的交互能夠正常運(yùn)行。共享內(nèi)存存儲(chǔ)方式如圖2所示。
本系統(tǒng)的后置服務(wù)器負(fù)責(zé)對(duì)SQLite3數(shù)據(jù)庫(kù)信息進(jìn)行提取和更新。封裝線程池對(duì)各個(gè)業(yè)務(wù)對(duì)應(yīng)的共享內(nèi)存提取數(shù)據(jù)并進(jìn)行增刪改查的操作。后置服務(wù)器結(jié)構(gòu)如圖3所示,后置服務(wù)器也會(huì)使用共享內(nèi)存與前置服務(wù)器進(jìn)行 IPC 通信。在后置服務(wù)器結(jié)束當(dāng)前對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的提取和更新后,會(huì)向前置服務(wù)器提供其所需要的內(nèi)容。前置服務(wù)器共有以下三個(gè)功能模塊 :
(1)讀取業(yè)務(wù)包 :讀取共享內(nèi)存中的業(yè)務(wù)包。
(2)業(yè)務(wù)回調(diào)函數(shù) :根據(jù)業(yè)務(wù)包的類型,進(jìn)行相應(yīng)的業(yè)務(wù)處理。
(3)數(shù)據(jù)庫(kù)函數(shù) :根據(jù)業(yè)務(wù)的需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫訪問(wèn)。
本系統(tǒng)使用的是SQLite數(shù)據(jù)庫(kù),通過(guò)后置服務(wù)器管理User_Info和Sensor_Info兩個(gè)表格。用戶在執(zhí)行登錄注冊(cè)模塊時(shí)后置服務(wù)器將會(huì)對(duì)User_Info表進(jìn)行是否存在用戶的判斷或者添加。用戶在獲取實(shí)時(shí)傳感器數(shù)據(jù)和讀取歷史傳感器數(shù)據(jù)時(shí)后置服務(wù)器將會(huì)對(duì) Sensor_Info表進(jìn)行讀取和存儲(chǔ)操作。本系統(tǒng)數(shù)據(jù)庫(kù)中關(guān)于用戶數(shù)據(jù)和傳感器數(shù)據(jù)表結(jié)構(gòu)如圖4所示。
3 系統(tǒng)設(shè)備端設(shè)計(jì)
本系統(tǒng)采用單片機(jī) STM32F103ZET6 芯片作為設(shè)備端的中央核心處理器,該芯片的兩個(gè) USART 接口分別與 HMI 電容串口觸摸屏、ATK-ESP8266 無(wú)線通信模塊連接,以完成數(shù)據(jù)的接收和發(fā)送。通過(guò) DTH11 溫濕度模塊的 Data 引腳與PB6 引腳相連,完成單片機(jī)與溫濕度模塊的檢測(cè)數(shù)據(jù)交互。
本系統(tǒng)終端節(jié)點(diǎn)硬件設(shè)計(jì)采用了DHT11模塊采集溫濕度數(shù)值、MQ-2模塊采集煙霧數(shù)值MQ-7模塊采集一氧化碳數(shù)值以及HMI 顯示屏顯示傳感器采集的環(huán)境數(shù)據(jù)。
DHT11傳感器包括電阻式濕敏元件和測(cè)溫元件,將STM32F103ZET6的PG_11引腳與 DHT11芯片的DATA引腳相連接。DHT11接3.3 V的電壓,GND接地,NC懸空。上電后,DHT11 采集數(shù)據(jù)并將數(shù)據(jù)通過(guò)DATA口進(jìn)行數(shù)據(jù)傳輸,PG_11口負(fù)責(zé)接收數(shù)據(jù),由此完成對(duì)環(huán)境溫濕度數(shù)據(jù)的采集。DHT11模塊原理如圖5所示。
本系統(tǒng)采用的MQ-2煙霧傳感器的AO引腳與STM32F103ZET6的PA_1口相連,通過(guò) STM32的ADC模數(shù)轉(zhuǎn)換測(cè)得實(shí)際值。MQ-2傳感器模塊的輸出方式分別為數(shù)字量和模擬量輸出方式。原理如圖6所示。
本系統(tǒng)采用的MQ-7一氧化碳傳感器的AO引腳與STM32F103ZET6的PA_0口相連,原理如圖7所示。
無(wú)線模塊ESP8266共有AP、STA、AP+ASP三種模式。本系統(tǒng)采用STA模式,將設(shè)備端作為單個(gè)客戶端,使用 AT指令連接手機(jī)熱點(diǎn)和云服務(wù)器,實(shí)現(xiàn)了設(shè)備端與云服務(wù)器之間的通信。本設(shè)計(jì)使用的顯示器采用的是TJC3224K024_011型HMI電容串口觸摸屏,HMI電容串口觸摸屏的RXD引腳、TXD引腳與單片機(jī)STM32F103ZET6芯片的USART2串口相連,實(shí)現(xiàn)了單片機(jī)與 HMI 顯示屏的數(shù)據(jù)通信。
4 系統(tǒng)客戶端設(shè)計(jì)
本系統(tǒng)客戶端是查看傳感器采集信息的應(yīng)用程序,采用MVC框架,使用Qt、C++語(yǔ)言編寫。
4.1 Qt 登錄注冊(cè)功能模塊
本系統(tǒng)客戶端登錄注冊(cè)功能是對(duì)數(shù)據(jù)庫(kù)的User_info表進(jìn)行操作,User_inf表結(jié)構(gòu)見(jiàn)表1所列。
當(dāng)點(diǎn)擊登錄的時(shí)候,客戶端會(huì)發(fā)送此時(shí)所輸入的登錄賬號(hào)和密碼給服務(wù)器,服務(wù)器通過(guò)與服務(wù)器內(nèi)部的 User_info表進(jìn)行比對(duì),若查詢到相同的結(jié)構(gòu),說(shuō)明此用戶是存在的,則同意該客戶端進(jìn)行登錄。
4.2 Qt 傳感器數(shù)據(jù)查詢顯示模塊
本系統(tǒng)客戶端傳感器數(shù)據(jù)查詢共分為兩個(gè)功能模塊 :(1)用Qlabel類顯示接收到的傳感器監(jiān)測(cè)的實(shí)時(shí)數(shù)據(jù) ;(2)通過(guò)QListWidget和QListWidgetItem的配合實(shí)現(xiàn)傳感器監(jiān)測(cè)的歷史數(shù)據(jù)的查看功能。用戶可以選擇日期并查看當(dāng)天所記錄的數(shù)據(jù)。本功能是對(duì)數(shù)據(jù)庫(kù)的 SenSor_Num 表進(jìn)行操作,SenSor_Num 表格式見(jiàn)表2所列。
當(dāng)?shù)卿洺晒?,客戶端?huì)收到來(lái)自服務(wù)器的當(dāng)前傳感器數(shù)據(jù)顯示包;并且每30s就會(huì)再次收到傳感器數(shù)據(jù)包更新后客戶端界面顯示的數(shù)據(jù)內(nèi)容,同時(shí)會(huì)把這些數(shù)據(jù)存入數(shù)據(jù)庫(kù),以實(shí)現(xiàn)客戶端歷史數(shù)據(jù)查看功能。
5 系統(tǒng)設(shè)計(jì)調(diào)試
5.1 硬件測(cè)試
將DHT11模塊、MQ-7模塊、MQ-2模塊分別與STM32F103ZET6的PG_11、PA_1、PA_0 連接,使用FlyMCU 完成程序調(diào)試和下載后,給模組上電。通過(guò)HMI模塊顯示屏可看到各項(xiàng)測(cè)試結(jié)果分別如圖8、圖9、圖10所示。
5.2 軟件測(cè)試
當(dāng)用戶選擇查看日期時(shí),前置服務(wù)器會(huì)收到數(shù)據(jù)包并進(jìn)行解析。如圖 11(a)所示,前置服務(wù)器顯示用戶想要查看的日期為2021年4月13號(hào)當(dāng)天所采集的傳感器數(shù)據(jù)信息 ;將此信息寫入共享內(nèi)存,供后置服務(wù)器讀取該結(jié)構(gòu)體信息 ;在后置服務(wù)器完成一系列操作后,將會(huì)收到關(guān)于后置服務(wù)器提取數(shù)據(jù)庫(kù)信息的結(jié)果。
用戶選擇查看日期后后置服務(wù)器提取共享內(nèi)存數(shù)據(jù)并進(jìn)行解析。如圖11(b)所示,后置服務(wù)器會(huì)根據(jù)收到的日期對(duì)數(shù)據(jù)庫(kù)進(jìn)行一一搜索,將搜索到的信息存入鏈表并逐一發(fā)給前置服務(wù)器 ;再由前置服務(wù)器從共享內(nèi)存提取結(jié)構(gòu)體數(shù)據(jù)包,并將歷史記錄數(shù)據(jù)包發(fā)往客戶端。
6 結(jié) 語(yǔ)
本文設(shè)計(jì)了基于STM32的實(shí)驗(yàn)室環(huán)境安全監(jiān)控系統(tǒng),實(shí)現(xiàn)了通過(guò)傳感器采集數(shù)據(jù)并通過(guò) ESP8266 模塊發(fā)送至云服務(wù)器,用戶通過(guò)登錄客戶端可以查看現(xiàn)場(chǎng)數(shù)據(jù)。本設(shè)計(jì)主要實(shí)現(xiàn)如下功能 :(1) ESP8266 與 Epoll Socket 服務(wù)器交互通信 ;(2)Windows Qt 客戶端與 Epoll Socket 服務(wù)器交互通信 ;(3)云前置服務(wù)器與后置服務(wù)器 IPC 通信 ;(4)后置服務(wù)器對(duì)數(shù)據(jù)庫(kù)的提取和更新 ;(5)DHT11 溫濕度傳感器、MQ-7一氧化碳傳感器、MQ-2煙霧傳感器的數(shù)值采集 ;(6)Qt 客戶端用戶登錄注冊(cè)功能、Qt 客戶端傳感器數(shù)據(jù)和歷史數(shù)據(jù)查看功能。
經(jīng)過(guò)測(cè)試,結(jié)果表明本文設(shè)計(jì)的基于STM32的實(shí)驗(yàn)室環(huán)境安全監(jiān)控系統(tǒng)基本實(shí)現(xiàn)了以上功能 ;在網(wǎng)絡(luò)節(jié)點(diǎn)范圍內(nèi)可以對(duì)數(shù)據(jù)進(jìn)行高效采集并傳輸至云服務(wù)器,每 30 s 對(duì)客戶端的傳感器數(shù)據(jù)進(jìn)行更新。用戶能夠及時(shí)地發(fā)現(xiàn)實(shí)驗(yàn)室可能出現(xiàn)的各種安全問(wèn)題。
參考文獻(xiàn)
[1] 張松,陳志剛,金亮 . 開(kāi)放實(shí)驗(yàn)室管理系統(tǒng)設(shè)計(jì)方案比較及實(shí)現(xiàn)
[J]. 計(jì)算機(jī)工程與應(yīng)用,2004,44(3):230-232.
[2] 郭敏 . 忻州職業(yè)技術(shù)學(xué)院實(shí)驗(yàn)室管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [D]. 大連:
大連理工大學(xué),2018:12-15.
[3] 王軍艦 . 開(kāi)放實(shí)驗(yàn)室智能監(jiān)控系統(tǒng)設(shè)計(jì) [D]. 武漢:湖北工業(yè)大學(xué),2016:20-23.
[4] 吳玉強(qiáng),王旭 . 基于 SQLite3 的 Android 手機(jī)數(shù)據(jù)恢復(fù)技術(shù)研究[J]. 電腦知識(shí)與技術(shù),2019,15(27):6-9.
[5] 鄭才國(guó),江劍 . 基于 STM32 單片機(jī)智能小車設(shè)計(jì) [J]. 工業(yè)控制計(jì)算機(jī),2021,34(9):143-144.
[6] 羅潛,廖文浩,柳暢 . 基于 STC89C52 單片機(jī)的車內(nèi)溫濕度智能監(jiān)控系統(tǒng) [J]. 儀器儀表用戶,2021,28(9):34-37.
[7] 謝永超,楊利,嚴(yán)俊 . 基于 MQ-2 型傳感器的煙霧探測(cè)報(bào)警器的設(shè)計(jì) [J]. 計(jì)算機(jī)測(cè)量與控制,2021,29(8):255-259.
[8] 李花,姜維,劉曉東,等 . 基于 MQ7 傳感器測(cè)量 CO 濃度補(bǔ)償方法與實(shí)驗(yàn)研究 [J]. 大連交通大學(xué)學(xué)報(bào),2020,41(5):62-66.
[9] 劉西閣 . 基于 ESP8266 的智能門鎖控制器設(shè)計(jì) [J]. 電子技術(shù)與軟件工程,2021,10(17):93-95.
[10] 段翰聰,盧顯良,宋杰 . 基于 EPOLL 的單進(jìn)程事件驅(qū)動(dòng)通信服務(wù)器設(shè)計(jì)與分析 [J]. 計(jì)算機(jī)應(yīng)用,2004,24(10):36-39.
[11] 胡萍,陳志鵬 . 基于線程池的高性能服務(wù)器軟件的設(shè)計(jì)和實(shí)現(xiàn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(8):49-50.
[12] 張屹峰 . 基于 MVC 框架的 WEB 系統(tǒng)項(xiàng)目的設(shè)計(jì)研究 [J]. 電子世界,2021,43(17):53-54.
[13] 李梁京,張雪芹,劉華波 . 基于 USART-HMI 智能串口屏的節(jié)能恒溫控制系統(tǒng)設(shè)計(jì) [J]. 制造業(yè)自動(dòng)化,2021,43(9):140-143.
[14] 龔成瑩,何輝,蘭聰花,等 . 儀表程控異步 Socket 通信方法研究[J]. 電氣自動(dòng)化,2019,41(2):14-17.
編輯:黃飛
?
評(píng)論