基于物聯(lián)網(wǎng)架構(gòu)的智能火災(zāi)預(yù)警系統(tǒng)的設(shè)計
本文介紹了一種基于物聯(lián)網(wǎng)架構(gòu)的智能火災(zāi)預(yù)警系統(tǒng)的設(shè)計,以ZigBee無線傳感器網(wǎng)絡(luò)為底層的數(shù)據(jù)采集和傳輸網(wǎng)絡(luò),完成對火災(zāi)信息的準(zhǔn)確感知。WSN節(jié)點以CC2530和CC2591為處理和無線收發(fā)單元,以DHT21和MQ傳感器為數(shù)據(jù)采集單元,實現(xiàn)了多傳感器數(shù)據(jù)采集。采用Qt技術(shù)設(shè)計了系統(tǒng)GUI,基于qextserialport類和SQLite數(shù)據(jù)庫實現(xiàn)了系統(tǒng)的串口通信和數(shù)據(jù)庫操作。測試表明,系統(tǒng)準(zhǔn)確可靠,GUI界面友好,易于操作。
物聯(lián)網(wǎng)(Internet Of Things,IOT)技術(shù)的提出和快速發(fā)展為火災(zāi)預(yù)警技術(shù)的發(fā)展提供了新的思路和解決方案。當(dāng)前,火災(zāi)預(yù)警系統(tǒng)作為智能家居、樓宇自動化的重要組成部分,已經(jīng)得到廣泛應(yīng)用和普及。但是,系統(tǒng)的實時性和準(zhǔn)確性一直有待提高,傳統(tǒng)的總線制火災(zāi)系統(tǒng)在使用中已經(jīng)暴露出了很多問題,包括布線的種種弊端以及高虛警率和漏警率等。鑒于此,本文設(shè)計了一種基于物聯(lián)網(wǎng)架構(gòu)的智能火災(zāi)預(yù)警系統(tǒng)。
1 系統(tǒng)概述
系統(tǒng)采用物聯(lián)網(wǎng)架構(gòu)設(shè)計,按照其四層結(jié)構(gòu)模型,以ZigBee無線傳感器網(wǎng)絡(luò)(ZigBee—WSN)為底層的感知識別層,以GSM/GPRS或Inter net為網(wǎng)絡(luò)構(gòu)建層,管理層和應(yīng)用層則采用PC和智能手機(jī)相結(jié)合的方式。系統(tǒng)的整體結(jié)構(gòu)如圖1所示。
底層數(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ù)實際需要隨機(jī)布置,具有可任意“播撒”的特點。這樣,若干傳感節(jié)點通過2.4 GHzISM信道不斷地將環(huán)境感知數(shù)據(jù)發(fā)送給匯聚節(jié)點,再由其匯聚給管理節(jié)點。管理節(jié)點作為ZigBee網(wǎng)絡(luò)的協(xié)調(diào)器,負(fù)責(zé)整個網(wǎng)絡(luò)的建立、信道選擇、地址分配以及節(jié)點的加入和退出等,并通過RS232與控制管理中心PC通信??刂乒芾碇行膽?yīng)提供良好的人機(jī)交互環(huán)境,實時顯示網(wǎng)絡(luò)的狀態(tài),存儲網(wǎng)絡(luò)上傳的數(shù)據(jù)。同時,還可以對多傳感器采集數(shù)據(jù)進(jìn)行信息融合,達(dá)到對火災(zāi)的智能判別。在確定存在火情的情況下,能夠進(jìn)行聲光、短信報警,并啟動自動消防設(shè)備。
2 系統(tǒng)硬件設(shè)計
2.1 處理器單元設(shè)計
感知識別層采用ZigBee—WSN技術(shù),負(fù)責(zé)完成復(fù)雜環(huán)境下的火災(zāi)信息感知。系統(tǒng)中,各傳感節(jié)點的處理器單元和無線收發(fā)單元分別選擇TI公司的CC2530芯片和CC2591芯片。CC2530內(nèi)部集成了工業(yè)標(biāo)準(zhǔn)的增強(qiáng)型8051內(nèi)核、符合2.4 GHz IEEE 802.15.4的RF收發(fā)器、21個可編程邏輯的GPIO、5通道的DMA、8通道可配置分辨率的ADC、看門狗定時器以及AES安全協(xié)處理器等。因此,CC2530以其較高的性價比成為高校開展科研、企業(yè)進(jìn)行產(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é)點的傳輸能力可達(dá)500~1000 m,且穿透能力得到了較大的提升。
系統(tǒng)WSN節(jié)點的硬件電路如圖2所示。
2.2傳感器單元設(shè)計
參考文獻(xiàn)對火災(zāi)產(chǎn)生的原因、火災(zāi)預(yù)警原理及火災(zāi)信號選取做了詳細(xì)的分析?;诖耍鶕?jù)火災(zāi)發(fā)生的前期特征,系統(tǒng)分別選取了溫度、濕度、煙霧和CO濃度作為火災(zāi)監(jiān)測對象。各傳感節(jié)點采用多傳感器技術(shù),分別連接了DHT21溫濕度傳感器、MQ2煙霧傳感器和MQ7一氧化碳傳感器。DHT21是含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器,采用單排4針引腳封裝。使用時,只需將DATA引腳連接到MCU的任意GPIO即可,這里是連接到CC2530的P1 5引腳。另外,為了確保CC2530對DHT21有足夠的驅(qū)動能力,在DHT21 DATA引腳接有5.1 kΩ的上拉電阻,確保芯片有合適的灌電流。這樣,只要按照DHT21的邏輯時序編寫程序,控制MCU引腳的輸入/輸出,就可以從DATA引腳準(zhǔn)確讀出溫濕度數(shù)據(jù)。
MQ2和MQ7傳感器都屬于氣敏型傳感器,兩者的原理相似,都屬于MQ傳感器。MQ傳感器所采用的氣敏材料是在清潔空氣中電導(dǎo)率極低的SnO2,當(dāng)將它放置于某種敏感氣體環(huán)境中時,電導(dǎo)率將隨該種敏感氣體濃度的增大而增大。因此,在驅(qū)動MQ傳感器時,只需根據(jù)傳感器特性搭建合理的驅(qū)動電路即可。MQ傳感器的輸出均為模擬量,故應(yīng)交由MCU進(jìn)行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~20 kΩ。當(dāng)空氣中的敏感氣體濃度增加時,電導(dǎo)率增加,Rs下降,故輸出電壓Uout增大。電位器RL除了起到限流作用外,最主要的作用就是實現(xiàn)對WSN節(jié)點靈敏度的調(diào)節(jié)和校準(zhǔn)。由于MQ傳感器內(nèi)部的氣敏元件在不同環(huán)境下對不同種類、不同濃度的氣體有著不同的阻值Rs,因此為精確考慮,在溫、濕度變化較大的環(huán)境中,需要對節(jié)點的靈敏度進(jìn)行調(diào)節(jié),這也是系統(tǒng)增加濕度測量的一個主要原因。
3 系統(tǒng)軟件設(shè)計
3.1 ZigBee—WSN軟件設(shè)計
底層的數(shù)據(jù)采集網(wǎng)絡(luò)采用ZigBee2007協(xié)議規(guī)范設(shè)計,基于TI公司提供的半開源Z-Stack協(xié)議棧開發(fā)。系統(tǒng)的整體流程如圖3所示。
3.2 系統(tǒng)GUI設(shè)計
由于要求控制管理中心PC提供良好的人機(jī)交互環(huán)境,故采用圖形用戶界面(GraphICal User Interface ,GUI)設(shè)計。采用GUI設(shè)計的優(yōu)勢就在于它提供的界面具有友好性,可以幫助減少用戶的認(rèn)知負(fù)擔(dān),滿足不同用戶的設(shè)計需求。當(dāng)前較為流行的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.7 SDK完成的,該軟件版本集成了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)的頭文件(logind lg.h、firesystem.h)和界面文件(logindlg.ui、firesystem.ui)。
控制管理中心PC要接收網(wǎng)絡(luò)管理節(jié)點發(fā)送的環(huán)境監(jiān)測數(shù)據(jù),因此實現(xiàn)串口通信是進(jìn)行GUI設(shè)計的關(guān)鍵。Qt本身并沒有提供串口控制類,故需要采用第三方編寫的qextserialport類。qextsetialport類實際上是QIODevice的派生類,使用時,需要為工程添加相應(yīng)的類文件qextseri albase.cpp、qextserialbase.h以及win_qextserialport.cpp、win_qextserialport.h。設(shè)計控制管理窗口時,為了保證系統(tǒng)配置的靈活性,在UI設(shè)計窗口中分別添加“端口號”、“波特率”、“數(shù)據(jù)位”、“校驗位”、“停止位”5個Combo BOX下拉列表。然后通過按鍵Push Button進(jìn)行系統(tǒng)的開啟和關(guān)閉設(shè)計。Push Button的觸發(fā)采用的是Qt提供的信號與槽機(jī)制,所有從QObject類及其子類派生的類都可以使用該機(jī)制。信號與槽機(jī)制是Qt的核心機(jī)制,它為用戶提供了一種高級接口,該接口可用于各類應(yīng)用對象之間的通信。這里僅給出實現(xiàn)串口通信的幾個重要函數(shù)。
另外,網(wǎng)絡(luò)上傳的數(shù)據(jù)還需要通過數(shù)據(jù)庫進(jìn)行存儲和查詢,至少保證能夠查詢7天內(nèi)的火災(zāi)監(jiān)控數(shù)據(jù)。Qt支持絕大多數(shù)的數(shù)據(jù)庫,包括Oracle、SQLServer、MySQL等。這些大中型的數(shù)據(jù)庫往往用于較大規(guī)模系統(tǒng)的數(shù)據(jù)存儲,開發(fā)和維護(hù)都需要專人負(fù)責(zé),因此成本較高。而針
對本系統(tǒng)所做的火災(zāi)環(huán)境監(jiān)測,只需要一個靈活易用的小型數(shù)據(jù)庫即可。SQLite是一個輕量級的開源關(guān)系數(shù)據(jù)庫,采用C語言編寫,整體代碼僅3萬行,能夠支持絕大多數(shù)的ANSI SQL92標(biāo)準(zhǔn)。相對于傳統(tǒng)數(shù)據(jù)庫,它的實時性強(qiáng),處理速度快,系統(tǒng)開銷小,底層的控制能力強(qiáng)。具體設(shè)
計時,首先在工程文件Firesystem.pro中添加代碼:QT+=SQL。由于Qt默認(rèn)安裝了SQLite和ODBC的數(shù)據(jù)庫驅(qū)動,因此在使用時,只需添加相應(yīng)的驅(qū)動語句即可。其具體過程如下:
這里,使用QSqlDatabase類實現(xiàn)Qt與SQLite的連接,并驅(qū)動該數(shù)據(jù)庫。若驅(qū)動失敗,可以通過QMessageBox彈出錯誤提示。驅(qū)動成功后,將數(shù)據(jù)存放于數(shù)據(jù)庫文件firEDAta.db中。此外,還需要使用QSqlQuery類,它為操縱和執(zhí)行SQL語句提供了一種方式,能夠?qū)崿F(xiàn)數(shù)據(jù)庫操作的所有功能。這樣,通過QSqlQuery類可以在QSqlDatabase實例上執(zhí)行SQL語句,完成創(chuàng)建、查詢、修改數(shù)據(jù)庫等操作。
系統(tǒng)測試時,GUI顯示的實時監(jiān)控狀況如圖4所示。