赛马会26码会员图|香港赛马会怎么去|

基于NB-IoT和STM32的數據融合智慧消防系統設計

2020-02-07 13:02:52 物聯網技術 2020年1期

曾彥鈞 李越 東文 許萍 吳先鵬 劉紫燕

摘 要:針對現有消防系統維護成本高、安裝困難、數據利用率低等問題,設計一種基于窄帶物聯網(NB-IoT)的智慧消防系統。采用STM32L151作為主控芯片,將GY-906型溫度傳感器、CX-1088型光電煙霧傳感器和HK1100C型水壓傳感器采集的溫度、煙霧、水壓等信息通過NB-IoT網絡上傳至云端服務器,將數據利用樸素貝葉斯算法進行數據融合后以可視化的方式呈現。經測試,該系統可以及時反饋消防信息,協助消防部門掌控火災狀況。

關鍵詞:智慧消防系統;窄帶物聯網;數據融合;可視化;STM32L151;傳感器

中圖分類號:TP393-34文獻標識碼:A文章編號:2095-1302(2020)01-00-06

0 引 言

隨著我國經濟的快速發展,建筑逐漸向高層、高密度、功能綜合化等方向發展。建筑構造愈加復雜,導致安防問題層出不窮。據統計,我國高層建筑34.7萬幢,其中近一半的消防設施不到位,消防設施平均完好率小于50%[1]。得益于物聯網技術的發展,智慧消防系統應運而生,解決了消防信息資源共享、自動化信息處理等問題。

目前,國內學者對智慧消防系統提供了多種研究方法和思路:曹元軍等人提出的基于大型消防物聯網與互聯網融合的智慧消防系統,闡述了消防物聯網與互聯網融合的體系框架,分析了構建智慧消防系統的關鍵技術[1];李卿等人提出了基于無線傳感器網絡的消防報警系統,介紹了無線傳感器網絡技術應用于消防報警系統的實施方案,實現了節點通過傳感器全方位地對環境參數進行采集、處理和傳送,通過采集節點信息和操縱控制平臺同時進行險情預警[2]。但其傳輸層采用WiMax(Worldwide Interoperability for Microwave Access,全球互通微波訪問)、ZigBee等協議進行數據傳輸,節點之間通過RF(Radio Frequency,射頻)模塊進行通信,傳輸過程不穩定且功耗高。單個節點傳感器采集數據并直接計算分析,將結果上傳至控制中心,不具備數據綜合利用與分析的優勢。

NB-IoT(Narrow Band Internet of Thing,窄帶物聯網)具備覆蓋廣、容量大、成本低、功耗低、架構優等特點[3-4]。因此,使用窄帶物聯網技術的消防系統融合了消防物聯網與互聯網,成為當前研究的趨勢之一。本文設計了基于NB-IoT的智慧消防系統,采用STM32微處理器作為主控芯片,使用煙霧傳感器、溫度傳感器、水壓傳感器實時采集數據并打包上傳云處理中心,完成數據分析與融合,經由可視化界面呈現,實現傳感器無線部署、數據實時采集、數據綜合處理、可視化協助決策和設備自動監管等功能[5]。

1 系統功能與結構

該系統采用分層設計思想,將系統分為傳感器節點、虛擬專用服務器和客戶端,系統架構如圖1所示。

數據采集模塊由GY-906型煙霧傳感器群、CX-1088型溫度傳感器群、HK1100C型水壓傳感器群組成,可實現對環境數據的實時采集。

主控芯片STM32L151微處理器通過ADC(Analog-to-Digital Converter,模數轉換)或I2C(Inter-Integrated Circuit,集成電路總線)協議完成對于底層傳感器數據的采集并分析。

通信模塊采用NB-IoT將數據包上傳至云服務器,實現數據轉發。通信模塊將傳感器采集的數據先發送至物聯網網關,再上傳至云端服務器。

云端服務器是系統智能處理中心,實現數據預處理,數據融合,完成指令的下發和報警,當用戶請求時訪問數據庫,為可視化提供數據支撐。

客戶端層通過Web向各類聯網設備提供服務,包括用戶終端監測、消防部門報警和物業部門監測。Web端通過云端服務器與數據庫進行數據交互,實現交互式可視化界面,為用戶決策提供信息。

2 系統硬件設計

本系統硬件電路主要由4個部分組成:主控芯片、NB-IoT通信模塊、電源電路模塊和數據采集模塊。節點中主控芯片的通信串口與NB-IoT模塊通信串口相連接,GPIO(General-purpose input/output,通用輸入輸出端口)與PWRKEY相連,主控芯片通過輸出高低電平使能控制NB-IoT模塊。主控芯片的GPIO連接低功耗電源電路模塊的使能開關,通過輸出高低電平使能。數據采集根據不同端口連接主控芯片的I2C通信端或GPIO模塊[6]。

