APP下载

一种智能开窗控制系统的设计与实现

2022-12-23李宣达张丹妮

物联网技术 2022年12期
关键词:开窗温湿度窗户

李宣达,张丹妮,薛 亮,王 林

(1.苏州城市学院 计算科学与人工智能学院,江苏 苏州 215104;2.苏州大学文正学院,江苏 苏州 215104;3.苏州大学 计算机科学与技术学院,江苏 苏州 215006)

0 引 言

随着智能家居的发展,各种智能设备进入人们的日常生活,为人们的生活提供了极大便利。然而,目前智能窗的发展却非常缓慢[1]。在国外,大多数建筑物的窗户仍然是手动控制,这种方法已无法满足现代人的日常需要。因此,本文针对窗户开关设计了一种新型开窗系统,并且通过引入异常点检测、智能开关算法实现智能控制。

本文设计的智能窗户控制系统在硬件上由Arduino UNO、ESP8266MCU等组成,由烟雾传感器、雨滴传感器、温湿度传感器将数据传输到智能开窗装置。此装置一旦监测到异常情况,可以使有源蜂鸣器发出报警声响。在软件设计上,通过全栈开发技术将数据可视化。在获取传感器数据之后,云平台将会根据设计的智能开关算法对数据进行处理,从而达到稳定控制开窗系统的目的。

1 系统总体设计方案

本文设计的智能窗户控制系统由硬件模块、传动机构、软件应用组成,具有雨滴监测功能、烟雾监测功能、防夹功能、温湿度监测功能、E-charts数据分析、环境异常报警功能等。

智能窗户的数据传输主要依靠ESP8266MCU与云服务器进行HTTP通信,服务器接收到JSON数据后,将进行异常点检测,以便于排除异常控制数据,提高系统的准确性。在得到可靠的数据后,对数据按时间段、种类进行分类,并储存在数据库中。本文同时设计了微信小程序来读取数据库中的数据,使用户能够通过微信小程序更改窗户开关状态,当状态发生变化时,服务器通过ESP8266MCU模块发送对应指令来控制开窗工作。系统设计如图1所示。

图1 系统设计

2 硬件设计方案

硬件部分主要包含Arduino UNO开发板、ESP8266MCU、传感器。该模块能够实现对环境的监测,以及将相关信息传输到服务器。

2.1 硬件设备

Arduino UNO是一款基于微控制器ATmega328P的开发板,拥有14个数字输入/输出引脚(其中有6个引脚可以作为PWM输出引脚),6个模拟输入引脚,16 MHz石英晶振,USB接口,电源接口,支持在线串行编程以及复位按键。用户只需将开发板与电脑通过USB接口连接即可使用[2]。

ESP8266是一款高性能的UART-WiFi模块,兼容3.3 V和5 V单片机系统,采用串口与MCU通信,内置TCP/IP 协议栈,能够实现串口与WiFi之间的转换[3]。其工作模式有3种,分别为:WiFi STA、串口转AP和WiFi STA+WiFi AP,本文所使用的工作模式为WiFi STA。ESP8266MCU通过手机热点连接互联网,在HTTP协议下完成对数据的传输。

雨滴传感器能够监测是否下雨,其连接UNO板模拟信号的引脚,可设置其灵敏阈值。模拟信号的范围为0~1 024,设阈值为α,测量值为x,若x≥α代表监测到雨滴,此时会将Arduino对应的引脚设置为高电平,供后续数据传输使用;若x<α则代表未监测到雨滴或雨量较小,未达到关窗条件,此时会将Arduino对应的引脚设置为低电平,具体流程如图2所示。

图2 雨滴传感器流程

烟雾传感器MQ-2具有响应时间快、抗干扰能力强等特点[4]。一旦监测到烟雾、液化气、酒精等有毒、可燃气体,其传导率将上升并发送低电平信号。

DHT21传感器通过内部电容式感湿元件,将电容值转化为湿度值,其测湿范围为0~100%RH、湿度精度为±2%RH[5]。

Q89碰撞传感器属于微型快动开关,其工作电压为3~12 V,通过数据开关输出0或1。当触发传感器时,DO引脚将输出0,板载的LED指示灯亮。

