范華峰,陳 楨
(常州機電職業(yè)技術(shù)學院 信息工程學院,江蘇 常州 213164)
隨著計算機技術(shù)和無線通信技術(shù)的不斷發(fā)展,物聯(lián)網(wǎng)通信技術(shù)也日趨成熟,目前的主流是NB-IoT和LoRa。NB-IoT由電信運營商通過商用頻點建設(shè)基站進行大規(guī)模部署,LoRa是一種低功耗、傳輸距離長、抗干擾能力強的無線通信技術(shù),它通過數(shù)字擴頻、數(shù)字信號處理和前向糾錯編碼等手段,實現(xiàn)了類似頻移鍵控調(diào)制的低功耗特性,又顯著延長了傳輸距離,即使多個終端使用相同的頻率同時發(fā)送數(shù)據(jù),只要擴頻序列不同它們便不會相互干擾,同時LoRa還可以通過免費自由頻段自行組網(wǎng)。
為實現(xiàn)對機房環(huán)境的實時監(jiān)測與控制,本文采用ESP32單片機、溫濕度傳感器、串口顯示屏、電流環(huán)傳感器、繼電器、LoRa通信模塊、紅外發(fā)射模塊組建系統(tǒng)。主要實現(xiàn)了環(huán)境溫度、設(shè)備電流的實時采集、顯示與數(shù)據(jù)實時回傳等功能,可根據(jù)現(xiàn)場環(huán)境溫度自動開啟和關(guān)閉空調(diào)設(shè)備,在異常情況發(fā)生時,系統(tǒng)能控制繼電器動作切斷動力設(shè)備電源,防止意外發(fā)生[1-3]。
系統(tǒng)由本地機房監(jiān)測控制模塊和遠端接收管理平臺構(gòu)成。其中機房監(jiān)測控制模塊實時采集數(shù)據(jù)并處理,之后根據(jù)預(yù)先設(shè)定的規(guī)則完成自我控制,同時將現(xiàn)場采集的數(shù)據(jù)發(fā)送給遠端接收管理平臺并接收遠端發(fā)送的管理指令,多個監(jiān)測控制模塊與遠端接收管理平臺采用星型結(jié)構(gòu)組網(wǎng)[4]。系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
采用模塊化設(shè)計思想,監(jiān)測控制模塊主要由主控制器、采集部分、控制部分、傳輸部分與顯示部分組成。主控制器是檢測控制模塊的核心,采用ESP32單片機管理控制,該單片機采用40 nm工藝設(shè)計,具有雙核32位CPU,主頻達230 MHz,集成了2.4 GHz雙模WiFi和藍牙,可提供I2C、SPI和UART等接口,負責協(xié)調(diào)模塊的運行管理與控制。主控制器通過RS 485總線接口與各類傳感器通信交互,各傳感器在接入總線前需配置不同的站點地址,主控制器根據(jù)不同的站點地址輪詢每個傳感器采集數(shù)據(jù)。主控制器采用I/O口對被控設(shè)備進行獨立控制,保障控制的可靠性與實時性。主控制器通過UART串口與LoRa模塊通信,實現(xiàn)遠程數(shù)據(jù)的發(fā)送與接收。主控制器通過串口輸出顯示數(shù)據(jù)[5-6]。硬件設(shè)計原理如圖2所示。
圖2 硬件設(shè)計原理
模塊軟件使用C語言開發(fā),主控程序運行基于FreeRTOS操作系統(tǒng),可實現(xiàn)多線程管理。程序初始化過程中,主線程創(chuàng)建了RS 485傳感器采集任務(wù)、LoRa收發(fā)數(shù)據(jù)任務(wù)、顯示輸出任務(wù)、I/O輸出控制任務(wù)、紅外發(fā)送任務(wù)和看門狗監(jiān)控任務(wù),依賴RTOS系統(tǒng)功能創(chuàng)建FIFO消息隊列、LoRa消息隊列、顯示消息隊列、I/O消息隊列和紅外消息隊列,實現(xiàn)各任務(wù)與中斷服務(wù)子程序的通信。初始化完成后,主進程進入休眠狀態(tài),等待中斷事件觸發(fā)與消息隊列監(jiān)控,發(fā)生異常時重啟設(shè)備。主控制器程序流程如圖3所示。
圖3 主控制器程序流程
RS 485傳感器采集任務(wù):讀取傳感器配置信息,獲得傳感器采集地址與采集指令。RS 485傳感器采用Modbus通信協(xié)議,主控端根據(jù)配置循環(huán)向總線站點各傳感器地址發(fā)送查詢指令并接收返回的數(shù)據(jù),對數(shù)據(jù)進行校驗解碼后將數(shù)據(jù)推送到LoRa消息隊列和顯示消息隊列中。
LoRa收發(fā)數(shù)據(jù)任務(wù):讀取LoRa消息隊列中的節(jié)點數(shù)據(jù),發(fā)送數(shù)據(jù)到LoRa通信模塊;讀取LoRa通信模塊接收的數(shù)據(jù),根據(jù)接收的內(nèi)容進行數(shù)據(jù)處理與格式轉(zhuǎn)換,然后根據(jù)功能將數(shù)據(jù)發(fā)送到相應(yīng)的消息隊列中。
顯示輸出任務(wù):讀取顯示消息隊列中的節(jié)點數(shù)據(jù),發(fā)送數(shù)據(jù)到顯示屏。
I/O控制任務(wù):讀取I/O消息隊列中的節(jié)點數(shù)據(jù),根據(jù)數(shù)據(jù)內(nèi)容控制I/O引腳的電平,實現(xiàn)設(shè)備控制。
紅外發(fā)送任務(wù):讀取紅外消息隊列中的節(jié)點數(shù)據(jù),根據(jù)紅外數(shù)據(jù)控制紅外發(fā)射管發(fā)送紅外編碼。
看門狗監(jiān)控任務(wù):周期性地向看門狗電路發(fā)送脈沖信號實現(xiàn)喂狗功能,保證系統(tǒng)死機后能重新啟動。
接收管理平臺服務(wù)器使用USB-LoRa多通道數(shù)據(jù)通信模塊與多個監(jiān)測控制模塊進行星型組網(wǎng),實現(xiàn)多路數(shù)據(jù)的收發(fā)。
管理平臺采用Java語言開發(fā),基于SpringBoot框架實現(xiàn)對多個監(jiān)測控制模塊的配置與管理,如監(jiān)測控制模塊的通信地址與通信數(shù)據(jù)加密配置,每個監(jiān)測控制模塊的RS 485接口傳感器地址與數(shù)據(jù)查詢指令的配置,接收監(jiān)測數(shù)據(jù)與圖形化動態(tài)顯示,實現(xiàn)遠程設(shè)備的實時控制管理,配置傳感器數(shù)據(jù)閾值實現(xiàn)環(huán)境告警等。
本文設(shè)計開發(fā)了基于LoRa通信的機房環(huán)境檢測與控制系統(tǒng),重點介紹了監(jiān)測控制模塊的硬件電路與軟件程序設(shè)計。在遠端管理平臺實現(xiàn)了對機房環(huán)境的監(jiān)測和管控,當有超閾值事件發(fā)生時及時預(yù)警。結(jié)果表明,該系統(tǒng)運行良好,擴展性強,可靠性高,可為后續(xù)園區(qū)智能化機房改造和用戶定制服務(wù)提供良好的平臺。