徐漢斌,遲 楊,尤軍杰,周 雷
(1.武漢理工大學 機電工程學院,湖北 武漢 430070;2.南京計量測試中心,江蘇 南京 210058)
天然氣能源和廣大人民群眾的生活密不可分,然而天然氣能源在給人們?nèi)粘I顜肀憷耐瑫r,也帶來了潛在的安全隱患問題。對天然氣泄漏事件缺乏監(jiān)測而引發(fā)的危害人們生命財產(chǎn)的事件時有發(fā)生。目前對于可燃氣體泄漏檢測,傳統(tǒng)的方法一般是采用獨立式的可燃氣體報警器進行單點現(xiàn)場監(jiān)測或者采用分線式和總線式的可燃氣體報警器進行多節(jié)點監(jiān)測,然后利用有線通信方式構(gòu)建局域網(wǎng)絡進行統(tǒng)一管理。但是獨立式可燃氣體報警器不能實現(xiàn)遠程監(jiān)控,而有線通信組網(wǎng)的方式又存在布線施工以及維護等問題[1-3]。針對以上問題,設計一種基于物聯(lián)網(wǎng)的天然氣泄漏監(jiān)測系統(tǒng),采用WIFI無線通信的方式,依托于中國移動免費開放的物聯(lián)網(wǎng)OneNET云平臺,可以實現(xiàn)對天然氣泄漏的遠程實時監(jiān)控及預警。
天然氣的主要成分為甲烷氣體,對天然氣泄漏的監(jiān)測實則是對甲烷(CH4)氣體濃度的監(jiān)測。該系統(tǒng)由探測終端、OneNET云平臺以及監(jiān)測客戶端3部分組成。探測終端具備環(huán)境數(shù)據(jù)的采集、處理、報警響應、以及上傳數(shù)據(jù)到云平臺的無線通信功能。云服務平臺起到對探測終端傳輸數(shù)據(jù)的管理、存儲作用。監(jiān)測客戶端支持電腦、手機、Pad等,通過互聯(lián)網(wǎng)對云平臺進行遠程訪問,從而實現(xiàn)對探測終端的實時監(jiān)測和控制。系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框架
探測終端如圖1所示,主要包括微控制器、電源模塊、網(wǎng)絡傳輸模塊、GPS定位模塊、聲光報警模塊和甲烷氣體檢測模塊。
微控制器采用STM32F103C8T6芯片,通過USART接口分別與ESP8266 WIFI模塊、 GPS模塊連接,利用片上資源ADC實現(xiàn)對甲烷氣體檢測模塊輸出信號的模數(shù)轉(zhuǎn)換獲取甲烷氣體濃度,并利用片上豐富的I/O口來設計聲光報警模塊。
對于可燃氣體的檢測,若按傳感器的檢測原理分類,主要有催化燃燒型、半導體型、紅外線吸收型、熱導型和光干涉型等[4-5]。系統(tǒng)中CH4氣體檢測模塊采用的是英國Dynament公司的甲烷紅外傳感器。該傳感器采用非分散性紅外線(non-dispersive infrared, NDIR)技術(shù)。它是一種基于氣體吸收理論的方法。紅外光源發(fā)出的紅外輻射經(jīng)過一定濃度待測的氣體吸收之后,與氣體濃度成正比的光譜強度會發(fā)生變化,通過求出光譜強度的變化來得到氣體的濃度[6]。該傳感器采用一體化電路設計,集成度高,內(nèi)置溫度補償功能,相對于市場上使用較多的催化燃燒式傳感器在測量精度、靈敏度、使用壽命和抗干擾能力等方面更具備優(yōu)勢。
探測終端通過設定甲烷氣體濃度閾值分為低濃度、高濃度2級自動報警機制。聲光報警模塊采用LED燈閃爍的顏色,以及無源蜂鳴器震蕩頻率來實現(xiàn)聲光報警的分級功能。如果甲烷紅外氣體傳感器檢測到環(huán)境中甲烷濃度達到低濃度閾值將觸發(fā)1級報警,LED黃燈閃爍,蜂鳴器低頻鳴響;如果甲烷紅外氣體傳感器檢測到環(huán)境中甲烷濃度達到高濃度閾值將觸發(fā)2級報警,LED紅燈閃爍,蜂鳴器高頻鳴響;如果檢測環(huán)境正常,則LED綠燈閃爍,蜂鳴器不鳴響。
甲烷氣體檢測模塊將探測到的甲烷氣體濃度數(shù)據(jù)傳遞給微控制器,微控制器根據(jù)報警濃度閾值進行判斷,如果氣體濃度超過報警濃度閾值,則觸發(fā)聲光報警模塊執(zhí)行動作。通過ESP8266 WIFI模塊和GPS模塊將采集到的甲烷氣體濃度數(shù)據(jù)和經(jīng)緯度數(shù)據(jù)實時上傳至OneNET平臺,并可接受執(zhí)行平臺指令。
物聯(lián)網(wǎng)的體系架構(gòu)可以分為3個層次:感知層、網(wǎng)絡層和應用層[7]。OneNET平臺在物聯(lián)網(wǎng)體系中作為網(wǎng)絡層,為感知層和應用層搭建連接橋梁,分別為上下游提供中層核心能力,能夠適應于高并發(fā)以及海量終端接入的應用場景,采用了分布式結(jié)構(gòu)和多重數(shù)據(jù)保障機制,并且支持多種通信協(xié)議。同時OneNET平臺也提供Saas層業(yè)務服務,可以為用戶提供第三方應用開放平臺,方便快速搭建用戶自己的Web和APP應用[8-11]。
首先在OneNET平臺注冊賬號,創(chuàng)建產(chǎn)品。在建立產(chǎn)品時,需要填寫相關(guān)信息、選擇設備接入?yún)f(xié)議,本系統(tǒng)采用MQTT協(xié)議。建立完產(chǎn)品后,在產(chǎn)品中添加設備。OneNET平臺會給每一個設備分配唯一的ID和APIKey用于設備的識別管理,并且提供應用平臺通過Restful API方式實現(xiàn)與關(guān)聯(lián)設備的數(shù)據(jù)流雙向交互。筆者利用OneNET平臺創(chuàng)建一個天然氣泄漏監(jiān)測項目,并在項目下關(guān)聯(lián)一個探測終端設備和生成監(jiān)測客戶端的Web應用。在探測終端設備中添加探測終端上傳的數(shù)據(jù)流,通過應用編輯器進行監(jiān)測客戶端頁面設計,添加顯示控件和控制控件,最后發(fā)布Web網(wǎng)頁鏈接。
探測終端具備甲烷氣體濃度數(shù)據(jù)實時采集、地理位置定位、自動聲光報警以及與OneNET平臺雙向通信的功能,為合理高效地利用MCU(microcontroller unit),增強探測終端的快速響應處理能力,采用時間觸發(fā)合作式任務調(diào)度器的機制[12]進行探測終端的軟件框架設計。軟件主程序流程如圖2所示。
圖2 軟件主程序流程
系統(tǒng)首先對MCU上的硬件外設進行初始化,包括對相關(guān)外設時鐘、GPIO口、ADC、USART、TIM、看門狗初始化,然后通過延時函數(shù)讓甲烷紅外傳感器預熱1 min,達到穩(wěn)定工作狀態(tài)。之后創(chuàng)建各個任務函數(shù),設定任務循環(huán)周期,并將其添加至任務鏈表。任務包括ADC采集轉(zhuǎn)換氣體濃度數(shù)據(jù)、聲光報警判別處理、網(wǎng)絡連接/平臺接入、發(fā)送數(shù)據(jù)到平臺、接收平臺消息。接下來程序?qū)⑦M入無限循環(huán)的任務調(diào)度部分。整個系統(tǒng)以TIM時基為基準,通過定時器中斷來記錄任務等待時間和更新任務的工作狀態(tài),通過在任務調(diào)度中查詢?nèi)蝿真湵淼漠斍叭蝿諣顟B(tài)來決定是否執(zhí)行該任務。
筆者重點實現(xiàn)天然氣探測系統(tǒng)的物聯(lián)網(wǎng)通信,因此在探測終端軟件部分主要闡述與OneNET平臺通信的軟件設計。
為了使程序結(jié)構(gòu)清晰明了,減低程序的耦合性,增加其可讀性、可維護性,對通信程序進行分層處理,分為平臺協(xié)議層和網(wǎng)絡設備層。網(wǎng)絡設備層又分為設備驅(qū)動層和設備應用層,如圖3所示。平臺協(xié)議層封裝了基于MQTT協(xié)議的相關(guān)函數(shù)用于與OneNET平臺通信,設備應用層封裝ESP8266模塊相關(guān)函數(shù),設備驅(qū)動層封裝USART串口相關(guān)讀寫、發(fā)送、接收函數(shù)。
圖3 通信程序分層結(jié)構(gòu)
3.2.1 網(wǎng)絡連接
探測終端通信模塊采用ESP8266-01S,探測終端通過USART串口對ESP8266模塊進行讀寫操作,發(fā)送AT指令可訪問到OneNET平臺。
ESP8266_SendCmd("AT ", "OK"); //啟動ESP8266-01S芯片
ESP8266_SendCmd("AT+CWMODE=3 ", "OK"); //配置AP和Station模式
ESP8266_SendCmd("AT+CWJAP="ACRS-YF","87360188yf" ","GOT IP");//接入無線網(wǎng)絡
ESP8266_SendCmd("AT+CIPSTART="TCP","183.230.40.39",6002 ", "CONNECT");//連接OneNET平臺服務器地址端口
3.2.2 MQTT通信
探測終端與OneNET平臺進行通信采用的是MQTT協(xié)議[13]。MQTT是基于C/S架構(gòu)下發(fā)布/訂閱模式的消息傳輸協(xié)議。作為一種即時通信協(xié)議,它具有開銷小,對網(wǎng)絡環(huán)境適應性強的特點,可以保持實時通信并有效降低功耗和網(wǎng)絡流量,極其適用于物聯(lián)網(wǎng)領(lǐng)域?;诖藚f(xié)議,在探測終端通過ESP8266模塊訪問到OneNET平臺時,首先需要發(fā)送CONNECT(連接服務端)控制報文,將探測終端的設備名、訪問的用戶名、密碼以及相關(guān)會話設置發(fā)送至OneNET平臺服務器,從而建立探測終端與OneNET平臺之間的會話通信。之后為了保證探測終端與OneNET平臺之間的網(wǎng)絡通信長連接,需要探測終端向OneNET平臺定時發(fā)送PINGREQ(心跳請求)控制報文。查看OneNET平臺關(guān)于MQTT的修改協(xié)議可知,在上傳數(shù)據(jù)到平臺時,應該采用MQTT協(xié)議PUBLISH控制報文,特別的是,PUBLISH報文的可變報頭的主題名必須是“$dp”。系統(tǒng)中需要上傳的數(shù)據(jù)流包括紅、黃、藍3個LED燈的狀態(tài)數(shù)據(jù),蜂鳴器的狀態(tài)數(shù)據(jù),地理位置信息數(shù)據(jù),甲烷氣體濃度數(shù)據(jù)。數(shù)據(jù)流采用json格式如下:
/* Red_LED 紅燈狀態(tài)
Yellow_LED 黃燈狀態(tài)
Green_LED 綠燈狀態(tài)
Beep 蜂鳴器狀態(tài)
CH4_Concentration 甲烷氣體濃度值
GPS 地理經(jīng)緯度數(shù)據(jù)
*/
{
"datastreams":[ { "id":"Red_LED", "datapoints":[{"status": red_led_status}]},
{ "id":"Yellow_LED", "datapoints":[{"status": yellow_led_status}]},
{ "id":"Green_LED", "datapoints":[{"status": green_led_status}]},
{"id":"Beep","datapoints":[{"status": beep_status}]},
{ "id":"CH4_Concentration", "datapoints":[{"value": ch4_value}]},
{"id":"GPS","datapoints":[{"longitude":gps_lon ,"dimensions": gps_dim}]} ]
};
ESP8266模塊首先通過AT指令與OneNET平臺建立網(wǎng)絡連接,之后STM32F103C8T6微控制器將要發(fā)送的數(shù)據(jù)流封裝成json格式數(shù)據(jù)包寫入ESP8266模塊,遵照MQTT協(xié)議將數(shù)據(jù)包發(fā)送到OneNET平臺。至此完成探測終端上傳數(shù)據(jù)的一系列操作。
完成整個系統(tǒng)搭建后,對整個系統(tǒng)進行試驗測試。甲烷氣體在空氣中的爆炸界限為5%~15%,因此從安全性的角度考慮,以當前環(huán)境中甲烷氣體濃度所占爆炸下限值的百分比劃分報警等級,設定低濃度報警值為40%,高濃度報警值為60%。分別以濃度值為0.51%、2.53%、3.01%的甲烷瓶裝標準氣對探測終端依次進行通氣斷氣測試。登錄到監(jiān)測客戶端觀察甲烷濃度數(shù)據(jù)實時顯示情況以及報警狀態(tài)的變化。監(jiān)測客戶端界面如圖4所示。監(jiān)測客戶端顯示界面中折線圖顯示了在2018年6月4日 16:28 ~2018年6月4日 16:41這段時間內(nèi)對探測終端通入3種不同濃度的甲烷氣體測得數(shù)據(jù)值及相應變化時刻。儀表盤及控件開關(guān)顯示了當前甲烷氣體濃度占爆炸下限的百分比為60.13%,處于高濃度報警狀態(tài),Red_LED 點亮,蜂鳴器高頻報警,Yellow_LED和Green_LED關(guān)閉,圖上顯示了該探測終端的地理位置信息。
圖4 監(jiān)測客戶端界面顯示
通過測試結(jié)果可以看出,本系統(tǒng)能夠?qū)崟r準確地監(jiān)測到甲烷氣體百分比數(shù)據(jù),并及時對監(jiān)測結(jié)果做出報警響應?;谥袊苿用赓M開放的物聯(lián)網(wǎng)OneNET云平臺提供的Saas服務,可以有效幫助用戶進行天然氣泄漏的遠程實時監(jiān)控。這種基于物聯(lián)網(wǎng)云服務實現(xiàn)遠程監(jiān)控的方式,符合“萬物互聯(lián)”的時代發(fā)展趨勢,必將在可燃氣體監(jiān)測領(lǐng)域發(fā)揮著越來越重要的作用。