2.2 传动机构

随着数字电子技术的迅猛发展,步进电机及其脉冲控制和高精度的特点已被广泛应用于运动控制系统,功能也得到了升级丰富[6]。传动机构主要由42步进电机17HS4401和碰撞传感器组成,42步进电机17HS4401的工作电压为6~12 V,有较大的扭矩,能够配合滑台带动窗户滑动。窗户左侧和右侧装有碰撞传感器,一旦有物体阻碍窗户运行,窗户将立刻停止,具有防夹功能。具体模型如图3所示。

图3 传动机构设计示意图

3 工作流程

如图4所示,智能窗户的工作流程主要分为窗体控制和数据分析两部分。

图4 工作流程示意图

用户不仅能够通过窗体控制页面实现对窗户、传感器的控制,还能够设置智能开关算法中的温湿度阈值。在用户点击开关修改窗户状态或修改温湿度期望值后,微信小程序会携带数据并发送POST请求到云服务器,实现数据传输。同理,微信小程序能够发送请求,查询窗户当前窗台并渲染控制页面。此系统将控制权限最大程度交给用户,以达到提高用户体验感的目的。

数据分析部分包含异常值处理与智能开关算法两部分,排除异常值干扰能够提高智能开关的成功率,从而达到提高用户体验感的目的。当计算完成后,云服务器一方面会向微信小程序提供数据并应用到E-Charts图标中,直观展示给用户;另一方面会向硬件模块发送计算的结果,达到智能开关的目的。

3.1 数据预处理

本文的数据集为室内环境下手机的数据,使用Arduino UNO、DHT21传感器采集数据,通过ESP8266MCU上传数据库获得。

作为一种经典的数据挖掘方法,聚类分析[15]在模式识别、机器学习、人工智能等领域得到了广泛应用。在没有先验信息的情况下,聚类分析具备找到目标数据集内在结构的优势[7]。本文使用k-means聚类算法对数据进行聚类处理,将相似程度高的数据进行进一步聚拢,以排除一部分相似程度不足的数据,然后使用异常点检测算法(LOF)对异常数据进行侦测并排除,最终将检验过的数据的平均值赋值给实际测量值。

3.1.1 k-means聚类算法

本文的k-means聚类算法参考文献[8],其基本原理是将给定数据集划分为k个不同的类,并找出每个类的聚类中心,使各类之间的非相似性特征(如距离)达到最小[8]。k-means聚类算法的核心思想是根据待聚类点至中心点的距离来判断待聚类点的类别[9]。此算法需要提前给出一个合理的k值,将数据归为k类,最后评价轮廓系数,选出一个最合理的k值。由于DHT21传感器探测的反应时间比ESP8266通信模块的发送时间长,系统获得的温湿度重复数据较多,因此,本文对k-means聚类算法进行改进,其步骤如下:

(1)输入数据集D={p1, p2, ..., pj}。

(2)选取给定的k值作为k个类质心,O={o1, o2, ..., ok},可用式(1)表示:

(3)计算每个样本到k个质心的距离,并将此样本分配到距离最小的类质心所对应的类中,可用式(2)表示:

(4)若pm=pm-1,即下一个样本与上一个样本相同时,直接将此样本分配到与上一样本相同的类中,不再重新计算距离。

(5)重新计算属于该类的所有样本的质心,可用式(3)表示:

式中:Cn表示为第n个类中对象个数;m=1, 2, ..., i;n=1, 2, ..., k。

(6)重复步骤(2)~步骤(5),直到新的质心与原质心相等或小于指定阈值。

(7)评价轮廓系数。

根据以上步骤,本文设计了算法1,算法1中的变量见表1所列。

表1 变量和函数含义

算法设计如下:

算法1:k-means聚类算法

本文使用轮廓系数s对聚类结果进行评估。s的取值范围为-1~1,越接近1说明分类越优秀。本文将使用循环依次对k赋值于2~10,从而获得轮廓系数s,并对s进行排序,选取当s最接近于1时的k值。在此之后,本文将舍去其中一个最偏远的簇,以初步达到增强准确性的目的,然后将剩余数据用异常点检测LOF算法处理。