2.1 電源電路設計

電源電路分為電池穩壓電路,數據采集模塊供電電路。其中電池穩壓電路與電池直接相連,提供3.3 V的輸出電壓,為主控模塊、NB-IoT通信模塊等供電。數據采集供電模塊的輸入端與電池穩壓電路輸出端相連,使能端與主控芯片相連。

電池穩壓電路如圖2所示,所采用的TSP601230為一種高效同步升壓轉換器,輸入電壓為2.3~5.5 V,輸出電壓為2.5~5.5 V,在低負載期間TPS6123自動進入省電模式,待機電流僅為0.5 μA。穩壓電路中EN端高電平使能;SS端為芯片啟動延時端,一旦電容電壓達到輸入電壓值,芯片開始工作;SW端為轉換引腳,連接到芯片內部的電力場效應晶體管的漏極;PG引腳為開漏輸出,額定吸收電流達500 μA,PG輸出需要一個上拉電阻,且EN高電平使能;FB端為電流反饋輸入,通過外部電阻分壓調整輸出值;輸出端VOUT為主控芯片供電,通過R1,R2進行分壓,實現要求的輸出值Vo,計算公式如下:

數據采集模塊供電電路如圖3所示,所采用的ME6211系列的低壓差線性穩壓器其輸入電壓為2.0~6.5 V,輸出電壓為1.8~5.0 V,EN為使能管腳,接高電平時芯片正常工作。其中,ME6211C18M5G芯片輸出1.8 V為煙感中的D2(紅外LED)供電,ME6211C33M5G芯片輸出3.3 V,為溫度傳感器和煙霧傳感器中的D4(光敏二極管)供電。P3,P4端為使能端,連接主控芯片,由主控芯片使能控制數據采集模塊供電電路工作。

2.2 NB-IoT通信模塊電路

NB-IoT通信模塊電路如圖4所示,所采用的BC26-LPWA模塊為LCC貼片封裝,支持(UDP/TCP/MQTT/LwM2M)等協議棧[7-8],支持LTE Cat NB1頻段,發射功率為23 dBm,且PSM模式下典型耗流為3.5 μA。

2.3 數據采集模塊設計

本文中光電煙霧傳感器選用迷宮紅外光電煙霧傳感器CX-1088,該傳感器具有靈敏度高、感應范圍大、功耗低等優點。需要探測煙霧濃度時,主控芯片的PB7輸出高電平,煙霧傳感器工作,并輸出模擬量,主控芯片對模擬信號進行數模轉換并進行自適應均值濾波后存入數據隊列中[7]。溫度傳感器選用非接觸式紅外溫度傳感器GY-906。GY-906具有分辨率高、探測范圍大、可靠性高等優點,且其內部集成了紅外探測熱電堆芯片與信號處理專用芯片,能將熱信號處理并校準后轉換為數字信號通過I2C協議直接輸出到主控芯片。

3 系統軟件設計

本文的軟件設計平臺為Keil和Matlab 2016b。采用Keil軟件設計STM32的底層驅動程序和主程序,Matlab實現數據融合,二者均采用模塊化設計。

3.1 傳感器節點驅動程序設計

由于傳感器節點采用一次性鋰亞電池供電,所以需要最大限度降低系統功耗,故編寫驅動層,以主程序確保調用相應的硬件資源時,不會獨占操作系統時間片,從而提高系統運行效率,降低傳感器節點工作能耗。本傳感器驅動層體系結構如圖5所示。

AT指令模塊將NB-IoT模塊的AT指令集封裝為對應的命令,便于Main函數的直接調用。Queue模塊將不同數據以JSON(JavaScript Object Notation,JS對象簡譜)的格式存儲到特殊內存單元中,使主控芯片STM32休眠時依然能保存數據;Queue模塊封裝了隊列基本操作。DMA(Direct Memory Access,直接內存存取)模塊直接讀取ADC模塊、I2C模塊上數據采集模塊的數據,并將該數據傳送給Queue模塊處理。GPIO模塊通過輸出高低電平控制數據采集模塊、NB-IoT模塊電源的開關。定時器模塊定時喚醒ADC模塊與DMA模塊。RTC(Real-Time Clock,實時時鐘)模塊用于提供描述數據的實際時間。休眠模塊通過調用GPIO模塊關閉外部模塊電源,并關閉主控芯片內部除RTC源與內存備份區外的硬件資源。

3.2 傳感器節點主程序設計

