趙琳, 行致源
(西安航空學院 1.計算機學院; 2.飛行器學院, 西安 710089)
在國內外的研究中,傳統煙霧報警系統的設計非常全面且成熟。傳統的煙霧報警系統為多線制系統,準確率低。目前,二總線制系統應用廣泛[1]。主要的實現方法為:利用CAN總線組網,選取某個特定的接口規范連接顯示設備[2]。隨著無線傳感器技術的不斷發展,傳統煙霧報警系統從有線連接方式變為無線連接方式。
基于無線傳感器網絡(WSN)的煙霧報警系統已經成為主流。WSN通過協同合作感知自組網中檢測對象的信息并周期性的將采集到的數據發送到終端設備。由于無線傳感器節點受到能量供給、存儲容量、計算能力等因素的限制[3],制約了無線傳感器自組網絡的性能提升。傳感器設備屬于靈敏元件,易受外界條件干擾,容易得到不可靠數據,因此需要進行數據融合處理,增加數據的可靠性,提高預警準確度是WSN中的一個關鍵技術[4]。
通常進行數據融合的方法有歸一化、限幅、環境補償等[3]。文獻[4]采用自適應預測加權方法進行數據融合,文獻[5]采用平均值法濾波進行數據融合,文獻[6]采用模糊邏輯算法進行數據融合。這些算法都對異質傳感器數據融合效果有明顯提高,對于提高同質多傳感器數據的可靠性研究較少。
文獻[7]中提出了一種歐氏距離結合相關函數改進的自適應加權融合算法實現對同質傳感器數據的融合,本文在此基礎上結合k-近鄰算法對文獻[7]中的算法進行改進,增強數據的可靠性,提高預警的準確性。本文選取MQ-2型氣敏傳感器元件,通過Arduino UNO 控制器編程以及Java程序設計,建立起無線傳感器網絡的煙霧預警系統,并用Python對改進的數據融合預警算法進行仿真驗證。
多無線煙霧檢測報警系統通常包括無線數據采集模塊、無線傳輸模塊、單片機控制模塊、聲光報警模塊等組成[8]。系統結構框圖如圖1所示。
無線同質多傳感器網絡煙霧預警系統的工作方式是:通過煙霧傳感器對外界環境的煙霧濃度進行感知,將收集到的數據傳給節點控制器,節點控制器對數據進行篩選決策,超過閾值的數據,經無線傳輸模塊傳給匯聚節點控制器,匯聚節點控制器再將多數據發送給上位機進行數據融合、數據顯示和預警操作。
無線同質多傳感器網絡煙霧預警系統的軟件是控制數據采集篩選決策和數據融合決策的執行部分,涉及到不同的數據篩選和數據融合算法。其軟件系統主要由數據采集層、數據匯聚層和應用層構成,并且具有相應的無線通訊協議定義、數據字格式組成,如圖2所示。

圖1 硬件系統結構框圖

圖2 軟件系統結構框圖
軟件層次的核心功能在于通過節點控制器的數據篩選降低無效數據的傳輸量。匯聚節點將數據傳送給上位機,上位機通過算法進行預警決策提供更加準確預警效果。
預警系統終端包括:主控制器,Zigbee模塊,煙霧傳感器檢測模塊等。
主控制器采用Arduino UNO R3控制器,該控制器主要以ATmega328為處理器芯片,工作頻率為16 MHz,32 KB的閃存(ATmega328)其中0.5 kb的bootloader,2 KB SRAM(ATmega328)數字和模擬信號端口共20個。使用USB串口轉換芯片atmega8u2。該控制器具有功耗低,轉換速度快等優點。煙霧檢測傳感器與控制器的模擬信號接口連接,無線通訊模塊與主控制器連接,再與pc的USB口連接。
無線通訊模塊采用XBee-PRO OEM RF 模塊是與ZigBee/IEEE 802.15.4兼容的解決方案,可以滿足低成本低功耗無線傳感網絡的特殊需求。XBee-PRO在范圍上可以超越標準ZigBee模塊2-3倍。 XBee-PRO模塊工作在ISM 2.4 GHz頻率波段, 建立RF通信不需要任何配置,該模塊的默認配置支持寬范圍的數據系統應用。
煙霧檢測模塊采用MQ-2氣體煙霧傳感器。MQ-2 煙霧傳感器是基于 QM-NG1探頭的氣體傳感器。該傳感器靈敏度高,可檢測范圍廣。MQ-2 煙霧傳感器共引出三個引腳,分別是地線GND、電源Vcc和信號線S。S端接入Arduino UNO控制器的一個模擬輸入引腳上。報警模塊采用蜂鳴器發聲模塊。該模塊集成了三極管放大電路,模塊引出三個引腳,分別是電源正Vcc,電源地GND,信號S,信號S接到 UNO 控制器的數字引腳。
系統的軟件設計包括兩部分,主控制器程序設計以及上位機預警顯示軟件設計。
主控制器按功能分為末梢節點和匯聚節點兩類。分別針對這兩類控制器編寫運行程序。程序開發采用C語言,軟件采用Arduino 1.8.2。末梢節點控制器程序實現功能:其一,對煙霧傳感器的信號進行檢測,按照閾值對采集到的數據進行分類;其二,將無效數據丟棄,將有效數據經無線通訊模塊傳送給匯聚節點。匯聚節點控制器程序實現功能:其一:經無線通訊模塊接收傳來的有效數據,并對多個有效數據融合;其二,將融合后的數據發送給上位機進行顯示;其三,接收上位機傳來的預警信號,若有,則通知蜂鳴器報警。主控制器程序流程圖如圖3所示。

