許 馳
(遼寧工程技術(shù)大學(xué) 電子與信息工程學(xué)院,葫蘆島125105)
物聯(lián)網(wǎng)(Internet Of Things,IOT)[1]技術(shù)的提出和快速發(fā)展為火災(zāi)預(yù)警技術(shù)的發(fā)展提供了新的思路和解決方案。當前,火災(zāi)預(yù)警系統(tǒng)作為智能家居、樓宇自動化的重要組成部分,已經(jīng)得到廣泛應(yīng)用和普及。但是,系統(tǒng)的實時性和準確性一直有待提高,傳統(tǒng)的總線制火災(zāi)系統(tǒng)在使用中已經(jīng)暴露出了很多問題,包括布線的種種弊端以及高虛警率和漏警率等。鑒于此,本文設(shè)計了一種基于物聯(lián)網(wǎng)架構(gòu)的智能火災(zāi)預(yù)警系統(tǒng)。
系統(tǒng)采用物聯(lián)網(wǎng)架構(gòu)設(shè)計,按照其四層結(jié)構(gòu)模型[1],以ZigBee無線傳感器網(wǎng)絡(luò)(ZigBee-WSN)[2]為底層的感知識別層,以GSM/GPRS或Internet為網(wǎng)絡(luò)構(gòu)建層,管理層和應(yīng)用層則采用PC 和智能手機相結(jié)合的方式。系統(tǒng)的整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)
底層數(shù)據(jù)采集網(wǎng)絡(luò)采用ZigBee樹簇狀網(wǎng)絡(luò),由傳感節(jié)點、匯聚節(jié)點和管理節(jié)點組成。部署系統(tǒng)時,首先在待監(jiān)測區(qū)域固定若干匯聚節(jié)點,作為單位區(qū)域內(nèi)的路由器,匯聚網(wǎng)絡(luò)信息。匯聚節(jié)點采用消防電源長期供電,確保網(wǎng)絡(luò)的穩(wěn)定。傳感節(jié)點則可以根據(jù)實際需要隨機布置,具有可任意“播撒”的特點。這樣,若干傳感節(jié)點通過2.4GHz ISM 信道不斷地將環(huán)境感知數(shù)據(jù)發(fā)送給匯聚節(jié)點,再由其匯聚給管理節(jié)點。管理節(jié)點作為ZigBee網(wǎng)絡(luò)的協(xié)調(diào)器,負責(zé)整個網(wǎng)絡(luò)的建立、信道選擇、地址分配以及節(jié)點的加入和退出等,并通過RS232與控制管理中心PC通信??刂乒芾碇行膽?yīng)提供良好的人機交互環(huán)境,實時顯示網(wǎng)絡(luò)的狀態(tài),存儲網(wǎng)絡(luò)上傳的數(shù)據(jù)。同時,還可以對多傳感器采集數(shù)據(jù)進行信息融合,達到對火災(zāi)的智能判別。在確定存在火情的情況下,能夠進行聲光、短信報警,并啟動自動消防設(shè)備。
感知識別層采用ZigBee-WSN 技術(shù),負責(zé)完成復(fù)雜環(huán)境下的火災(zāi)信息感知。系統(tǒng)中,各傳感節(jié)點的處理器單元和無線收發(fā)單元分別選擇TI公司的CC2530 芯片和CC2591芯片。CC2530 內(nèi)部集成了工業(yè)標準的增強型8051內(nèi)核、符合2.4GHz IEEE 802.15.4的RF收發(fā)器、21個可編程邏輯的GPIO、5通道的DMA、8通道可配置分辨率的ADC、看門狗定時器以及AES 安全協(xié)處理器等[3]。因此,CC2530以其較高的性價比成為高校開展科研、企業(yè)進行產(chǎn)品研發(fā)的重要選項,已經(jīng)具有了較高的市場占有率。同時,系統(tǒng)還增加了射頻放大芯片CC2591,其目的就是保證網(wǎng)絡(luò)的傳輸距離和復(fù)雜室內(nèi)環(huán)境中的穿透能力,確保網(wǎng)絡(luò)數(shù)據(jù)的可靠傳輸。經(jīng)測試,采用了CC2591的WSN 節(jié)點的傳輸能力可達500~1000m,且穿透能力得到了較大的提升。
系統(tǒng)WSN 節(jié)點的硬件電路如圖2所示。
圖2 WSN節(jié)點電路
[4]和參考文獻[5]對火災(zāi)產(chǎn)生的原因、火災(zāi)預(yù)警原理及火災(zāi)信號選取做了詳細的分析。基于此,根據(jù)火災(zāi)發(fā)生的前期特征,系統(tǒng)分別選取了溫度、濕度、煙霧和CO 濃度作為火災(zāi)監(jiān)測對象。各傳感節(jié)點采用多傳感器技術(shù),分別連接了DHT21溫濕度傳感器、MQ2煙霧傳感器和MQ7一氧化碳傳感器。DHT21是含有已校準數(shù)字信號輸出的溫濕度復(fù)合傳感器,采用單排4針引腳封裝。使用時,只需將DATA 引腳連接到MCU 的任意GPIO 即可,這里是連接到CC2530的P1_5引腳。另外,為了確保CC2530對DHT21有足夠的驅(qū)動能力,在DHT21DATA引腳接有5.1kΩ 的上拉電阻,確保芯片有合適的灌電流。這樣,只要按照DHT21的邏輯時序編寫程序,控制MCU引腳的輸入/輸出,就可以從DATA 引腳準確讀出溫濕度數(shù)據(jù)。
MQ2和MQ7傳感器都屬于氣敏型傳感器,兩者的原理相似,都屬于MQ 傳感器。MQ 傳感器所采用的氣敏材料是在清潔空氣中電導(dǎo)率極低的SnO2,當將它放置于某種敏感氣體環(huán)境中時,電導(dǎo)率將隨該種敏感氣體濃度的增大而增大。因此,在驅(qū)動MQ 傳感器時,只需根據(jù)傳感器特性搭建合理的驅(qū)動電路即可。MQ 傳感器的輸出均為模擬量,故應(yīng)交由MCU 進行A/D 轉(zhuǎn)換。CC2530 的P0口是其內(nèi)部ADC的8通道輸入端口,故將MQ2和MQ7的輸出端分別連接至P0_0引腳和P0_1引腳。MQ 傳感器有6只針狀引腳,如圖2所示。2引腳和5引腳用于提供加熱電流,供電電壓為5 V,其余引腳用于信號取出。通過電路分析可知,4引腳和6引腳的輸出電壓為。RS為敏感體電阻,阻值一般為2~20kΩ。當空氣中的敏感氣體濃度增加時,電導(dǎo)率增加,RS下降,故輸出電壓Uout增大。電位器RL除了起到限流作用外,最主要的作用就是實現(xiàn)對WSN 節(jié)點靈敏度的調(diào)節(jié)和校準。由于MQ 傳感器內(nèi)部的氣敏元件在不同環(huán)境下對不同種類、不同濃度的氣體有著不同的阻值RS,因此為精確考慮,在溫、濕度變化較大的環(huán)境中,需要對節(jié)點的靈敏度進行調(diào)節(jié),這也是系統(tǒng)增加濕度測量的一個主要原因。
底層的數(shù)據(jù)采集網(wǎng)絡(luò)采用Zig-Bee2007協(xié)議規(guī)范設(shè)計,基于TI公司提供的半開源ZStack協(xié)議棧[6]開發(fā)。系統(tǒng)的整體流程如圖3所示。
圖3 系統(tǒng)整體流程
由于要求控制管理中心PC 提供良好的人機交互環(huán)境,故采用圖形用戶界面(Graphical User Interface,GUI)設(shè)計[7]。采用GUI設(shè)計的優(yōu)勢就在于它提供的界面具有友好性,可以幫助減少用戶的認知負擔(dān),滿足不同用戶的設(shè)計需求。當前較為流行的GUI 設(shè)計技術(shù)包括MiniGUI、OpenGUI、Microwindows/Nano-X、Qt等,另外,采用VC++、VB 等也可以完成GUI的開發(fā)。但是,這些軟件在API的封裝性、跨平臺性、代碼量、設(shè)計難度和開發(fā)周期上都存在很大差異,擁有各自的優(yōu)點和缺點。因此,綜合考慮各種因素,這里采用Qt技術(shù)設(shè)計系統(tǒng)的GUI。設(shè)計是基于Qt 4.7SDK 完成的,該軟件版本集成了Qt 4.7.4和Qt Creater 2.4.1集成開發(fā)環(huán)境(IDE)。
設(shè)計時,首先在main.cpp文件中創(chuàng)建QApplication類對象。QApplication類主要用于設(shè)置和管理GUI應(yīng)用程序及其控制流,包括控制主事件的循環(huán)、初始化和結(jié)束來自用戶接口或其他系統(tǒng)資源的應(yīng)用程序、提供會話管理等。然后就可以根據(jù)系統(tǒng)需要添加實際應(yīng)用,這里設(shè)計了一個系統(tǒng)登錄窗口和一個控制管理窗口,分別命名為logindlg.cpp和firesystem.cpp。添加完成后,將自動生成相應(yīng)的頭文件(logindlg.h、firesystem.h)和界面文件(logindlg.ui、firesystem.ui)。
控制管理中心PC 要接收網(wǎng)絡(luò)管理節(jié)點發(fā)送的環(huán)境監(jiān)測數(shù)據(jù),因此實現(xiàn)串口通信是進行GUI設(shè)計的關(guān)鍵。Qt本身并沒有提供串口控制類,故需要采用第三方編寫的qextserialport類。qextserialport類實際上是QIODevice的派生類,使用時,需要為工程添加相應(yīng)的類文件qextserialbase.cpp、qextserialbase.h以及win_qextserialport.cpp、win_qextserialport.h。設(shè)計控制管理窗口時,為了保證系統(tǒng)配置的靈活性,在UI設(shè)計窗口中分別添加“端口號”、“波特率”、“數(shù)據(jù)位”、“校驗位”、“停止位”5個Combo BOX 下拉列表。然后通過按鍵Push Button 進行系統(tǒng)的開啟和關(guān)閉設(shè)計。Push Button的觸發(fā)采用的是Qt提供的信號與槽機制,所有從QObject類及其子類派生的類都可以使用該機制。信號與槽機制是Qt的核心機制,它為用戶提供了一種高級接口,該接口可用于各類應(yīng)用對象之間的通信。這里僅給出實現(xiàn)串口通信的幾個重要函數(shù)。
另外,網(wǎng)絡(luò)上傳的數(shù)據(jù)還需要通過數(shù)據(jù)庫進行存儲和查詢,至少保證能夠查詢7天內(nèi)的火災(zāi)監(jiān)控數(shù)據(jù)。Qt支持絕大多數(shù)的數(shù)據(jù)庫,包括Oracle、SQL Server、MySQL等。這些大中型的數(shù)據(jù)庫往往用于較大規(guī)模系統(tǒng)的數(shù)據(jù)存儲,開發(fā)和維護都需要專人負責(zé),因此成本較高。而針對本系統(tǒng)所做的火災(zāi)環(huán)境監(jiān)測,只需要一個靈活易用的小型數(shù)據(jù)庫即可。SQLite[8]是一個輕量級的開源關(guān)系數(shù)據(jù)庫,采用C語言編寫,整體代碼僅3萬行,能夠支持絕大多數(shù)的ANSI SQL92標準。相對于傳統(tǒng)數(shù)據(jù)庫,它的實時性強,處理速度快,系統(tǒng)開銷小,底層的控制能力強。具體設(shè)計時,首先在工程文件Firesystem.pro中添加代碼:QT+=SQL。由于Qt默認安裝了SQLite和ODBC 的數(shù)據(jù)庫驅(qū)動,因此在使用時,只需添加相應(yīng)的驅(qū)動語句即可。其具體過程如下:
這里,使用QSqlDatabase類實現(xiàn)Qt與SQLite的連接,并驅(qū)動該數(shù)據(jù)庫。若驅(qū)動失敗,可以通過QMessage-Box彈出錯誤提示。驅(qū)動成功后,將數(shù)據(jù)存放于數(shù)據(jù)庫文件firedata.db中。此外,還需要使用QSqlQuery類,它為操縱和執(zhí)行SQL語句提供了一種方式,能夠?qū)崿F(xiàn)數(shù)據(jù)庫操作的所有功能。這樣,通過QSqlQuery類可以在QSql-Database實例上執(zhí)行SQL 語句,完成創(chuàng)建、查詢、修改數(shù)據(jù)庫等操作。
系統(tǒng)測試時,GUI顯示的實時監(jiān)控狀況如圖4所示。
圖4 控制管理中心GUI
系統(tǒng)根據(jù)物聯(lián)網(wǎng)架構(gòu)設(shè)計,采用ZigBee-WSN 完成數(shù)據(jù)采集與傳輸,保證了系統(tǒng)的實時性、可靠性及可移植性??刂乒芾碇行腉UI采用Qt設(shè)計,可以實現(xiàn)對火災(zāi)監(jiān)控數(shù)據(jù)的實時顯示、存儲、查詢等,豐富并完善了火災(zāi)預(yù)警系統(tǒng)的功能。測試表明,系統(tǒng)能夠準確地完成對復(fù)雜火災(zāi)環(huán)境的感知,相對于傳統(tǒng)火災(zāi)預(yù)警系統(tǒng),系統(tǒng)的魯棒性得到了較大的提升,虛警和漏警等狀況得到了有效改善。同時,系統(tǒng)GUI界面友好,操作簡單,可以很好地服務(wù)于火災(zāi)預(yù)警系統(tǒng)。
參考文獻
[1]劉云浩.物聯(lián)網(wǎng)導(dǎo)論[M].北京:科學(xué)出版社,2011.
[2]許馳,李新春.基于ZigBee-WSN 的溫濕度監(jiān)測系統(tǒng)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2012,12(6):36-39.
[3]Texas Instruments.CC253xUser's Guide[EB/OL].(2009-04)[2012-11-7].http://www.ti.com/.
[4]劉靜.基于人工嗅覺系統(tǒng)的智能火災(zāi)探測研究[D].山西:太原理工大學(xué),2007.
[5]紀鵬,吳成東,張云洲,等.無線傳感器網(wǎng)絡(luò)在建筑火難救援中的應(yīng)用[J].計算機測量與控制,2007,15(12):1785-1787.
[6]高守瑋,吳燦陽.ZigBee技術(shù)實踐教程[M].北京:北京航空航天大學(xué)出版社,2009.
[7]Jasmin Blanchette,Mark Summerfield.C++GUI Programming with Qt4[M].Prentice Hall,2008.
[8]張廣斌,宮金林,陳爽.SQLite嵌入式數(shù)據(jù)庫系統(tǒng)的研究與實現(xiàn)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2008(6):11-13.