主程序設計流程如圖6所示,主程序控制傳感器節點的各個硬件部分分時工作,且在數據無異常的情況下,傳感器將保持靜默,不向服務器上傳數據,以降低傳感器節點功耗。由圖6可以看出,主程序首先對傳感器節點初始化,初始化主要包括驅動層初始化,NB-IoT網絡初始化。隨后對工作參數進行設置。工作參數主要包括數據上報間隔、休眠間隔、報警閾值等參數。之后打開數據采集模塊電源并采集數據并分析,如果數據超過報警閾值,傳感器節點將打開蜂鳴器向用戶報警,并喚醒NB-IoT模塊,向服務器發出警告并上傳異常數據,傳感器節點將重復數據采集與數據上傳工作,直到警報解除;如果數據未超過報警閾值,傳感器節點將數據壓入數據隊列、關閉各數據采集模塊電源,并使主控芯片進入休眠狀態,到達喚醒時間后喚醒主控芯片,重復下一輪的數據采集。

3.3 服務器端設計

本系統服務器端采用B/S架構,如圖7所示。系統主要分為客戶端層、應用服務層和數據庫服務[9]。客戶端界面如圖8所示。

客戶端層是指用戶使用瀏覽器來操作的部分,使用瀏覽器進行操作具有跨平臺的優勢,無論是移動設備,還是PC設備都能進行操作。使用瀏覽器不需要專門的客戶端軟件。該層主要完成的操作為用戶管理、設備管理、數據管理與可視化儀表盤。

應用服務層采用前后端分離的設計思路,前端UI提供可視化的操作界面,用于支撐客戶端層的功能。后端服務執行各項業務邏輯,業務邏輯封裝成API接口,API接口設計采用RESTful API架構,便于二次開發。前后端通過Axios模塊來調用API接口完成數據交互。表1所列為設計的部分API。

由于數據安全的需要NB模塊只能訪問電信專用的服務器,需要完成北向應用對接。服務器上傳CA證書到物聯網平臺用于身份識別,所以使用HTTPS為通信協議。后端業務通過調用專用的API與物聯網平臺完成對接,物聯網平臺提供了基礎API包和公用事業(NB-IoT)API包,在平臺上創建應用后會獲得應用ID和密鑰,這個ID與密鑰是獲取AccessToken(鑒權令牌),每次調用API都需提供鑒權令牌,來保證調用的安全。注冊設備、刪除設備、設備狀態、命令下發、消息上報等操作都是通過調用API完成。后端各個服務之間通過proxyTable庫進行跨域實現服務之間的消息傳遞。表2所列為電信平臺提供的部分API。

數據庫服務層包含數據的查詢、處理與可視化,采用的數據庫系統是MongoDB,該數據庫系統具備執行查詢速度快、支持高并發、具有敏捷性和可擴展性的優點[10]。采用Mongoose庫操作數據庫實現查詢、更新、刪除等操作。

3.4 數據融合設計

本系統為了對環境進行全面感知,采集溫度、濕度、水壓、煙霧濃度等多種數據,構成異構數據庫。為求解環境火災風險值,需要對異構數據進行數據融合。本系統數據融合流程如圖9所示。首先對數據庫中的溫度、濕度、水壓、煙霧濃度等數據進行濾波,平滑數據中的噪聲和采集誤差;然后通過時間軸對準,實現異構數據的同步;再計算通過特征提取模塊的數據的貝葉斯概率,作為風險值,存入數據庫[9]。

3.4.1 數據濾波

本系統的數據濾波采用基于均方誤差的自適應加權濾波。此方法主要使用k-1時刻得到的濾波器參數,自主調節k時刻的濾波器參數,以適應信號和噪聲未知的或隨時間變化的均方誤差,實現均方誤差的最小化,最終實現濾波最優化,核心代碼如下:

for k = M:itr

x = xn(k:-1:k-M+1); //濾波器M個抽頭的輸入

y = W(:,k-1).' * x; //濾波器的輸出

en(k) = dn(k) - y ; //第k次迭代的誤差

W(:,k)=W(:,k-1)+2*mu*en(k)*x;

//濾波器權值計算

End

3.4.2 時間軸對齊

時間軸對齊采用插值時基法。該方法的核心在于逼近函數的構造,利用該函數將不同的數據對準到標準時基。該方法需要選取標準時基,由于溫度數據對于風險值貢獻最大,故選取溫度數據作為標準時基。其余數據采用最小二乘法進行擬合作為逼近函數,在標準時基處進行插值,得到對準后數據。

3.4.3 特征提取

考慮到本系統數據庫為異構數據庫,數據具有多維性,利用PCA(Principal Component Analysis,主成分分析)進行特征提取。求解目標矩陣中每一列的特征平均值,用各列減去該列的特征平均值,計算得到該矩陣的特征協方差矩陣。計算該協方差矩陣的特征值和特征向量,并對其特征值進行遞減排序。提取前k個特征值和特征向量進行回退,得到降維后的特征矩陣,核心代碼如下:

