张艮娟,倪敏珈
(东南大学成贤学院 电子与计算机工程学院,江苏南京,210000)
近年来,随着社会经济的不断发展,人们对生活舒适度提出了更高的要求,对家居智能化的需求也越来越大。智能家居是近来的热门,它作为一个能够满足人类美好生活的产业,从而进入大家的视野中,目前智能家居该项目使用的微信小程序自上线以来,已经收获了大批的喜爱者,更加方便了人们的生活。在这个家居智能时代,很多用户在挑选家居用品时会优先选择物美价廉并且具有一定智能化且方便使用的家居,而且微信小程序广受用户的好评,它毫无疑问是一个方便快捷的终端应用,在实现比较人性化的控制的同时能够节省用户的空间内存。因此研究如何更好地实现微信小程序与智能家居相连,具有很重要的现实意义。
Arduino是一款具有方便灵活、容易上手等特点的开源电子原型平台。它具有使用类似Java、C语言的Processing/Wiring的开发环境,并且构建于开放原始码simple I/O介面版。主要包含两个部分:其中一个是硬件部分,它用来做电路连接的Arduino电路板;另外一个则是Arduino IDE(计算机中的程序开发环境)。只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了,它能通过各种各样的传感器来感知环境,通过控制灯光和其他的装置来反馈、影响环境。
MQTT协议是一种消息列队传输协议,它采用订阅、发布机制,且订阅者只能接收自己已经订阅的数据,其他数据则不接收。要确保必要的数据的交换,而不对非必要的数据进行储存与处理。因此在工业物联网中得到广泛的应用。MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的。
出于小程序操作简单方便,容易上手,且不需要开发独立app而选择它来设计主要功能页面,并能对页面中相关功能进行打开或关闭,页面主要包括温湿度的显示,灯和空调的开关以及自动报警器,本系统主要分为如下几个方面:
2.1.1 远程电灯的开关
当用户因为出门着急而无法确定灯是否开关即可通过小程序查看等的开关状态,来选择操作,另外,用户不需要起身去墙壁上按动开关按钮,只需躺在床上,打开小程序界面进行开关,方便快捷。
2.1.2 窗帘的开关
可根据日照程度,用户在家休息时,可根据微信小程序中光照度的显示,当日光达到一定亮度时,可操作窗帘可以自动打开,到晚上时窗帘外部的传感器感受不到日光,即可关闭,用户也可远程控制窗帘的开关,在不需要打开时选择关闭。
2.1.3 温湿度检测的报警
室内湿气太重将会影响人的健康,所以小程序可以实时监控室内的温度和湿度,将温湿度过高即会发出报警信号,用户可以参照不同时段的气候,给温湿度报警器设置限定值,同时可以在微信小程序主界面上查看当前的温湿度。
2.1.4 烟雾报警器
用户可以在离家之后,通过小程序提前打开烟雾报警器,烟雾浓度过高,LED灯将变红,同时给周围邻居警醒的信号,用户在微信小程序上就能查看烟雾浓度,实现不在家也能实时监控家居状态。
利用微信小程序工具开发界面,首先进行功能的划分,主要功能包括温湿度显示与报警设置,空调、灯、窗帘的开关等,以及用户登录注册页面,再将模拟房间及温湿度传感器、灯、窗帘等状态信息传输至Arduino,通过爬取数据,再利用MQTT协议进行软硬件的通信,将数据传至主界面,主界面使用javascript技术实现基本控制和动态交互,最后确保每个功能都能实现后,进行测试,达到预期效果。
图1 总体设计模式示意图
图2 系统硬件实现框图
温湿度传感器主要使用的是DHT11模块,该模块是一款具有已校准数字信号输出的温湿度传感器,它与一个高性能8位单片机相连接,包括一个电阻式感湿元件和一个NTC测温元件。其中温度测量是将内部的NTC测温元件的阻值转化成温度,而湿度测量则是利用感湿元件,让其阻值与湿度在一定的范围内呈现出良好的线性关系,从而反应相关数据。它们能将温湿度进行精准测量,其温度精度在-5℃~+5℃之间,湿度精度也在-5RH~+5RH之间。因此该产品具有较强的抗干扰能力、性价比高、品质优秀、反应速度快等优点。每个DHT11传感器一般都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。小体积、低功耗,信号传输通过传感技术将当前空气中的温度及湿度显示在数字模块中,当空气中的温湿度超过设置阈值会发出警报声。
电灯作为家庭常用家居产品,且是一个消耗品,我们本系统采用的是LED灯管,它运用了二极管发光原理,比普通的节能灯效果更好,其寿命也是十分之久。我们所采用的发光模块基于高节能、寿命长、多变幻、利环保、高新尖的特点,灯采用的是LED发光模块。至于有引线的板子上,本系统采用红色LED发光模块和黄色LED发光模块,黄色LED模块主要用于实现正常的照明的远程控制,我们可以通过微信小程序来控制家庭灯的开关,并可以实时查看到电灯的状态;而红色的LED模块主要用于烟雾传感器的报警。
窗帘作为一种日常家居,大多数需要我们手动控制。市面上已有的电动窗帘价格比较昂贵,结构复杂,可靠性低,不能够让所有用户都能很好享用。本系统窗帘的远程控制主要使用STC89C51,这是一种8位的高性能工具。在窗帘的制动中充分发挥重要作用,且其具有简单小巧,性价比高,可持续性长等优点。同时可根据光敏电阻,判断窗帘移动的距离,确定窗帘的开关状态,即当光照变强,电阻变高,窗帘自动打开。本系统采用了微信小程序控制,实现远程操作,改变布线复杂的不足,提高窗帘控制的智能化,让用户能够更好地控制窗帘移动。
烟雾传感器本系统使用MQ-2烟雾传感器,该传感器对于烟雾具有良好的灵敏感,可以实时检测到煤气等多种有毒可燃气体,并立刻发出警报,其气体探测的范围也相对较高较为精准。其原理是与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。通过这一点获得烟雾存在信息,初始化单片机后包括初始化变量参数,当烟雾浓度变大时,模拟信号越大,单片机对信号进行处理,启动报警电路,红色LED灯开始闪烁。
本设计采用的是Arduino的硬件开发板,版本是Duemilanove,是目前使用人数最多,且最稳定的版本,它具有开元、开放、简单、跨平台等特点,且在自动化、物联网领域内都广泛应用,本设计以Arduino为核心,能够更快的完成项目开发,减少开发时间的消耗和学习的成本,我们可以从硬件检测装置中采集数据,即通过连接到Arduino开发板上的传感器来收集温湿度、灯光、窗帘、烟雾报警器等信息。
该页面为主页面,其中包括温湿度、光照度、烟雾的显示,报警器、客厅灯的开关。
本程序通过检测当前串口的初始化状态,来检测LED灯的初始化状态,用户通过微信小程序界面的虚拟按钮来控制LED等的开关。
先在控制台创建名称如客厅灯,在控制LED的引脚,初始化LED灯的状态默认为关的状态,再将灯的状态传至MQTT协议中,MQTT协议可使用简单的0/1交互,0为关的状态,1为开的状态,再将数据传至微信小程序,最终由微信小程序界面中的按钮来控制灯的状态,当用户将等的状态拨到开的状态,将判断是否连接MQTT协议,至LED传感器的状态上传后,即刻执行打开电灯的相关函数,开灯;关闭灯泡时,将改变MQTT字符为0,执行关灯函数,灭灯。
图3 主页面布局图
图4 LED灯的远程控制功能流程示意图
图5 窗帘的远程控制的功能流程示意图
本程序通过微信小程序按下界面上的按钮控制窗帘的打开状态,当为打开状态时,将为用户自动打开窗帘,当到根据窗帘宽度所设置的打开限位的阈值点时,打开窗帘的动作将会自动停止,若当前按下控制窗帘的关闭键时,将为用户自动关闭窗帘,当到根据窗帘宽度所设置的关闭限位的阈值点时,关闭窗帘的动作将会自动停止。
图6 温湿度的数据显示及报警流程示意图
图7 烟雾报警流程示意图
先判断窗帘的初始化状态及是否与MQTT协议连接后,对于窗帘的打开和关闭状态,也是一个0/1交互的过程,设计主要程序语句,使用if和while等循环语句目的是为了对整个窗帘的程序进行判断,当用户在界面上按了打开或关闭按钮时,会对于窗帘的位状态行判断,当执行完语句操作时,同样会对于程序的运行进行终止。
DHT11温湿度传感器将温湿度上传到MQTT服务器上,MQTT服务器实现与微信小程序的交互,将数据上传至微信小程序中显示。在程序编写上,tempChange函数,当打开微信小程序时,立即发送信息数据wx sendMessage,如果连接成功即刻返回调用成功信息,如果连接失败,则函数e调用失败,返回服务器异常信息。定义DHT11的引脚,上传默认传感器时间为2s,判断连接成功后,即刻获取当前时间戳,当时间达到默认时间后,将当前湿度上传。
MQ2烟雾传感器首先给传感器预热,再进入监控状态连接微信小程序,先初始化串口信息Senor_AO和引脚信息Senor_DO,使烟雾的初始数据为0,采集烟雾浓度值,再上传数据,当烟雾大于预先设定的阈值、微信小程序发送预警通知,同时LED亮红灯,先设定LED的状态LEDstatus=”LEDoff”,设定时间上传时间为3秒intervial=3,执行if语句,报警及立即执行digtalWrite(A_LED,HiGH)。
本项目在Arduino开发板上连接LED灯、窗帘、DHT11温湿度传感器、MQ-2烟雾传感器,在开发板上连接WiFi模块,再通过物联网MQTT协议来与微信小程序进行通信,完成一个智能家居控制系统。为用户提供生活上的便利,实现智能化生活。该项目有多种功能供用户选择,用户可以实时监控家居的状态,可以在微信小程序界面查看当前温湿度、光照度、可选择开关灯和窗帘,当温湿度超过设定值时会立即发出警报声,当烟雾浓度超过限定值时,报警灯会一直发出红光,提醒用户气体异常。通过这样一套系统,给用户便捷的智能家居享受。