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