薛 峰,李 娟,王如龍
(1.北京信息科技大學(xué) 自動化學(xué)院,北京 100192;2.中熱智能(北京)工程技術(shù)有限公司,北京 100085)
隨著我國城市建設(shè)的快速發(fā)展,集中供熱的規(guī)模更加龐大,是我國冬季主要的供暖形式之一。由于供熱系統(tǒng)具有大慣性和大滯后等特點[1],供熱不均和水力失衡等問題時常出現(xiàn)[2]。為解決此類問題,熱力公司需要對室內(nèi)供暖的實際溫度進(jìn)行獲取,以此指導(dǎo)熱網(wǎng)的自動化調(diào)度工作,調(diào)整供熱策略,從而達(dá)到按需供熱的重要目標(biāo)[3]。
無線通信技術(shù)因具有成本低、靈活性高、適應(yīng)性強和便于維護(hù)等優(yōu)勢,在各行業(yè)及溫度監(jiān)測領(lǐng)域得到廣泛的應(yīng)用[4-5]。文獻(xiàn)[6]利用ZigBee技術(shù)進(jìn)行溫度傳感器組網(wǎng),對室內(nèi)多個點位的溫度進(jìn)行監(jiān)測。但ZigBee技術(shù)僅適用于短距離、小范圍內(nèi)的設(shè)備組網(wǎng),信號穿墻能力弱,不適用于長距離通信。文獻(xiàn)[7]采用近年來推出的遠(yuǎn)距離無線電(Long Range Radio,LoRa)技術(shù)設(shè)計了一種環(huán)境溫濕度監(jiān)測節(jié)點,可以實時監(jiān)測車間內(nèi)的溫濕度變化,對異常情況進(jìn)行報警提醒。但LoRa網(wǎng)絡(luò)在實際使用時,除了在現(xiàn)場終端設(shè)備中安裝LoRa射頻模塊外,還需根據(jù)終端設(shè)備的數(shù)量,部署相應(yīng)的匯聚網(wǎng)關(guān),部署難度大,成本較高[8]。文獻(xiàn)[9]運用通用無線分組業(yè)務(wù)(General Packet Radio Service,GPRS)技術(shù)對集中供熱用戶住房內(nèi)的溫度進(jìn)行監(jiān)測。但GPRS設(shè)備工作電流較大,整體功耗高[10],不適合用于長期由電池供電的工作場景。窄帶物聯(lián)網(wǎng)(Narrow Band Internet of Things,NB-IoT)作為近些年發(fā)展較快的物聯(lián)網(wǎng)無線通信技術(shù),使用授權(quán)頻段,具有低功耗、低速率和強連接等特點,與非實時、低頻次的定時上報數(shù)據(jù)類業(yè)務(wù)較契合[11-12]。
因此,本文設(shè)計一種基于NB-IoT技術(shù),采用UDP的遠(yuǎn)程供熱溫度監(jiān)測系統(tǒng),溫度終端可用電池供電,按照設(shè)置的時間周期定時采集環(huán)境和設(shè)備的有關(guān)信息,并上傳至云服務(wù)器;熱力公司可通過電腦端瀏覽器打開Web頁面查閱當(dāng)前和歷史數(shù)據(jù),也可通過手機APP查看當(dāng)前供熱情況。系統(tǒng)對于協(xié)助熱力公司掌握供熱狀況、提高供熱質(zhì)量具有實際意義。
基于NB-IoT的供熱溫度監(jiān)測系統(tǒng)總體結(jié)構(gòu)如圖1所示。由溫度終端、移動通信網(wǎng)絡(luò)、百度云服務(wù)器和客戶端等四部分組成。溫度終端作為現(xiàn)場設(shè)備,采集和處理室內(nèi)的環(huán)境溫濕度數(shù)據(jù)和設(shè)備相關(guān)信息,并通過NB-IoT網(wǎng)絡(luò)上傳至移動通信基站;移動通信基站通過UDP協(xié)議與云服務(wù)器交換數(shù)據(jù),云服務(wù)器對數(shù)據(jù)進(jìn)行解析、存儲;手機APP和電腦Web瀏覽器可通過HTTP協(xié)議訪問云服務(wù)器查看最新數(shù)據(jù)。
圖1 供熱溫度監(jiān)測系統(tǒng)組成
NB-IoT支持TCP、UDP、HTTP、消息隊列遙測傳輸(Message Queuing Telemetry Transport,MQTT)、受限應(yīng)用協(xié)議(Constrained Application Protocol,CoAP)等眾多協(xié)議。其中,UDP協(xié)議的報文結(jié)構(gòu)簡單,且無需保持長連接,對流量和電量消耗少,適用于低功耗的應(yīng)用場景。
供熱溫度監(jiān)測系統(tǒng)終端的硬件總體結(jié)構(gòu)如圖2所示,主要由鋰電池、低壓差線性穩(wěn)壓器、主控單元、NB-IoT通信模組、溫濕度傳感器和電池電量檢測電路等部分組成。
圖2 溫度終端硬件總體結(jié)構(gòu)
低壓差線性穩(wěn)壓器ME6211C33M5G-N將電池電源穩(wěn)壓后給各部分供電;主控單元包括主控微處理器(Micro Control Unit,MCU)及其外圍電路,MCU型號為STM32L071CBT6,待機模式的消耗電流為0.85 μA,外圍電路包括串行接口電路、供電插口、晶振、濾波電容、復(fù)位按鈕等;NB-IoT通信模組包括模組本體及其外圍電路,模組本體選用中國移動M5310-A,外圍電路包括串行接口電路、SIM卡、天線和復(fù)位按鈕。M5310-A支持UDP協(xié)議及其他多種通信協(xié)議,在節(jié)能模式(Power Saving Mode,PSM)狀態(tài)下的運行電流低至5 μA;溫濕度傳感器型號為奧松AHT25,采用I2C協(xié)議進(jìn)行通信,體積小,精度良好,使用1.27 mm間距的插銷式接口與MCU連接。
根據(jù)電池電量和電壓的曲線關(guān)系[13],設(shè)計了電池電量檢測電路。利用電阻分壓和ADC采樣功能,估算鋰電池的剩余電量。電池電量檢測電路原理如圖3所示。VCC為電池的供電引腳,BAT_ADC為ADC采樣引腳,SWITCH引腳用來控制PMOS管Q2的通斷,防止分壓電阻在設(shè)備休眠期間對地產(chǎn)生電流,浪費電能。
圖3 電池電量檢測電路
系統(tǒng)軟件設(shè)計包括溫度終端嵌入式程序、監(jiān)測系統(tǒng)服務(wù)程序和安卓APP三部分。嵌入式程序開發(fā)工具為MDK5和STM32CubeMX,STM32CubeMX可對MCU進(jìn)行初始化配置,提高開發(fā)效率;監(jiān)測系統(tǒng)服務(wù)程序和安卓APP的開發(fā)工具分別為IntelliJ IDEA 2021.2.2和Android Studio 2021.3.1。
嵌入式程序主要包括終端初始化、數(shù)據(jù)收集及處理、通信配置、數(shù)據(jù)發(fā)送、休眠與喚醒。程序流程如圖4所示。
圖4 嵌入式程序流程
終端上電啟動,MCU完成時鐘、USART、GPIO、I2C、ADC轉(zhuǎn)換等初始化任務(wù),同時M5310-A完成駐網(wǎng)工作等初始化任務(wù);初始化成功后,分別通過AHT25、電池電量檢測電路、AT命令收集需要發(fā)送的各類數(shù)據(jù),如環(huán)境溫濕度、設(shè)備溫度、信號值等,并將數(shù)據(jù)處理成字符串形式以備數(shù)據(jù)發(fā)送任務(wù);進(jìn)行通信配置任務(wù),指定服務(wù)器地址和端口,發(fā)送UDP數(shù)據(jù)。發(fā)送完畢,M5310-A進(jìn)入PSM模式,MCU啟動RTC,定時5 min,進(jìn)入待機模式。此時的測溫周期為5 min,即MCU的待機時間。MCU待機時間到則被喚醒,隨即喚醒M5310-A使其退出PSM模式,再次進(jìn)行數(shù)據(jù)收發(fā)任務(wù)。M5310-A使用的AT命令見表1所列。
表1 AT命令
在數(shù)據(jù)收集和處理過程中,對于環(huán)境溫濕度數(shù)據(jù),可以重復(fù)多次讀取傳感器的數(shù)值并進(jìn)行均值濾波處理,使數(shù)據(jù)更加準(zhǔn)確。
監(jiān)測系統(tǒng)服務(wù)程序部署于百度云服務(wù)器內(nèi),通過9999端口與M5310-A進(jìn)行通信,M5310-A通過UDP協(xié)議向云服務(wù)器的9999端口發(fā)送數(shù)據(jù)。監(jiān)測系統(tǒng)服務(wù)程序一方面負(fù)責(zé)接收、解析、存儲M5310-A發(fā)送的數(shù)據(jù),并將歷史數(shù)據(jù)以電腦端Web頁面可視化呈現(xiàn);另一方面向外提供接口給手機APP查詢最新數(shù)據(jù)使用。監(jiān)測系統(tǒng)服務(wù)程序整體使用Spring Boot框架進(jìn)行搭建,數(shù)據(jù)的存儲和查詢使用持久層框架Mybatis,數(shù)據(jù)庫采用MySQL,針對Web頁面使用Thymeleaf和Echarts進(jìn)行頁面可視化效果的渲染和顯示;使用Netty網(wǎng)絡(luò)程序應(yīng)用框架接收并處理M5310-A發(fā)送的UDP數(shù)據(jù)。系統(tǒng)服務(wù)程序結(jié)構(gòu)如圖5所示。
圖5 系統(tǒng)服務(wù)程序結(jié)構(gòu)
手機APP采用原生開發(fā)方式,基于Java語言編寫,通過HTTP協(xié)議與百度云服務(wù)器通信,采用OkHttp網(wǎng)絡(luò)請求框架[14]向云服務(wù)器發(fā)送GET請求,云服務(wù)器中的系統(tǒng)服務(wù)程序接收到GET請求后會回復(fù)一組響應(yīng)數(shù)據(jù);APP使用Gson庫將獲取到的HTTP響應(yīng)數(shù)據(jù)解析為Java對象,最終將Java對象顯示到綁定的界面控件上,完成數(shù)據(jù)顯示任務(wù)。手機APP設(shè)計框圖如圖6所示。
圖6 手機APP設(shè)計框圖
由于百度云服務(wù)器擁有公網(wǎng)IP且具有防火墻功能,因此在測試前,需打開相應(yīng)端口的防火墻權(quán)限,放行Web和APP對云服務(wù)器的請求。
使用IDEA內(nèi)置的MAVEN工具將服務(wù)程序打包成jar包,將jar包上傳至云服務(wù)器并啟動,啟動服務(wù)程序界面如圖7所示。
圖7 啟動服務(wù)程序界面
服務(wù)程序成功啟動后,將終端上電,等待其以5 min的時間間隔發(fā)送10次數(shù)據(jù)。發(fā)送完畢后,使用Chrome瀏覽器訪問云服務(wù)器的8080端口,服務(wù)器顯示的Web界面如圖8所示。
圖8 Web界面
啟動手機APP查詢最近一次設(shè)備上報的數(shù)據(jù)。點擊“獲取最新數(shù)據(jù)”按鈕,數(shù)據(jù)界面可顯示最新一次上報的時間、環(huán)境溫濕度、設(shè)備溫度、設(shè)備電量、信號強度和測溫周期等數(shù)據(jù)。數(shù)據(jù)顯示界面如圖9所示。觀察Web界面和手機APP顯示,二者的溫濕度等數(shù)據(jù)一致且完整。
圖9 APP數(shù)據(jù)顯示界面
本文主要開發(fā)了一種基于NB-IoT的遠(yuǎn)程供熱溫度監(jiān)測系統(tǒng),該系統(tǒng)運用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸,具有運行穩(wěn)定、數(shù)據(jù)傳輸完整和功耗低等特點。熱力公司工作人員可使用電腦端Web頁面和安卓APP查看歷史和最新數(shù)據(jù),實現(xiàn)了物聯(lián)網(wǎng)技術(shù)與集中供熱系統(tǒng)的結(jié)合,為集中供熱系統(tǒng)向智慧化、低碳化轉(zhuǎn)變提供了參考。后續(xù)研究將豐富手機APP等功能。
物聯(lián)網(wǎng)技術(shù)2023年11期