//求解特征值和特征向量

self.eigen_values, self.eigen_vectors = np.linalg.eig(covariance)

//對特征值進行遞減排序

idx = self.eigen_values.argsort()[::-1]

eigenvalues = self.eigen_values[idx][:self.k]

eigenvectors = self.eigen_vectors[:,idx][:,:self.k]

//將數據集X映射至指定的低維空間

X_transformed = X.dot(eigenvectors)

3.4.4 風險概率計算

本系統的數據具有更新快、規模大的特點,樸素貝葉斯算法對于大規模的增量數據處理效率較高,故選取該方法進行風險概率計算。采用.632自助法選取訓練集,假設特征之間相互獨立,學習從輸入到輸出的聯合概率分布,再基于此模型,輸入x求出使得后驗概率最大的輸出y,將y作為火災風險值。核心偽代碼如下:

def trainNB0(trainMatrix,trainCategory):

numTrainDocs = len(trainMatrix)

numWords = len(trainMatrix[0])

pAbusive = sum(trainCategory)/float(numTrainDocs)

p0Num = zeros(numWords)

p1Num = zeros(numWords)

p0Denom = 0.0

p1Denom = 0.0

for i in range(numTrainDocs):

if trainCategory[i] ==1:

p1Num += trainMatrix[i]

p1Denom += sum(trainMatrix[i])

else:

p0Num += trainMatrix[i]

p0Denom += sum(trainMatrix[i])

p1Vect = p1Num/p1Denom

p0Vect = p0Num/p0Denom

return p0Vect,p1Vect,pAbusive

4 系統測試

為測試所設計系統的正確性和實時性,分別在正常情況和模擬火災情況兩種情況下對系統進行測試。

正常情況:將系統置于木箱中,模擬無煙、室溫的室內環境,測試結果如圖10所示。可以看出,當濕度、溫度、煙霧均處于正常狀態,經融合所得的風險值(右側儀表盤)也遠低于報警線。此處,報警線為35,該數值利用已有數據經過訓練得出。

模擬火災情況:將系統置于同一木箱中,人工向木箱加入煙霧,并提高木箱的溫度,測試結果如圖11所示。

從圖11可以看出濕度為20%RH,低于環境平均水平,溫度為60 ℃,高于43 ℃,煙霧電壓為2.75 V,低于2.77 V,單個數據均處于危險范圍內。經融合所得的風險值為40高于初始設定的閾值35,系統報警。此外,可以在該系統中查看歷史數據,在模擬火災情況下濕度、溫度、煙霧值均有明顯跳變,證明本文所設計的系統的實時性良好。

5 結 語

本文設計了一種基于窄帶物聯網(NB-IoT)的智慧消防系統。本系統使用NB-IoT將多種數據傳輸至云端服務器,通過對采集到的數據融合處理,從而實現實時監管和達到協助決策的目的,并解決了傳統消防系統部署繁瑣、功耗過高、難于監管、聯動匱乏等問題。

注:本文通訊作者為劉紫燕。

參 考 文 獻

[1]曹元軍,朱艷,邵明鼎.基于大型樓宇物聯網與互聯網融合的智慧消防系統[J].工程建設與設計,2017(17):97-99.

[2]李卿,董淑敏.基于無線傳感器網絡的消防報警系統[J].電子設計工程,2016,24(18):119-122.

[3]邵澤華,物聯網結構的探索與研究[J].物聯網技術,2015,5(11):46-53.

[4]劉春燕.窄帶物聯網技術的特性[J].電子技術與軟件工程,2018(13):3.

[5]毛紅海.淺談窄帶物聯網技術在消防中的應用[J].數字技術與應用,2017(10):55-56.

[6]張靜,王廣雄,何朕.不穩定零動態系統的魯棒控制[J].控制理論與應用,2005(1):67-71.

[7]劉紫青,程燕,關聯,等.CoAP協議研究[J].電視技術,2013,37(7):192-196.

[8]余朋.網絡通信協議的分析與實現[J].電腦編程技巧與維護,2014(14):70-73.

[9]陸瑩,張宇.基于多傳感器信息融合的火災探測研究[J].消防界,2019,5(1):60-61.

[10]朱愛華,付曹政,曹鐘,等.基于Node.js框架和MongoDB數據庫的物流信息服務系統設計[J].北京建筑大學學報,2018,34(4):41-46.

?
赛马会26码会员图
晓游棋牌下载官网 幸运彩手机登录 河北快3开奖结果图 齐鲁七乐彩走势图 真钱捕鱼平台 浙江快乐12 重庆快乐十分彩计划 中国福利彩票双色球 湖南幸运赛车前三 安徽时时彩开奖结果查询