李 博, 練 傲, 于海鵬
(河南工程學(xué)院 計(jì)算機(jī)學(xué)院, 鄭州 451191)
近年來,因?yàn)閺N房天然氣泄漏爆炸和一氧化碳中毒致人死亡的事故時(shí)有發(fā)生,對(duì)人們的生命財(cái)產(chǎn)造成了重大的危害。 氣體燃料常用于家庭廚房的使用,常見的氣體燃料甲烷和煤氣都具有一定的危險(xiǎn)性。 天然氣在空氣中達(dá)到一定濃度時(shí),遇明火易爆炸;煤氣中的主要成分一氧化碳(CO)是一種劇毒氣體,天然氣的不完全燃燒也會(huì)產(chǎn)生CO 氣體。美國(guó)消防管理署發(fā)布了2014 年~2016 年住宅建筑廚房火災(zāi)統(tǒng)計(jì)報(bào)告,平均每年報(bào)告188 800 起住宅廚房火災(zāi)。 這些火災(zāi)共造成195 人死亡,3 800 人受傷,4.6 億美元財(cái)產(chǎn)損失。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,人們對(duì)智能城市的概念進(jìn)行了許多嘗試。 物聯(lián)網(wǎng)安全監(jiān)測(cè)是其中重要的一部分。 近幾年,中國(guó)在智能家居方面的發(fā)展受到了支持和關(guān)注,但是在物聯(lián)網(wǎng)安全監(jiān)控上還有待提高。 在關(guān)于廚房環(huán)境的有毒氣體監(jiān)控方面,由于劇毒氣體CO 是無色無味的,人們不可能及時(shí)發(fā)現(xiàn)其泄漏,并且當(dāng)人因中毒昏迷時(shí),也無法及時(shí)做出反應(yīng),如果可以及時(shí)通知到緊急聯(lián)系人,就可以有效的避免氣體泄漏造成的二次傷害。 J Kim認(rèn)為,設(shè)計(jì)一套對(duì)室內(nèi)有毒、有害氣體的實(shí)時(shí)監(jiān)測(cè),并能在空氣質(zhì)量相當(dāng)劣質(zhì)時(shí)進(jìn)行實(shí)時(shí)報(bào)警的系統(tǒng)很有必要。一款能實(shí)時(shí)監(jiān)測(cè)廚房?jī)?nèi)環(huán)境狀態(tài)監(jiān)控預(yù)警裝置,對(duì)保障生命財(cái)產(chǎn)安全、減少事故的發(fā)生是非常有意義的事情。
本設(shè)計(jì)是針對(duì)家庭廚房環(huán)境有毒氣體的監(jiān)控系統(tǒng)。 運(yùn)用最新的物聯(lián)網(wǎng)技術(shù),通過無線網(wǎng)絡(luò)技術(shù),將傳感器、執(zhí)行器與前端應(yīng)用相結(jié)合。 系統(tǒng)服務(wù)端采用B/S(瀏覽器/服務(wù)器)框架開發(fā),其監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 System structure diagram
本系統(tǒng)由信息采集模塊、數(shù)據(jù)存儲(chǔ)模塊、執(zhí)行器模塊、無線通信模塊、前端模塊組成。
1.2.1 信息采集模塊
由于天然氣的主要成分為甲烷(CH4),而煤氣的主要成分是CO,系統(tǒng)僅需對(duì)這兩種氣體進(jìn)行監(jiān)控即可。 因此,信息采集模塊采用MQ 系列的氣體傳感器采集氣體濃度。 MQ 系列中的MQ-4 氣體傳感器對(duì)空氣中的CH4 氣體敏感,MQ-7 氣體傳感器對(duì)空氣中的CO 氣體敏感。 MQ 系列的傳感器可以通過AOUT 引腳產(chǎn)生一個(gè)模擬電壓,STM32 可以將這個(gè)模擬電壓值裝換成實(shí)際濃度值。
1.2.2 數(shù)據(jù)存儲(chǔ)模塊
數(shù)據(jù)存儲(chǔ)模塊主要負(fù)責(zé)存儲(chǔ)用戶信息及各個(gè)傳感器采集到的數(shù)據(jù)信息。 系統(tǒng)中采用MySql 關(guān)系數(shù)據(jù)庫來建立。 構(gòu)建數(shù)據(jù)庫實(shí)體-關(guān)系圖(Entity-Relationship,ER),E-R 圖主要反映了數(shù)據(jù)世界中實(shí)體及實(shí)體與實(shí)體之間的關(guān)系。 具體的E-R 如圖2 所示。
圖2 數(shù)據(jù)庫E-R 圖Fig.2 Database E-R diagram
1.2.3 執(zhí)行器模塊
系統(tǒng)中選用的蜂鳴器為有源蜂鳴器,通風(fēng)扇是由雙L9110S 芯片電機(jī)驅(qū)動(dòng)。 有源蜂鳴器控制較為簡(jiǎn)單,只需要向蜂鳴器上的I/O 口發(fā)送高低電平,高電平時(shí)蜂鳴器發(fā)出響聲,低電平時(shí)蜂鳴器停止響動(dòng)。通風(fēng)扇可以通過引腳IA 和IB 控制其狀態(tài),具體組合方式見表1。
表1 通風(fēng)扇運(yùn)轉(zhuǎn)方向組合表Tab.1 Combination table of ventilation fan running direction
1.2.4 無線通信模塊
無線通信模塊采用樂鑫的ESP8266-01 模塊,如圖8 所示。 該模塊采用3.3 V 的直流電源,具有體積小、功耗低、支持透?jìng)鞯忍攸c(diǎn),且丟包現(xiàn)象比市場(chǎng)上其它產(chǎn)品較優(yōu)。 系統(tǒng)中ESP8266-01 模塊與STM32 開發(fā)板上的串口3 的引腳連接,STM32 通過串口3 向ESP8266-01 模塊發(fā)送AT 指令和發(fā)送接收數(shù)據(jù)。
1.2.5 前端模塊
服務(wù)器采用TomCat 應(yīng)用服務(wù)器開發(fā),頁面開發(fā)采用JSP 動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。 當(dāng)用戶進(jìn)行訪問時(shí),JSP 頁面會(huì)先從服務(wù)器獲取數(shù)據(jù),并將其寫入頁面中,然后返回一個(gè)靜態(tài)的HTML 頁面。 用戶可以通過頁面查看實(shí)時(shí)數(shù)據(jù)和控制設(shè)備狀態(tài),實(shí)時(shí)數(shù)據(jù)頁面如圖3 所示。
圖3 實(shí)時(shí)數(shù)據(jù)頁面Fig.3 Real time data page
2.1.1 系統(tǒng)軟件
系統(tǒng)在上電之后首先進(jìn)行各個(gè)部件的初始化,然后與服務(wù)器建立TCP 連接,并且打開透?jìng)髂J?。之后,系統(tǒng)開始向服務(wù)器發(fā)送一次心跳,服務(wù)器根據(jù)這次心跳修改系統(tǒng)狀態(tài),并且返回用戶在服務(wù)端設(shè)置的設(shè)備狀態(tài)。 系統(tǒng)根據(jù)設(shè)備狀態(tài)采集氣體濃度,并且根據(jù)設(shè)備狀態(tài)和氣體濃度控制執(zhí)行器,最后將數(shù)據(jù)信息發(fā)送到服務(wù)端,系統(tǒng)工作流程如圖4 所示。
圖4 系統(tǒng)工作流程Fig.4 Program flow chart of the system
系統(tǒng)向服務(wù)器發(fā)送一次心跳后,獲取的狀態(tài)信息為JSON 類型,JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和編寫,也易于機(jī)器解析和生成。 其格式為:
"{"id":"1","co":"1","ch4":"1","fan":"1"," buzzer":"1"}"
其中,每位代表一個(gè)設(shè)備的一種狀態(tài)。 分別為系統(tǒng)是否在線,傳感器、執(zhí)行器是否工作。
由于服務(wù)器給出上傳數(shù)據(jù)的API 是GET 請(qǐng)求方式,上傳數(shù)據(jù)的長(zhǎng)度低于1 024 個(gè)字節(jié),而且并不是通過瀏覽器的地址欄訪問。 因此,GET 請(qǐng)求方法只會(huì)從服務(wù)端請(qǐng)求資源或信息,而不會(huì)修改服務(wù)器資源,因此使用GET 請(qǐng)求即可完成。 如:
“GET /kitchen_gas/data_add.action? <uid =用戶key 值>&<?xì)怏w1 的id>=<?xì)怏w1 的濃度>&<?xì)怏w2 的id>=<?xì)怏w2 的濃度>”
2.1.2 服務(wù)器數(shù)據(jù)接收
當(dāng)服務(wù)器接收到請(qǐng)求后,會(huì)根據(jù)用戶傳來的ID信息進(jìn)行判斷,若該用戶不存在則結(jié)束處理,否則根據(jù)上傳的氣體ID 號(hào)進(jìn)行判斷,獲取時(shí)間戳,并保存在數(shù)據(jù)庫中。 根據(jù)數(shù)據(jù)信息,判斷是否開啟或者結(jié)束報(bào)警定時(shí)器。 數(shù)據(jù)處理流程如圖5 所示。
圖5 服務(wù)端處理數(shù)據(jù)流程圖Fig.5 Flow chart of server processing data
2.1.3 Web 端實(shí)現(xiàn)
Web 端包括實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)、個(gè)人信息以及設(shè)備情況等主要頁面,如圖6 所示。
圖6 Web 端功能圖Fig.6 Front end function diagram
其中,歷史數(shù)據(jù)頁面可以按條數(shù)和日期查詢數(shù)據(jù);個(gè)人信息頁面也可以查看和更改個(gè)人信息,并設(shè)置緊急聯(lián)系人;設(shè)備情況頁面可以查詢?cè)O(shè)備是否在線及傳感器和執(zhí)行器的狀態(tài);個(gè)人設(shè)置頁面實(shí)現(xiàn)系統(tǒng)的退出功能。 實(shí)時(shí)數(shù)據(jù)頁面可以查看實(shí)時(shí)數(shù)據(jù)并顯示報(bào)警進(jìn)度,在此頁面上通過jQuery 實(shí)現(xiàn)ajax 異步訪問服務(wù)器獲得數(shù)據(jù),服務(wù)器會(huì)根據(jù)頁面提交的用戶ID 和當(dāng)前時(shí)間戳從數(shù)據(jù)庫中取出數(shù)據(jù),并轉(zhuǎn)換成json 字符串返回給頁面,頁面再通過解析json 字符串顯示數(shù)據(jù)。 一般返回的json 字符串形式如下:
{"id1":[["2020-04-16 16:16:26","184.448"]],"lasttime":"1588411159721",
"state":{"id1":["158700535947","1587031819000"]}}
當(dāng)系統(tǒng)在線后,用戶可以設(shè)置各個(gè)傳感器或者執(zhí)行器的狀態(tài)。 暫時(shí)只分為可以采集信息或者執(zhí)行狀態(tài)和停止采集信息和停止執(zhí)行狀態(tài)。 通過表單提交方式將頁面表單的數(shù)據(jù)傳入服務(wù)器中,服務(wù)器將這個(gè)數(shù)據(jù)存入數(shù)據(jù)庫中,等待下一次系統(tǒng)的心跳時(shí),將數(shù)據(jù)返回給系統(tǒng)。
監(jiān)控系統(tǒng)的監(jiān)測(cè)和控制部分是以STM32F407芯片為核心,該型號(hào)以嵌入式核心Cortex-M4 架構(gòu),功能較為齊全。 STM32 開發(fā)板占地較小且功能齊全,性能較為優(yōu)越。 STM32 開發(fā)板的主要作用是接收傳感器的數(shù)據(jù),控制執(zhí)行器工作,與服務(wù)端進(jìn)行數(shù)據(jù)通信。 硬件連線如圖7 所示。
圖7 硬件連接圖Fig.7 Hardware connection diagram
2.3.1 測(cè)試環(huán)境與系統(tǒng)參數(shù)設(shè)置
為保證實(shí)驗(yàn)安全,實(shí)驗(yàn)在相對(duì)密閉的環(huán)境下進(jìn)行。 將裝有CH4 和CO 的容器靠近傳感器模擬廚房環(huán)境(實(shí)際使用時(shí)可將傳感器布置于靠近氣源的位置)。
由于天然氣在空氣中的爆炸極限是5%~15%,而一般要求可燃?xì)怏w報(bào)警器報(bào)警點(diǎn)設(shè)置為被檢測(cè)可燃?xì)怏w爆炸下限的1%~25%范圍內(nèi),也就是允許的安全濃度在0.25%~1%以下,其體積分?jǐn)?shù)為400~10 000 ppm,通過各方面考慮,實(shí)驗(yàn)中甲烷的濃度閾值設(shè)定為2 000 ppm。
本設(shè)計(jì)是通過ADC 接口獲取模擬電壓值,并通過公式將電壓值轉(zhuǎn)換成實(shí)際濃度值。 一般規(guī)定空氣中混有0.002 4%CO 即可引起中毒,0.002 4%的濃度等于24 ppm。 因此設(shè)計(jì)中,設(shè)置CO 的閾值為24 ppm。與天然氣類似,CO 的濃度也是通過開發(fā)板上的ADC 接口獲取MQ-7 傳感器的模擬電壓值,系統(tǒng)通過模擬電壓值,計(jì)算得到實(shí)際的濃度值。
2.3.2 天然氣的環(huán)境安全測(cè)試
實(shí)驗(yàn)開始,首先開窗通風(fēng),測(cè)出當(dāng)前環(huán)境下CH4 氣體的濃度穩(wěn)定在40 ppm 左右,如圖8 所示。然后關(guān)閉門窗,將釋放的CH4 靠近傳感器,此時(shí)空氣中CH4 氣體升高如圖9 所示,濃度在4 min 后急劇上升超出安全閾值,系統(tǒng)將開啟蜂鳴器警報(bào)和通風(fēng)扇工作,服務(wù)器端設(shè)置的定時(shí)器用來判斷在15 min內(nèi)(可根據(jù)安全需求自主設(shè)定)該氣體濃度是否降下,并將報(bào)警進(jìn)度展示在頁面上,如圖10 所示。如果15 min仍未降低,系統(tǒng)將通過短信平臺(tái)的API向用戶綁定的緊急聯(lián)系人發(fā)送報(bào)警短信。
圖8 有害氣體濃度實(shí)時(shí)數(shù)據(jù)曲線Fig.8 Real time data curve of harmful gas concentration
圖9 CH4 氣體實(shí)時(shí)數(shù)據(jù)變化曲線Fig.9 CH4 concentration data change curve
圖10 甲烷報(bào)警進(jìn)度Fig.10 Methane alarm progress
2.3.3 一氧化碳?xì)怏w環(huán)境安全測(cè)試
與測(cè)試CH4 類似,在測(cè)試之前可以檢測(cè)在空氣清潔環(huán)境下,CO 在空氣中的濃度為10 ppm 左右,如圖8 所示。 當(dāng)空氣中CO 氣體濃度升高,如圖11 所示,超出所設(shè)定24 ppm 閾值時(shí),系統(tǒng)處理過程與2.3.2相同,其CO 氣體濃度報(bào)警進(jìn)度如圖12 所示。
圖11 CO 濃度實(shí)時(shí)數(shù)據(jù)變化曲線Fig.11 CO concentration data change curve
圖12 CO 報(bào)警進(jìn)度Fig.12 CO alarm progress
2.3.4 系統(tǒng)傳感設(shè)備狀態(tài)監(jiān)控與數(shù)據(jù)監(jiān)測(cè)
系統(tǒng)上電后,登錄到Web 端系統(tǒng),可以在實(shí)時(shí)數(shù)據(jù)頁面查看傳感器采集的實(shí)時(shí)數(shù)據(jù),如圖8 所示。當(dāng)濃度高于閾值時(shí),Web 將顯示報(bào)警進(jìn)度,如圖10、圖12 所示。 在歷史數(shù)據(jù)頁面可以查詢?nèi)我馊掌诘臍v史數(shù)據(jù),其結(jié)果如圖13 所示。
圖13 歷史數(shù)據(jù)Fig.13 Historical Data
當(dāng)設(shè)備連接上服務(wù)器時(shí),服務(wù)器會(huì)顯示設(shè)備在線,并且顯示傳感器和執(zhí)行器情況,如圖14 所示。當(dāng)設(shè)備未連接到服務(wù)器時(shí),服務(wù)器會(huì)顯示用戶離線。
圖14 設(shè)備在線狀態(tài)Fig.14 Device Online Status
傳感器功能的測(cè)試,以MQ-7 CO 傳感器為例。系統(tǒng)支持在服務(wù)器端遠(yuǎn)程控制終端設(shè)備(傳感器和執(zhí)行器)的開啟和關(guān)閉。 用戶在設(shè)備界面關(guān)閉CO傳感器后,當(dāng)空氣中的CO 氣體濃度變化時(shí),服務(wù)器端的監(jiān)測(cè)數(shù)據(jù)在6 min 內(nèi)CO 氣體濃度沒有再發(fā)生變化。 測(cè)試結(jié)果如圖15 所示。
圖15 CO 傳感器關(guān)閉后氣體濃度實(shí)時(shí)數(shù)據(jù)Fig.15 Gas concentration data after the CO sensor turned off
執(zhí)行器的測(cè)試,以測(cè)試通風(fēng)扇為例。 將CO 氣體濃度升高超出閾值時(shí)(如圖16 所示),在設(shè)備界面關(guān)閉通風(fēng)扇,CO 氣體濃度處于高位狀態(tài),如圖17所示。 當(dāng)在設(shè)備界面重新打開通風(fēng)扇后,系統(tǒng)監(jiān)測(cè)到1 min 后CO 氣體濃度下降到約10 ppm(低于系統(tǒng)閾值)。 測(cè)試結(jié)果如圖11 中所見。
圖16 CO 氣體濃度超出閾值24 ppmFig.16 CO concentration exceeds the threshold by 24 ppm
圖17 關(guān)閉通風(fēng)扇后CO 氣體濃度實(shí)時(shí)數(shù)據(jù)Fig.17 Data of CO gas concentration after the fan turned off
本系統(tǒng)能夠通過CH4 和CO 濃度傳感器實(shí)時(shí)檢測(cè)家庭廚房環(huán)境下天氣及有害氣體濃度的變化情況,安全管理人員可通過設(shè)置報(bào)警閾值的方式,實(shí)現(xiàn)廚房有害氣體的被動(dòng)安全預(yù)警。 報(bào)警后由單片機(jī)控制風(fēng)扇開啟,實(shí)現(xiàn)降低有害氣體濃度的作用,避免中毒或爆炸等惡性災(zāi)害的發(fā)生。 同時(shí),系統(tǒng)提供一個(gè)Web 端平臺(tái),可以實(shí)時(shí)從云端監(jiān)測(cè)廚房有害氣體濃度水平,并遠(yuǎn)程控制風(fēng)扇和蜂鳴器的開啟或關(guān)閉,使系統(tǒng)發(fā)生異常時(shí)可以被實(shí)時(shí)發(fā)現(xiàn),并及時(shí)處理,做到了兩層安全保障。