楊駿 梁念渝 鄧力夫
摘? 要:針對戶外實訓(xùn)基地分布分散、有線網(wǎng)絡(luò)鋪設(shè)困難等問題,設(shè)計一套監(jiān)控系統(tǒng)。將樹莓派4B+作為數(shù)據(jù)采集端主控核心,用以采集攝像頭、DTH11溫濕度傳感器、MQ-2煙霧傳感器、YL-38火焰?zhèn)鞲衅鞯饶K的數(shù)據(jù),并通過MW600GQ工業(yè)級5G模塊傳輸數(shù)據(jù)至后臺服務(wù)器。系統(tǒng)基于Python編程語言,使用OpenCV、RPi.GPIO、Adafruit_DHT、Socket等庫函數(shù)和Flask輕量級應(yīng)用框架開發(fā)數(shù)據(jù)采集端程序和后臺服務(wù)器程序,在客戶端可以通過網(wǎng)頁實時監(jiān)控實訓(xùn)基地狀況,當(dāng)發(fā)生異常狀況時,以郵件方式主動發(fā)送報警信息。
關(guān)鍵詞:樹莓派;5G;Python;在線狀態(tài)監(jiān)控
中圖分類號:TP277? 文獻標(biāo)識碼: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? 引? 言
近年來,隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和對實訓(xùn)基地運行安全要求的不斷提升,利用信息化手段進行監(jiān)控成為保障實訓(xùn)基地安全的重要手段之一[1]。目前,針對樓宇內(nèi)實訓(xùn)室的監(jiān)控系統(tǒng)已經(jīng)發(fā)展得很成熟了,但是對于一些戶外實訓(xùn)基地,由于其分布相對零散,鋪設(shè)有線網(wǎng)絡(luò)成本高,4G技術(shù)難以滿足大數(shù)據(jù)實時傳輸要求,使得這類實訓(xùn)基地的狀態(tài)監(jiān)控成為盲區(qū),一旦發(fā)生有害氣體泄漏或者火災(zāi)的情況,將會造成嚴(yán)重的損失。因此,本文將戶外實訓(xùn)基地作為應(yīng)用場景,設(shè)計一種適合在沒有有線網(wǎng)絡(luò)的環(huán)境下使用的監(jiān)控系統(tǒng),可以實時監(jiān)控戶外實訓(xùn)基地的運行狀態(tài),同時將異常狀態(tài)主動發(fā)送報警信息,保證實訓(xùn)基地的運行安全。
1? 系統(tǒng)設(shè)計方案
本系統(tǒng)分為硬件部分和軟件部分,硬件部分主要由數(shù)據(jù)采集端的傳感模塊、主控模塊、通信模塊組成;軟件部分由數(shù)據(jù)采集端程序和后臺服務(wù)器程序組成。數(shù)據(jù)采集端程序?qū)崿F(xiàn)傳感器數(shù)據(jù)采集和傳輸,后臺服務(wù)器程序?qū)崿F(xiàn)實時數(shù)據(jù)接收和存儲,并實現(xiàn)客戶端的Web訪問功能。系統(tǒng)總體設(shè)計如圖1所示。
2? 硬件設(shè)計
本系統(tǒng)將采集包含攝像頭圖像數(shù)據(jù)在內(nèi)的多種傳感器數(shù)據(jù),而數(shù)據(jù)處理和傳輸對主控芯片的處理速度要求很高,且必須具備豐富的接口便于設(shè)備連接,因此選用樹莓派作為數(shù)據(jù)采集端主控核心[2],同時利用5G無線通信模塊將數(shù)據(jù)傳輸至后臺服務(wù)器[3]。
2.1? 主控模塊
樹莓派外形只有信用卡大小,卻具有電腦的所有基本功能,被稱為卡片式電腦。由于其性能強大,外形小巧,拓展性豐富,受到眾多嵌入式開發(fā)者和創(chuàng)客的青睞。本系統(tǒng)選用的樹莓派4B+搭載的是ARM Cortex-A72四核64位1.5 GHz芯片,micro-HDMI端口支持4K分辨率的雙屏顯示,支持4Kp60的硬件視頻解碼,4 GB的RAM,雙頻2.4/5.0 GHz無線局域網(wǎng),藍牙5.0,千兆以太網(wǎng),USB 3.0和PoE功能,同時還提供了40-pin的GPIO接口,便于功能自定義擴展。在操作系統(tǒng)上,除了支持專為樹莓派打造的基于Debian開發(fā)的Raspbian操作系統(tǒng)外,還支持Ubuntu MATE、Arch Linux ARM、Windows 10 IoT等,可以運行C、Java、Python等多種編程語言環(huán)境,為編程開發(fā)提供了便利。樹莓派4B+的實物圖如圖2所示。
2.2? 通信模塊
MW600GQ工業(yè)級5G無線通信模塊支持5G-NR SA/NSA,兼容4G LTE網(wǎng)絡(luò),全網(wǎng)通,模塊提供千兆自適應(yīng)以太網(wǎng)接口、TypeC USB接口、UART數(shù)據(jù)接口,提供網(wǎng)卡、路由和網(wǎng)橋3種工作模式,MW600GQ的實物圖如圖3所示。支持USB/串口使用標(biāo)準(zhǔn)AT指令控制該模塊,支持TCP/UDP及透傳模式/Buffer模式,通過撥號客戶端CMTools可以對模塊進行配置,支持OpenCPU更新程序,可以使用移遠通信開發(fā)的QFlash工具來升級固件,實現(xiàn)MQTT、DMZ主機、端口轉(zhuǎn)發(fā)、Web管理和LAN AT等功能。
2.3? 傳感模塊
實訓(xùn)基地的安全問題,主要集中在有害氣體泄露和火災(zāi)等方面,因此選用攝像頭、溫濕度傳感器、火焰?zhèn)鞲衅骱蜔熿F傳感器采集環(huán)境數(shù)據(jù)。樹莓派兼容CSI和USB兩種接口攝像頭,本系統(tǒng)使用500萬像素的樹莓派CSI視頻接口攝像頭;使用DHT11溫濕度傳感器,其精度濕度±5%RH,溫度±2 ℃,量程濕度5%~95%RH,溫度-20~+60 ℃,采用單總線協(xié)議輸出。使用MQ-2煙霧檢測傳感器,其適用于檢測液化氣、天然氣、丙烷、氫氣、煙霧及其他可燃蒸汽,支持開關(guān)數(shù)字信號和電壓模擬信號輸出。使用YL-38火焰?zhèn)鞲衅鳎淇梢詸z測火焰或者波長在760~1 100 nm范圍內(nèi)的光源,探測角度60°左右,支持開關(guān)數(shù)字信號和電壓模擬信號輸出。各傳感的實物圖如圖4所示。
3? 軟件設(shè)計
本系統(tǒng)軟件部分分為前端數(shù)據(jù)采集和后臺服務(wù)器兩部分。前端數(shù)據(jù)采集程序主要包含傳感器數(shù)據(jù)采集處理和網(wǎng)絡(luò)通信功能,后臺服務(wù)器程序?qū)崿F(xiàn)數(shù)據(jù)實時接收、存儲和移動端Web訪問,均采用Python編程語言進行開發(fā)。
3.1? 數(shù)據(jù)采集
數(shù)據(jù)采集分為攝像頭數(shù)據(jù)和其他傳感器數(shù)據(jù)。樹莓派Raspbian系統(tǒng)中帶有攝像頭驅(qū)動,在程序中采用OpenCV來直接獲取攝像頭數(shù)據(jù)。OpenCV是一個開源的計算機視覺庫,提供了豐富的視覺處理算法,它使用C/C++開發(fā),同時也提供了Python、Java、MATLAB等其他語言的接口,支持跨平臺應(yīng)用,可以在Windows、Linux、Mac OS、Android、iOS等操作系統(tǒng)上運行。由于OpenCV具有的強大功能和通用性,本系統(tǒng)采用OpenCV來進行攝像頭數(shù)據(jù)采集和圖像處理[4]。攝像頭的數(shù)據(jù)采集主要讀取攝像頭數(shù)據(jù)和OpenCV編碼,后臺服務(wù)器接收到數(shù)據(jù)后只需進行OpenCV解碼顯示即可,相關(guān)代碼如下:
send _img = cap.read()[1]? ? #讀取攝像頭數(shù)據(jù)
send_ data = cv2.imencode('.jpg', send _img, (cv2.IMWRITE_JPEG_QUALITY, 50))[1]? ?#編碼
rec_data = Camera.udp_socket.recvfrom(package_len)[0]? ?#接收攝像頭數(shù)據(jù)
reci _img = cv2.imdecode(rec_data, cv2.IMREAD_UNCHANGED)? ? #解碼
本系統(tǒng)的其他傳感器數(shù)據(jù)包含溫濕度傳感器、火焰?zhèn)鞲衅骱蜔熿F傳感器采集的數(shù)據(jù),這些傳感器均通過樹莓派GPIO接口進行數(shù)據(jù)采集?;鹧?zhèn)鞲衅鱕L-38和煙霧傳感器MQ-2可以實現(xiàn)模擬量輸出和采集數(shù)字信號輸出,模擬信號輸出可以得到具體信號值,數(shù)字信號輸出只能得到閾值報警信息。由于樹莓派GPIO接口不能接收模擬信號,如果需要采集模擬信號,可借助模數(shù)轉(zhuǎn)換模塊將模擬信號轉(zhuǎn)換成數(shù)字信號后,再傳輸至樹莓派GPIO接口。本系統(tǒng)目前采用直接讀取火焰?zhèn)鞲衅鱕L-38和煙霧傳感器MQ-2的數(shù)字信號的方式采集數(shù)據(jù)。Python編程語言為我們提供了多種GPIO函數(shù)庫來控制樹莓派GPIO接口,我們選擇RPi.GPIO庫來實現(xiàn)傳感器數(shù)據(jù)的獲取。獲取數(shù)據(jù)部分代碼如下:
#設(shè)置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)
#判斷傳感器數(shù)據(jù)
if GPIO.event_detected(channel 1): smoke = 1? ?#有氣體異常
else: smoke = 0? ?#正常
if GPIO.input(channel 2) == GPIO.LOW: fire = 1? ?#有火點
else: fire = 0? ?#正常
溫濕度傳感器DHT11輸出為單總線傳輸協(xié)議,可以使用樹莓派GPIO直接通信,而且由于DHT11使用非常廣泛,目前有專門的函數(shù)庫(Adafruit_DHT)可以直接調(diào)用,為編程提供了很好的便利,部分代碼如下:
humidity, temperature = Adafruit_DHT.read_retry(dht11, channel3)? #讀取溫濕度
3.2? 數(shù)據(jù)傳輸
本系統(tǒng)在數(shù)據(jù)傳輸上分為兩個部分,一個是樹莓派與后臺服務(wù)器之間的數(shù)據(jù)傳輸,另一部分是移動客戶端與后臺服務(wù)器數(shù)據(jù)交互。
將樹莓派采集到的攝像頭數(shù)據(jù)和其他傳感器數(shù)據(jù)上傳至后臺,在傳輸協(xié)議上有TCP協(xié)議或者UDP協(xié)議可供選擇。TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,需要使用3次握手協(xié)議建立連接后方可進行通信;UDP是一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù),數(shù)據(jù)通信前無須建立連接,在數(shù)據(jù)傳輸過程中延遲小、數(shù)據(jù)傳輸效率高。本系統(tǒng)中數(shù)據(jù)量大,需要盡量保證傳輸速度和實時性,在網(wǎng)絡(luò)環(huán)境較差的情況下丟失少量數(shù)據(jù)是可以接受的。因此,在數(shù)據(jù)傳輸上采用UDP協(xié)議,通過Socket接口實現(xiàn)通信。在數(shù)據(jù)處理上,采用多線程方式,將攝像頭數(shù)據(jù)的采集和傳輸設(shè)計為一個線程,其他傳感器數(shù)據(jù)的采集和傳輸設(shè)計成另一個線程。同時,由于Socket編程中UDP協(xié)議數(shù)據(jù)包大小不超過64 KB字節(jié),在傳輸圖像數(shù)據(jù)時還需進行分包處理。視頻數(shù)據(jù)發(fā)送部分代碼如下:
send_data = data.tobytes()? # 數(shù)據(jù)轉(zhuǎn)換為字節(jié)流
udp_socket.sendto(begin_flag, udp_addr)? # 發(fā)送起始標(biāo)志
udp_socket.sendto(send_data, udp_addr) #發(fā)送數(shù)據(jù)
udp_socket.sendto(end_flag, udp_addr)? # 發(fā)送結(jié)束標(biāo)志
為了更為簡便地實現(xiàn)內(nèi)外網(wǎng)之間的通信,可以使用內(nèi)網(wǎng)穿透來實現(xiàn)。內(nèi)網(wǎng)穿透是基于NAT技術(shù),通過將內(nèi)網(wǎng)中的私有IP地址轉(zhuǎn)換為公共IP地址,從而提供了簡單、高效、穩(wěn)定、安全的遠程訪問服務(wù)功能。目前市面上有很多內(nèi)網(wǎng)穿透軟件,各有特點。本系統(tǒng)采用NATAPP來實現(xiàn)內(nèi)外網(wǎng)通信,利用NATAPP軟件建立后臺服務(wù)器與NATAPP服務(wù)器之間的數(shù)據(jù)傳輸隧道,客戶端只需訪問NATAPP提供的隧道網(wǎng)址,便可實現(xiàn)與后臺服務(wù)器之間的通信。本系統(tǒng)建立了兩條隧道,一條為UDP隧道,負(fù)責(zé)實現(xiàn)樹莓派客戶端與后臺服務(wù)器數(shù)據(jù)通信,另一條為Web隧道,負(fù)責(zé)實現(xiàn)網(wǎng)頁訪問后臺服務(wù)器數(shù)據(jù)。創(chuàng)建的隧道情況如圖5所示。
移動客戶端訪問后臺服務(wù)器數(shù)據(jù),采用網(wǎng)頁訪問的方式實現(xiàn),當(dāng)實訓(xùn)基地發(fā)生異常時,后臺服務(wù)器通過郵件向管理員發(fā)送報警信息。后臺服務(wù)器基于Python語言的Flask來編寫后臺Web訪問服務(wù)程序[5]。Flask是一個輕量級的Python Web框架,依賴Jinja模板引擎和WerkzeugWSGI套件,負(fù)責(zé)處理生成動態(tài)HTML頁面以及處理HTTP請求和響應(yīng),為構(gòu)建Web應(yīng)用程序提供了有用的工具和功能,同時,通過Flask的擴展包Flask–Mail可以實現(xiàn)郵件的發(fā)送。本系統(tǒng)的數(shù)據(jù)傳輸示意圖如圖6所示。
4? 結(jié)? 論
本文結(jié)合嵌入式技術(shù)、傳感器技術(shù)和網(wǎng)絡(luò)通信技術(shù),基于樹莓派、5G無線通信模塊、攝像頭、溫濕度等傳感器,使用Python作為程序開發(fā)語言,開發(fā)了數(shù)據(jù)采集端程序和后臺服務(wù)器程序,實現(xiàn)了一套戶外實訓(xùn)基地狀態(tài)監(jiān)控系統(tǒng),為戶外實訓(xùn)基地環(huán)境狀況監(jiān)控難的問題提供了解決方案。目前,本系統(tǒng)各部分基本功能均已實現(xiàn),后續(xù)將針對系統(tǒng)運行的準(zhǔn)確性和穩(wěn)定性進行測試,完善功能,完成Web訪問界面的美化,同時考慮利用MQTT與釘釘、微信等軟件的對接,進一步豐富本系統(tǒng)的使用場景和功能。
參考文獻:
[1] 汪海燕.視頻監(jiān)控系統(tǒng)實訓(xùn)室的升級設(shè)計 [J].教育教學(xué)論壇,2019(26):263-264.
[2] 高見,王凱悅,黃淑華.面向視頻監(jiān)控網(wǎng)絡(luò)的安全評估指標(biāo)體系研究 [J].信息網(wǎng)絡(luò)安全,2021,21(12):78-85.
[3] 羅銳,黃鸝聲,張振宇,等.5G網(wǎng)絡(luò)環(huán)境下的網(wǎng)絡(luò)視頻質(zhì)量分析 [J].蘭州交通大學(xué)學(xué)報,2022,41(6):54-61.
[4]汪成龍,林浩斌,馬秋立,等.基于OpenCV的實驗室監(jiān)控預(yù)警系統(tǒng) [J].電子測量技術(shù),2018,41(12):119-123.
[5] 牛作東,李捍東.基于Python與flask工具搭建可高效開發(fā)的實用型MVC框架 [J].計算機應(yīng)用與軟件,2019,36(7):21-25.
作者簡介:楊駿(1985—),男,侗族,貴州凱里人,副教授,碩士,主要研究方向:電子信息技術(shù)應(yīng)用。