圖3 軟件系統流程圖
匯聚節點通過usb接口與上位機相連,由pc上位機對采集到的數據進行實時顯示并進行分析。上位機使用Java+MySQL搭建數據實時顯示和分析環境。通過java對pc機串口通訊的數據讀取獲得匯聚節點發送來的數據。在對數據進行實時顯示的同時,將數據寫入MySQL數據進行歷史數據保存,用于數據分析和k-近鄰算法應用。
同質傳感器產品性能,執行參數一致,且應用于同一場合。故假設傳感器測量值之間獨立同分布。已知樣本集DataSet存放了帶標簽的歷史數據,某一時刻采集到的多傳感器數據為向量X,向量X與樣本集DataSet中的各樣本距離由歐氏距離公式得到,其定義如式(1)。
(1)
具體算法如下:
S1:匯聚節點將某一時刻傳感器采集到的數據傳輸給上位機;
S2:上位機程序從數據庫中提取含有標簽信息的歷史數據;
S3:將歷史數據轉換成DataSet數據集格式;
S4:使用公式(1)計算向量X與DataSet數據集中每個點的距離;
S5:選取與當前向量X最近的k個點;
S6:選擇前k個點出現頻率最高的標簽作為當前向量X的標簽;
S7:根據標簽內容確定是否觸發蜂鳴器;
S8:將當前向量X寫入數據庫。
以二分類問題(k=1)為例,討論分類器錯誤率。測試樣本x,其最臨近樣本為z,分類器出錯的概率(即x與z類別不同的概率)如式(2)。

(2)
同款同質傳感器可假設樣本獨立同分布。對任意x總能在其任意近范圍內找到訓練樣本z.令c*=argmaxc∈yP(c|x)P(c|z)表示貝葉斯最優分類器的結果,有

(1+P(c*|x))(1-P(c*|x))≤
2*(1-P(c*|x))
由上式可見最近鄰分類器錯誤率不超過貝葉斯最優分類器錯誤率的兩倍。
本文仿真環境:winXp,python 2.7.14, numpy-1.14.0, matplotlib-2.1.2。仿真采集假設3個煙霧傳感器。訓練集數據其中兩個傳感器仿真數據輸出散點圖效果如圖4所示。

圖4 兩分量數據輸出效果散點圖
仿真選取含有1 500個樣本的DataSet作為測試數據,檢測分類器的正確性。為了避免數值差值較大的特征值對結果的影響,測試前首先對DataSet進行歸一化處理。歸一化方法如式(3)。
Result=(DataSetValue-min)/(max-min)
(3)
將經過歸一化處理后得到的Result集合,其中90%作為訓練樣本集,10%數據用于測試分類器正確率。測試結果如圖5所示。

圖5 Result數據集測試結果
本文硬件系統測試環境在室內進行,系統安裝連通,ZigBee無線通訊與末梢節點組建通訊,設計三個無線傳感器位于房間不同位置,上位機軟件設置串口波特率為9 600 b/s。實時數據顯示系統如圖6所示,歷史數據查看系統如圖7所示。

圖6 實時顯示系統

圖7 歷史數據查看系統
5.2 測試結果
(1)煙無數據采集模塊
本項目測試煙霧采集及報警模塊功能,用燃燒物模擬煙霧產生,當達到一定煙霧濃度,測試蜂鳴器報警狀況,測試結果如表1所示。

表1 煙霧采集及預警模塊功能測試結果
(2)無線通訊模塊
本項目測試不同距離范圍內,收據傳送和接收情況。主控制器程序中設置采樣間隔為500 ms,波特率為9 600 b/s,不同距離范圍內測試結果表2所示。

表2 不同距離范圍內無線通訊數據發送和接收結果
該無線傳感器網絡具有良好的無線數據接收和發送以及智能報警功能。對傳感器數據處理過程中采用k-近鄰算法機器學習算法,通過歐式距離和歸一法對同質多傳感器數據進行了融合。從算法仿真結果看提高了預警的準確度,降低了誤報率。