3.1.2 异常数据处理

LOF算法是基于密度的经典异常值算法,对于数据分布不均匀、密度不同的情况,采取数据点与周围近邻点的相对密度来定义局部异常因子[10]。LOF算法只着重针对局部异常点,通过比较样本点与其邻域点的平均可达密度来判断样本是否为异常点[11]。本文使用一种基于距离的异常点检验算法,具体定义如下(k为用户定义的值):

(1)p,o两点间的距离:d(p,o)。

(2)定义点p的第k距离,可用式(5)表示:

同时还需满足以下条件:

A)在集合中至少有不包括p在内的k个点,可用式(6)表示:

B)在集合中最多有不包括p在内的k-1个点,可用式(7)表示:

(3)第k距离邻域Nk(p):点p的第k距离内的所有点。

(4)p,o两点间的第k可达距离RDk(p, o)可用式(8)表示:

(5)局部可达密度ρ,可用式(9)表示:

(6)局部离群因子LOFk(p),可用式(10)表示:

如果LOFk(p)值趋向1,说明p与其领域点的密度相近,p与该领域属于同一簇的可能性大。LOFk(p)值小于1,说明p的密度高于其领域点密度,即p为密集点;相反,LOFk(p)值大于1,则p越可能是异常点,本文的LOF算法参考此文献,具有思路简单、易于实现且聚类速度快的优点[12]。而k值的大小会影响判定异常点的阈值。LOF的优势在于它可以识别局部密度并确定局部异常值,它的缺点是运行所需时间较长。

3.1.3 智能开关功能处理方案

此功能需考虑到雨滴传感器与烟雾传感器的影响。智能开关流程如图5所示。

图5 智能开关流程

考虑到用户的安全与系统的稳定性,本文在设计程序时,已为各模块设置优先级,等级为0~3级,其中0级的优先级最高。优先级见表2所列。

表2 优先级关系表

由于不同的用户所期望的室内环境不同,我们为用户提供可更改的温度期望值T以及湿度期望值R,后续算法将会受以上2个参数的影响。如果用户不进行设置,我们将联网获取当前季节、地理位置等信息,自动为T、R两个参数赋值。

在室外空气质量良好、室内外环境相似的情况下,尽可能长时间开窗通风,保持充足的氧气。开窗还能使室内外温度、湿度差减小,因此,在一定情况下可通过开窗达到用户期望的温湿度。本文定义室内外环境相似为:室内温度与室外温度之差的绝对值小于等于2 ℃,并且室内湿度与室外湿度之差的绝对值小于等于10%。

如果室内外环境较为相似,窗户将自动打开通风。如果室内外环境不相似,但开窗期望值介于室内测试值与室外环境值之间,可通过开窗的方法使室内环境达到期望值,窗户将自动打开通风。如果室内外环境不相似,期望值也不介于室内测试值与室外测试值之间,窗户将自动关闭。此时系统会通过微信小程序向用户发出指令,需要得到人为干预才能使室内环境达到期望值。

基于上述分析,本文设计了智能开关算法和智能开关算法流程(图6),算法与图中的变量见表3所列。

图6 智能开关算法流程

表3 变量含义

算法设计如下:

算法2:智能开关算法

4 仿真结果与分析

本节主要通过仿真结果对此控制系统的智能性、准确性进行验证。具体方案:人体握住温湿度传感器,同时在其附近使用加湿器加湿10 s,来模拟出现异常值的情景。在异常值处理后,控制系统取平均值作为智能开关算法中的实测值。其对照实验方案为:直接使用原数据的平均值作为智能开关算法中的实测值。

4.1 程序界面设计

微信小程序具有便捷、维护方便、成本低等优点,方便用户实现对窗户系统进行控制。微信小程序采用vue框架,通过HTML+CSS+JS实现前端,借助PHP实现后端,数据库使用MySQL,利用E-Charts图表库在前端实现评估数据的可视化分析[13],具体可分为首页和统计两个页面,如图7所示。

图7 程序界面设计

4.2 智能开关设计

