www.366.net

基于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 系统App设计

本文的App设计平台为Keil和Matlab 2016b。采用KeilApp设计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设备都能进行操作。使用浏览器不需要专门的客户端App。该层主要完成的操作为用户管理、设备管理、数据管理与可视化仪表盘。

应用服务层采用前后端分离的设计思路,前端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].电子技术与App工程,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.

?
XML 地图 | Sitemap 地图