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