值得指出的是,系统上传数据所需时间小于分析数据所需时间,本文必须将数据处理设置为一个定时任务。为了能够在不影响用户体验的情况下提高数据的准确性,在完成大量测试后,最终选择60 s为间隔对数据进行处理,在此间隔下能够获取220~250个数据点。本文将选取其中一次实验进行分析,共获取242个样本,具体分布情况如图8所示。其中,X轴为时间,Y轴为温度,Z轴为相对湿度。由图8可知,数据相对集中分布在相对湿度为52%RH~55%RH范围内,温度在30.5~31.0 ℃范围内,而超出此范围的数据很有可能为异常值点。

图8 数据样本分布情况

使用k-means聚类算法对数据进行聚类,初步筛选出异常值。本文对2~10之间的整数依次赋值给k后,计算得出当k为2时轮廓系数最接近1,此时s=0.89。因此本文将k值设置为2,此时将舍去密度最小的一类,共有23个异常值,将其排除后,初步达到提高准确性的目的。本文使用改进后的k-means算法的运行时间为0.85 s,而未使用改进后的k-means算法运行时间为0.94 s,因此改进后的k-means算法运行效率更高,当数据更为庞大时,改进后的算法优势将更加明显。初步筛选过后的数据样本分布如图9所示,其中横坐标为相对湿度,纵坐标为温度。相对湿度大于55%RH,温度大于31.0 ℃的数据样本明显减少,由此可见,k-means聚类算法能够初步筛选出异常值。

图9 数据处理后分布示意

剩余的226个数据样本将用于局部异常因子(LOF)算法中,经过多次实验,本文选取LOF算法中的k为20,k值过大或过小将影响异常点的检测效果。LOFk(p)值如果大于1,将会被判定为异常值。异常点的LOFk(p)值以及该点的坐标见表4所列,共有15个数据样本。

表4 异常点汇总表

4.3 开关判定

文中使用k-means算法和异常点检测算法之后,共去除31个异常点。根据有关研究,人体在室内温度18~28 ℃,相对湿度50%RH~60%RH的环境下工作效率最高[14]。若用户所填写的期望值不在此范围内,我们将根据用户的期望值扩大适宜环境的范围。假设现在用户期待的温度T为31 ℃,期待的湿度R为55%RH,根据上述说明,此时的适宜温度范围将被规划为18~31 ℃,适宜湿度范围将被规划为50%RH~60%RH,如图10所示。本文根据适宜温湿度规划了范围,绿色长方体内的数据样本是人体适宜的温湿度,为蓝点;非适宜温湿度已用红点标出。

图10 适宜温湿度范围

在此情况下,假设室外温度TO为31 ℃,室外湿度RO为70%RH。根据智能开关算法,使用异常值处理的智能控制系统与未使用异常值处理的对比如图11所示,本文选取窗户状态改变前后3 s内的情景进行分析。可见使用异常值处理的智能控制系统能够比未使用异常值处理快0.25 s判断出开窗情况。

图11 夏季开窗情况对比

以上为夏季开窗情况对比。此外,本文还对冬季开窗情况进行了对比,对比图如图12所示。可见,使用异常值处理的智能控制系统能够比未使用异常值处理快0.5 s判断出开窗情况。

图12 冬季开窗情况对比

根据上述对比,使用文中智能控制系统能够过滤异常值。系统能够更加准确灵敏的判断开窗情况。相比于直接控制开窗系统情况,提高了开窗可靠性。

5 结 语

本文主要设计了一种新型智能开窗系统,该系统采用了ESP8266模块与Arduino UNO开发板等部件,设计了智能开窗系统。该系统能够监测有毒气体、雨滴等情况,并且用户可以通过微信小程序平台控制窗体,自定义所期望的温湿度。在采集开窗系统数据后通过引入改进的k-means聚类算法与异常点检测算法,以增强控制数据的准确性。经过测试,该方法能够降低干扰,相比其他窗户控制系统具有一定优势,提高了可靠性。

猜你喜欢

开窗温湿度窗户
温湿度控制器在回收砂冷却系统中的应用
基于DSP的多路温湿度监测系统
基于温湿度控制的天气预测装置
爬窗户
生火取暖要开窗
初秋入睡前关好窗
窗户知多少
蒸发冷却温湿度独立控制空调系统的应用