基于物联网的智能家居设计及数据处理
2022-07-14刘宇耀刘增力
刘宇耀,刘增力*,汤 辉
(1.昆明理工大学 信息工程与自动化学院,云南 昆明 650500;2.江西省科技基础条件平台中心,江西 南昌 330003)
0 引言
针对智能家居领域,目前市面已出现许多与物联网技术结合的智能家居设备应用,可以有效监测居住环境的适宜程度和安全情况。吴洋设计的智能家居系统可以通过传感器检测室内的火灾和煤气泄漏事件,通过NRF2401 无线通信方式通知用户及时处理[1]。吴允强设计的智能家居系统可通过手机向室内WiFi 发送命令控制智能家具开关,能远程控制家电运行[2]。岳骏采用STM32 单片机控制监测室内温湿度、光照强度及有害气体,并向用户发送相应的报警信息[3]。蒋盼盼设计的智能家居系统,可在远程通过WiFi 发送命令,协调室内Zigbee网关控制智能家居运行[4]。李亚慧设计了一款智能安防系统,采用人脸识别、红外探测技术以及重力感应技术,在门锁处监测是否有可疑人员并通知用户[5]。徐雍倡通过Zigbee 组网技术将传感器与家庭设备连接在一起,实现一体化管理,能够直接通过传感器数据控制家庭设备运行[6]。
对于大部分智能家居应用而言,对传感器监测结果的处理方式过于简单,不够完善,只是做最简单的判断,只要监测数据不在所设置的合适范围内,就会触发报警及相应措施。在此情况下,如果传感器出现故障或由于其他原因导致监测数值出现短暂异常,系统就会根据监测的异常结果做出错误判断,从而触发错误决策,造成一些智能家具响应并做出错误行为,比如可能在温度合适的时候开窗或者开风扇,从而产生完全不必要的消耗。本文对各感知设备监测的数据进行异常值检测和替换,能够使智能家居系统正常运行,减少不必要的能耗和错误决策。
1 系统整体设计
本文根据目前较为普遍的智能家居设备应用需求,通过STM32单片机搭载DHT22温湿度传感器、HC-SR501 红外传感器、BH1750 光照传感器以及MQ-5 可燃气体传感器,监测房间居住环境和安防情况,并通过WiFi 方式将数据上传至阿里云平台。在云端对传感器监测结果数据进行判决分析,做出相应决策,并通过WiFi 控制继电器和红外遥控器连接,开启和关闭各项智能设备如空调、灯具、窗户、蜂鸣器及报警系统等。
为了减少因传感器异常所产生的错误异常结果导致的决策误判,在对传感器监测的数据进行决策判决时,先将一定时间内的监测数据进行异常值检测和整合,得到一个综合数据,提高数据的可靠性,再根据得到的综合数据进行结果判断并执行相应决策。
2 系统硬件构成
2.1 系统构成
本文设计的智能家居系统,利用STM32 作为主控板搭载DHT22 温湿度传感器、MQ-5 可燃气体传感器、HC-SR501 红外传感器以及BH1750 光照传感器,对房间里的温湿度、可燃气体、光照强度及可疑人员进行监测,将监测得到的数据通过WiFi方式上传至阿里云平台,在云端对这些数据进行处理判断。室内的一些智能家具可通过WiFi 方式连接云端,接受云端指令控制。云端对传感器上传的监测数据进行判断,并通过WiFi 方式下发相应决策命令,控制不同智能家具运行。系统整体框架如图1 所示。
图1 系统框图
2.2 传感器模块
DHT22 温湿度传感器采用单总线形式连接单片机,可以同时监测0~99.9%范围的湿度以及-40~80 ℃的温度[7]。DHT22 传感器输出40 bit温湿度数据,包括16 bit 湿度数据、16 bit 温度数据及8 bit 校验位,其中温度16 bit 数据的最高位代表正负位。
HC-SR501 人体红外传感器连接单片机GPIO口,能够监测人体特有的红外辐射[8];输出0 或3.3 V的电平信号,经过处理得到0 或1 的结果,0 表示没有检测到人,1 表示监测到人。
BH1750 光照传感器通过光敏电阻感知光照强度变化,输出模拟信号。当受到的光照强度越强,其电阻就越小,输出就越大。输出数据通过模块内置的模数转化器(ADC)转化,连接单片机,输出光照强度的数字信号。
MQ-5 传感器以SnO2作为气敏材料,对空气中的可燃气体(液态气、天然气、煤气)较为敏感[9]。其输出是根据传感器在气体中电导率变化得到的模拟值,也需要接入单片机的ADC 模块进行模数转化。
2.3 传输模块
系统采用WiFi 方式传输数据。各个传感器的监测数据通过WiFi 模块连接并发送至阿里云服务器。系统将ESP8266 WiFi 模块设置工作在STA 模式,连接室内的WiFi 路由热点,将整个系统连接至网络[10]。系统连接阿里云物联网服务器,从而控制系统通过MQTT 订阅报文方式上传数据至阿里云物联网平台[11]。
2.4 智能家居应用
对于室内居住环境的控制,系统通过DHT22温湿度传感器监测室内温湿度,当温度过高、超过所设定阈值时,云端可通过WiFi 方式向智能风扇下发指令,开启风扇降温直至温度低于所设阈值后停止。当湿度数据高于所设阈值时,云端可下发开窗命令,控制电机打开窗户,当室内湿度达到合适范围时,再控制电机关闭窗户。
当确认房屋主人不在时,如果红外传感器监测到异常人员,云端下发蜂鸣器报警命令,并向用户发送提示信息。此时光照传感器的测量结果不会产生任何响应,室内灯具不会开启。而当确认房屋主人在家时,云端对红外传感器监测数据不做响应,如果光照传感器监测的光照强度低于所设阈值,云端下发开灯指令,控制室内灯具开启照明。
对于房间内可燃气体的监测,当MQ-5 可燃气体传感器监测到可燃气体浓度达到所设的浓度限值时,就会触发蜂鸣器报警,并向用户手机发送报警信息,通知用户及时处理。
3 数据处理
智能家居系统中的传感器在监测时,短时间内监测数据一般不会出现很大的浮动。而由于传感器本身的原因或者一些电路的原因,可能会出现少量明显不符合实际的数据,或者与大部分相邻数据差别很大的值,可以称之为异常值。这些异常值不能表现所监测的真实信息[12]。
在智能家居系统中,如果不事先对监测的数据进行处理就直接进行判断,一旦出现异常值,系统根据这个异常值进行决策判断,就会导致智能家具做出错误响应。例如,当湿度数据异常,突然高于所设阈值,系统就会控制窗户开启,但下次监测得到的湿度数据又恢复正常,窗户就又会关闭,这样就会造成不必要的电力消耗。如果红外传感器产生异常监测数据,甚至会导致误报警操作。
为使数据更加有效,系统监测结果更加可靠,需要对异常值进行检测。考虑到后续融合算法设计,为保持数据维度,在检测到异常值时,本文并非只将异常值简单地去除,而是将其进行修正替换。
本文采用的异常值检测方法为箱线图法。箱线图法是取出整个数据集中的最大值Xmax、最小值Xmin、上四分位数Q3、中位数Q2以及下四分位数Q1,如图2 所示[13]。
图2 数据四分位划分图
对统计得出的这5 位数进行计算,定义四分位距IQR为:
将上、下四分位数分别向上和向下扩展1.5 倍的四分位距,得出上下边界,并以此构成有效数据区间。在这个区间上的值视为有效值,反之,在区间外的值就视为异常值。公式如下:
式中:IQRL表示为下边界,IQRH表示为上边界。构成的有效值区间为[Q1-1.5IQR,Q3+1.5IQR],如图3所示。
由图3 所示,系统监测到一系列数据结果后,如果出现异常值,这些异常值自然就会存在于有效区间外。系统将有效值区间外的数据视为异常值,并对其进行修正。
图3 有效值区间
本文采用标准自适应修正算法进行修正。将异常值与除去异常值后的均值进行比较后,视情况进行一系列收敛运算,得到自适应的修正值作为替换值,减少误判影响。
设xi为所检测出的异常值,所收集的样本除去异常值后的均值用xm表示,两者的差值用Δ 表示,用x(表示修正值。
当xi>xm时,Δ=xi-xm,可以根据当前监测环境项目数据差值的大小设置3 种限值{Δ1,Δ2,Δ3},其中Δ1<Δ2<Δ3,则修正算法如下:
当xi<xm时,Δ=xm-xi,同样地,数据与均值之间的差值的大小设置3 种限值{Δ1,Δ2,Δ3},其中Δ1<Δ2<Δ3,则修正算法如下:
除了上述情况外,如果异常值与均值之间的差值过大,超过了所设的最大限值,即Δ>Δ3时,该异常值就完全没有了参考价值,直接用均值进行替换即可。
按照上述方法对异常值进行替换,考虑到异常值出现的影响因素,在数据量较少的情况,要比直接用均值替换更加符合实际,能够尽可能地减少异常值所带来的影响。
4 实验结果
本文设计的的智能家居系统的监测周期为4 s,系统每2 min 对采集到的监测数据进行整合处理,因此所处理的监测数据为30 个。
将各项传感器监测数据替换异常值后,得到更加合理准确的数据,再对2 min 内的数据进行求平均,得到其平均值作为最终的传感器的结果值上传至阿里云平台,作为智能家居的评判依据。这样就会大大减少智能家居系统误判的可能,使得整个系统的运行更加稳定,避免了不必要的消耗。以湿度数据为例,将2 min 内监测到的湿度数据按照上述方法处理,首先进行异常值检测,通过箱线图法得到监测数据的有效值区间,如果在数据向量中存在超出重设区间的值,就将其视为异常值,并进行替换。对数据进行异常值替换后的结果如图4 所示。
从图4 的结果可以看出,传感器在2 min 内监测到的湿度数据中出现了一个异常值,与相邻的值差别很大,不能表现当时真正的湿度情况。如果智能家居设置的阈值为当湿度超过50%系统就会控制电机打开窗户,那么当监测到传感器出现上述异常值时,系统就会做出错误决策,窗户就会打开。而经过处理后得到的数据更加平滑,更加合理,提高了整体数据的可靠性,降低了误差。对处理后的数据进行求平均,作为最终的结果,这样就不会触发错误的判决,也不会打开窗户,有效地减少了不必要的操作。
图4 替换异常值后数据对比
5 结语
针对智能家居系统在运行时出现异常值,导致云端做出错误判决并控制相应智能家具做出错误响应的问题,本文设置了一种数据处理方法。云端在收到传感器监测信息后,收集一定时间内的数据进行异常值检测替换,使数据更加合理准确。实验证明,将一定周期内的数据中的异常值进行修正,能够大大减少错误判断的产生,使系统做出正确决策,从而能有效避免家具错误运行。