楊駿 梁念渝 鄧力夫



摘? 要:針對戶外實訓基地分布分散、有線網絡鋪設困難等問題,設計一套監控系統。將樹莓派4B+作為數據采集端主控核心,用以采集攝像頭、DTH11溫濕度傳感器、MQ-2煙霧傳感器、YL-38火焰傳感器等模塊的數據,并通過MW600GQ工業級5G模塊傳輸數據至后臺服務器。系統基于Python編程語言,使用OpenCV、RPi.GPIO、Adafruit_DHT、Socket等庫函數和Flask輕量級應用框架開發數據采集端程序和后臺服務器程序,在客戶端可以通過網頁實時監控實訓基地狀況,當發生異常狀況時,以郵件方式主動發送報警信息。
關鍵詞:樹莓派;5G;Python;在線狀態監控
中圖分類號:TP277? 文獻標識碼:A? 文章編號:2096-4706(2023)17-0164-04
Design of Outdoor Practical Training Base Monitoring System Based on “Raspberry Pi+5G+Python”
YANG Jun1, LIANG Nianyu2, DENG Lifu1
(1.Qiandongnan Nationalities Polytechnic, Kaili? 556000, China; 2.Qiandongnan Technician College, Kaili? 556099, China)
Abstract: Aiming at the problems of the outdoor practical training bases are distributed and the difficulty in laying the wired network, a monitoring system is designed. The Raspberry Pi 4B+ is used as the main control core of the data acquisition terminal to collect data from the camera, DTH11 temperature and humidity sensor, MQ-2 smoke sensor, and YL-38 flame sensor, and the MW600GQ industrial-grade 5G module is used to transmit the data to the background server. Based on Python programming language, using OpenCV, RPi.GPIO, Adafruit_DHT, Socket and other library functions, the Flask lightweight application framework to develop data collection end programs and background server programs. The client can monitor the status of the practical training base in real time through the web page, and actively send the alarm information by email when abnormal conditions occur.
Keywords: Raspberry Pi; 5G; Python; online status monitoring
0? 引? 言
近年來,隨著物聯網技術的不斷發展和對實訓基地運行安全要求的不斷提升,利用信息化手段進行監控成為保障實訓基地安全的重要手段之一[1]。目前,針對樓宇內實訓室的監控系統已經發展得很成熟了,但是對于一些戶外實訓基地,由于其分布相對零散,鋪設有線網絡成本高,4G技術難以滿足大數據實時傳輸要求,使得這類實訓基地的狀態監控成為盲區,一旦發生有害氣體泄漏或者火災的情況,將會造成嚴重的損失。因此,本文將戶外實訓基地作為應用場景,設計一種適合在沒有有線網絡的環境下使用的監控系統,可以實時監控戶外實訓基地的運行狀態,同時將異常狀態主動發送報警信息,保證實訓基地的運行安全。
1? 系統設計方案
本系統分為硬件部分和軟件部分,硬件部分主要由數據采集端的傳感模塊、主控模塊、通信模塊組成;軟件部分由數據采集端程序和后臺服務器程序組成。數據采集端程序實現傳感器數據采集和傳輸,后臺服務器程序實現實時數據接收和存儲,并實現客戶端的Web訪問功能。系統總體設計如圖1所示。
2? 硬件設計
本系統將采集包含攝像頭圖像數據在內的多種傳感器數據,而數據處理和傳輸對主控芯片的處理速度要求很高,且必須具備豐富的接口便于設備連接,因此選用樹莓派作為數據采集端主控核心[2],同時利用5G無線通信模塊將數據傳輸至后臺服務器[3]。
2.1? 主控模塊
樹莓派外形只有信用卡大小,卻具有電腦的所有基本功能,被稱為卡片式電腦。由于其性能強大,外形小巧,拓展性豐富,受到眾多嵌入式開發者和創客的青睞。本系統選用的樹莓派4B+搭載的是ARM Cortex-A72四核64位1.5 GHz芯片,micro-HDMI端口支持4K分辨率的雙屏顯示,支持4Kp60的硬件視頻解碼,4 GB的RAM,雙頻2.4/5.0 GHz無線局域網,藍牙5.0,千兆以太網,USB 3.0和PoE功能,同時還提供了40-pin的GPIO接口,便于功能自定義擴展。在操作系統上,除了支持專為樹莓派打造的基于Debian開發的Raspbian操作系統外,還支持Ubuntu MATE、Arch Linux ARM、Windows 10 IoT等,可以運行C、Java、Python等多種編程語言環境,為編程開發提供了便利。樹莓派4B+的實物圖如圖2所示。
2.2? 通信模塊
MW600GQ工業級5G無線通信模塊支持5G-NR SA/NSA,兼容4G LTE網絡,全網通,模塊提供千兆自適應以太網接口、TypeC USB接口、UART數據接口,提供網卡、路由和網橋3種工作模式,MW600GQ的實物圖如圖3所示。支持USB/串口使用標準AT指令控制該模塊,支持TCP/UDP及透傳模式/Buffer模式,通過撥號客戶端CMTools可以對模塊進行配置,支持OpenCPU更新程序,可以使用移遠通信開發的QFlash工具來升級固件,實現MQTT、DMZ主機、端口轉發、Web管理和LAN AT等功能。
2.3? 傳感模塊
實訓基地的安全問題,主要集中在有害氣體泄露和火災等方面,因此選用攝像頭、溫濕度傳感器、火焰傳感器和煙霧傳感器采集環境數據。樹莓派兼容CSI和USB兩種接口攝像頭,本系統使用500萬像素的樹莓派CSI視頻接口攝像頭;使用DHT11溫濕度傳感器,其精度濕度±5%RH,溫度±2 ℃,量程濕度5%~95%RH,溫度-20~+60 ℃,采用單總線協議輸出。使用MQ-2煙霧檢測傳感器,其適用于檢測液化氣、天然氣、丙烷、氫氣、煙霧及其他可燃蒸汽,支持開關數字信號和電壓模擬信號輸出。使用YL-38火焰傳感器,其可以檢測火焰或者波長在760~1 100 nm范圍內的光源,探測角度60°左右,支持開關數字信號和電壓模擬信號輸出。各傳感的實物圖如圖4所示。
3? 軟件設計
本系統軟件部分分為前端數據采集和后臺服務器兩部分。前端數據采集程序主要包含傳感器數據采集處理和網絡通信功能,后臺服務器程序實現數據實時接收、存儲和移動端Web訪問,均采用Python編程語言進行開發。
3.1? 數據采集
數據采集分為攝像頭數據和其他傳感器數據。樹莓派Raspbian系統中帶有攝像頭驅動,在程序中采用OpenCV來直接獲取攝像頭數據。OpenCV是一個開源的計算機視覺庫,提供了豐富的視覺處理算法,它使用C/C++開發,同時也提供了Python、Java、MATLAB等其他語言的接口,支持跨平臺應用,可以在Windows、Linux、Mac OS、Android、iOS等操作系統上運行。由于OpenCV具有的強大功能和通用性,本系統采用OpenCV來進行攝像頭數據采集和圖像處理[4]。攝像頭的數據采集主要讀取攝像頭數據和OpenCV編碼,后臺服務器接收到數據后只需進行OpenCV解碼顯示即可,相關代碼如下:
send _img = cap.read()[1]? ? #讀取攝像頭數據
send_ data = cv2.imencode('.jpg', send _img, (cv2.IMWRITE_JPEG_QUALITY, 50))[1]? ?#編碼
rec_data = Camera.udp_socket.recvfrom(package_len)[0]? ?#接收攝像頭數據
reci _img = cv2.imdecode(rec_data, cv2.IMREAD_UNCHANGED)? ? #解碼
本系統的其他傳感器數據包含溫濕度傳感器、火焰傳感器和煙霧傳感器采集的數據,這些傳感器均通過樹莓派GPIO接口進行數據采集。火焰傳感器YL-38和煙霧傳感器MQ-2可以實現模擬量輸出和采集數字信號輸出,模擬信號輸出可以得到具體信號值,數字信號輸出只能得到閾值報警信息。由于樹莓派GPIO接口不能接收模擬信號,如果需要采集模擬信號,可借助模數轉換模塊將模擬信號轉換成數字信號后,再傳輸至樹莓派GPIO接口。本系統目前采用直接讀取火焰傳感器YL-38和煙霧傳感器MQ-2的數字信號的方式采集數據。Python編程語言為我們提供了多種GPIO函數庫來控制樹莓派GPIO接口,我們選擇RPi.GPIO庫來實現傳感器數據的獲取。獲取數據部分代碼如下:
#設置IO口
GPIO.setmode(GPIO.BCM)
GPIO.setup(channel 1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(channel, GPIO.RISING)
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#判斷傳感器數據
if GPIO.event_detected(channel 1): smoke = 1? ?#有氣體異常
else: smoke = 0? ?#正常
if GPIO.input(channel 2) == GPIO.LOW: fire = 1? ?#有火點
else: fire = 0? ?#正常
溫濕度傳感器DHT11輸出為單總線傳輸協議,可以使用樹莓派GPIO直接通信,而且由于DHT11使用非常廣泛,目前有專門的函數庫(Adafruit_DHT)可以直接調用,為編程提供了很好的便利,部分代碼如下:
humidity, temperature = Adafruit_DHT.read_retry(dht11, channel3)? #讀取溫濕度
3.2? 數據傳輸
本系統在數據傳輸上分為兩個部分,一個是樹莓派與后臺服務器之間的數據傳輸,另一部分是移動客戶端與后臺服務器數據交互。
將樹莓派采集到的攝像頭數據和其他傳感器數據上傳至后臺,在傳輸協議上有TCP協議或者UDP協議可供選擇。TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,需要使用3次握手協議建立連接后方可進行通信;UDP是一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,數據通信前無須建立連接,在數據傳輸過程中延遲小、數據傳輸效率高。本系統中數據量大,需要盡量保證傳輸速度和實時性,在網絡環境較差的情況下丟失少量數據是可以接受的。因此,在數據傳輸上采用UDP協議,通過Socket接口實現通信。在數據處理上,采用多線程方式,將攝像頭數據的采集和傳輸設計為一個線程,其他傳感器數據的采集和傳輸設計成另一個線程。同時,由于Socket編程中UDP協議數據包大小不超過64 KB字節,在傳輸圖像數據時還需進行分包處理。視頻數據發送部分代碼如下:
send_data = data.tobytes()? # 數據轉換為字節流
udp_socket.sendto(begin_flag, udp_addr)? # 發送起始標志
udp_socket.sendto(send_data, udp_addr) #發送數據
udp_socket.sendto(end_flag, udp_addr)? # 發送結束標志
為了更為簡便地實現內外網之間的通信,可以使用內網穿透來實現。內網穿透是基于NAT技術,通過將內網中的私有IP地址轉換為公共IP地址,從而提供了簡單、高效、穩定、安全的遠程訪問服務功能。目前市面上有很多內網穿透軟件,各有特點。本系統采用NATAPP來實現內外網通信,利用NATAPP軟件建立后臺服務器與NATAPP服務器之間的數據傳輸隧道,客戶端只需訪問NATAPP提供的隧道網址,便可實現與后臺服務器之間的通信。本系統建立了兩條隧道,一條為UDP隧道,負責實現樹莓派客戶端與后臺服務器數據通信,另一條為Web隧道,負責實現網頁訪問后臺服務器數據。創建的隧道情況如圖5所示。
移動客戶端訪問后臺服務器數據,采用網頁訪問的方式實現,當實訓基地發生異常時,后臺服務器通過郵件向管理員發送報警信息。后臺服務器基于Python語言的Flask來編寫后臺Web訪問服務程序[5]。Flask是一個輕量級的Python Web框架,依賴Jinja模板引擎和WerkzeugWSGI套件,負責處理生成動態HTML頁面以及處理HTTP請求和響應,為構建Web應用程序提供了有用的工具和功能,同時,通過Flask的擴展包Flask–Mail可以實現郵件的發送。本系統的數據傳輸示意圖如圖6所示。
4? 結? 論
本文結合嵌入式技術、傳感器技術和網絡通信技術,基于樹莓派、5G無線通信模塊、攝像頭、溫濕度等傳感器,使用Python作為程序開發語言,開發了數據采集端程序和后臺服務器程序,實現了一套戶外實訓基地狀態監控系統,為戶外實訓基地環境狀況監控難的問題提供了解決方案。目前,本系統各部分基本功能均已實現,后續將針對系統運行的準確性和穩定性進行測試,完善功能,完成Web訪問界面的美化,同時考慮利用MQTT與釘釘、微信等軟件的對接,進一步豐富本系統的使用場景和功能。
參考文獻:
[1] 汪海燕.視頻監控系統實訓室的升級設計 [J].教育教學論壇,2019(26):263-264.
[2] 高見,王凱悅,黃淑華.面向視頻監控網絡的安全評估指標體系研究 [J].信息網絡安全,2021,21(12):78-85.
[3] 羅銳,黃鸝聲,張振宇,等.5G網絡環境下的網絡視頻質量分析 [J].蘭州交通大學學報,2022,41(6):54-61.
[4]汪成龍,林浩斌,馬秋立,等.基于OpenCV的實驗室監控預警系統 [J].電子測量技術,2018,41(12):119-123.
[5] 牛作東,李捍東.基于Python與flask工具搭建可高效開發的實用型MVC框架 [J].計算機應用與軟件,2019,36(7):21-25.
作者簡介:楊駿(1985—),男,侗族,貴州凱里人,副教授,碩士,主要研究方向:電子信息技術應用。