张 伟,王宜怀
(1.咸阳师范学院 计算机学院,陕西 咸阳 712000;
2.苏州大学 计算机科学与技术学院,江苏 苏州 215006)
智能家居[1]是以住宅为平台,利用RFID、计算机网络、综合布线、自动控制及安防等技术将家庭环境有关的设备集成于一体的智能化家居控制系统。相比普通家居,智能家居提高了居住环境的安全性,增强了居住环境的智能性,符合当今社会的发展需求。随着物联网技术的发展,消费者认知的进一步提高,智能家居系统的应用已趋于成熟。
基于AVR的智能家居系统可以监测家庭用电情况、光照情况和温湿度数据,进行无线电源、灯光、空调等智能化电源控制,支持自动、手动、定时等多模式智能化用电管理,能监测室内烟雾浓度,进行防灾报警。当有警情出现时,如用电过载、火灾等,智能家居终端智能断电,并能在手机端进行报警提示。该智能家居系统分为四个部分,即传感器层、主控层、执行层和移动终端,系统总体框架如图1所示。
(1)传感层。
传感层主要由各种感知器件组成(如图1传感层部分),主要用于对家庭环境有关参数的感知或探测,如环境的温湿度、光照、烟雾浓度及用电器功率等。
(2)主控层。
主控层主要由AVR核心板[2]及接口扩展板组成,用于对传感层上传的数据进行分析及处理,进而向执行层发送控制指令。
(3)执行器层。
主要由继电器、灯带和风扇组成,用于执行核心板送来的指令,以响应相关操作。
(4)移动终端。
主要由智能手机及智能家居管理APP构成,智能家居管理APP可以接收AVR核心板发来的报警信息,用户也可通过APP进而控制智能家居系统中的相关设备,以达到远程控制家居的目的。该部分通过WiFi模块与AVR板进行链接,按照TCP网络协议[3]收发信息。
AVR核心板分析判定光照传感器、智能插座、温湿度传感器和烟雾传感器采集的数据,并控制WiFi模块[4]将判定结果传输给移动终端,它是整个智能家居系统的核心部分。本次开发AVR核心板选用DFRobot Leonardo & xbee R3(见图2),Arduino Leonardo[5]是Arduino最新推出的低成本Arduino控制器,具有20个数字输入输出口,7个PWM口以及12个模拟输入口。使用了一片Atmega32u4[6]来实现USB通信以及控制,降低了Leonardo的成本。它具有开发成本低、通用性强、方便开发及支持USB连接烧录等特点。
用于检测当前光照强度,并将光照度信息传给核心板,选用YwRobot[7]光照传感器,其具有Arduino开发平台专用模块;通过光敏电阻探测光照强度,反应灵敏,能满足选型的功能需求。
用于检测当前环境的温度和湿度参数,并将数据传给核心板,选用DFRobot的DHT11[8]数字温湿度传感器。其产品具有连接方便,单线制串行接口;兼容Arduino开发平台;同时测量环境的温度、湿度数据,满足选型的功能需求。
检测当前环境空气中的烟雾的含量,并将数据传给核心板,选用Puzzle-Gas Sensor(MQ-2)[9]易燃气体、烟雾传感器。其产品为4脚PH2.0封装,通过4P排线直插核心板;可测量环境的易燃气体、烟雾数据;采用模拟量(电压)输出,灵敏度可以通过电位计进行调节,气体的浓度越高,输出的电压越高;兼容Arduino开发平台等特点。
用于检测室内的用电情况,通过RS485转TTl模块向核心板提供室内用电量的实时数据,选用力创的86型面板式计量插座LCDG-MB113-10[10]。其具有检测用电器(负载)的电量、电流、电压、功率等信息,停电后保留电能累计值;内带485通讯[11]功能,支持MODBUS-RTU[12]通讯等特点。
WiFi模块的主要功能是与手机进行无线通信,实时传输通信数据,选用itead arduino ESP8266 wee wifi[13]模块。其产品兼容AVR核心板,支持WiFi无线数传通信,支持TTL串口通信,支持通过AT指令[14]调试,满足选型的功能需求;支持Arduino开发,厂家提供开发例程;接口兼容AVR核心板XBEE[15]插座,无需另做接口;配套Android应用,开放的源码,适合用户二次开发。
此外,用到的硬件设备还有RS485[16]转TTl模块、开关继电器及接口扩展板等。
(1)表1为系统配置参数寄存器地址和通讯数据,读寄存器的功能码为03H,写寄存器的功能码为10H,具体含义见表1。
表1 系统配置参数寄存器地址和通讯数据
(2)电能量寄存器地址和通讯数据见表2,读寄存器的功能码为03H,写寄存器的功能码为10H,脉冲当量为3 200 imp/KWh,即读取的数据值除以3 200为用电度数;配置电量底数时的计算为:4字节配置数据=需配置的电度数*3 200;清除用电度数,功能码为10H,写入的数据为全0,写寄存器的所有信息必须按表3格式写入。
表2 电能量寄存器地址和通讯数据
表3 写寄存器数据格式
(1)读多路寄存器(功能码03,即0x03)。
起始地址:0000H~0050H,超过范围命令无效。
数据长度:0001H~0020H,最多可一次读取32个连续寄存器。
起始地址+数据长度:1~0051H,超过范围命令无效。
(2)写多路寄存器(功能码10,即0x10)。
起始地址:0004H~0037H,超过范围命令无效。
寄存器数量:0001~0010H,最多可一次设置16个连续寄存器。
起始地址+写寄存器数量:0001H~0038H,超过范围命令无效。
(3)读开关量输出(功能码01,即0x01)。
起始地址:0000H~0007H,超过范围命令无效。
数据长度:0001H~0008H,最多可一次读取8个连续开关状态。
起始地址+数据长度:1H~8H,超过范围命令无效。
(4)写单路寄存器(功能码05,即0x05)。
起始地址:0000H~0007H,超过范围命令无效。
系统软件开发平台选用的Arduino IDE,在此开发环境下完成了对传感器模块、WIFI模块、智能插座等模块函数的定义与设计。
Arduino是一款便捷灵活、方便使用的开源电子原型平台,它具有跨平台、简洁及开源等特点。Arduino通过各种传感器来感知环境,进而通过控制灯光、马达和其他的装置来调节或控制环境参数。用Arduino编写程序,编译成二进制文件,可烧录进微控制器,从而实现对微控制器的编程操作。
该部分主要对温湿度传感器、烟雾传感器、光照传感器及智能开关等模块的程序进行设计,当温湿度传感器采集的温度超过了预设的阈值后,核心板会向执行层的空调发送打开空调的命令以启动空调;当烟雾传感器探测的烟雾环境异常时,AVR核心板则通过WIFI模块在TCP协议下向通信模块APP发出报警信息,以提示用户进行安全应急处理;各模块的主要流程见图3。
部分函数代码如下:
void LightIntensity_Threshold(uint8_t LightIntensity_H ,uint8_t LightIntensity_L) //光照强度阈值设置函数
{
LightIntensity_Value_Threshold=(LightIntensity_H<<8)|LightIntensity_L;//光照强度阈值设置
Serial.print("Set LightIntensity_Threshold Ok!");
}
uint16_t Get_LightIntensity() //光照获取函数
{
return analogRead(Light_sensor_pin);
}
uint16_t Get_Smoke_Ad_Value() //烟雾传感器AD值获取函数
{
return analogRead(Smoke_sensor_pin);
}
void TH_Threshold(uint8_t Temperatur,uint8_t Humidity)// 温湿度阈值设置函数
{
Temperature_Threshold=Temperatur; //获取温度
Humidity_Threshold=Humidity; //获取湿度
Serial.print("Set TH_Threshold Ok! ");
}
(1)将AVR核心板通过USB线与PC机相连,在设备管理器里查看AVR核心板使用的COM口。
(2)IDE与AVR核心板通过USB_SERIAL连接。
(3)点击“工具”-->“端口”-->选择AVR核心板使用的COM口“COM10(Arduino leonardo)”,使用时根据实际情况而定。
(4)点击“工具”-->“板:”-->选择“Arduino leonardo”。
将各功能模块与AVR开发板相连,结合智能家居管理APP和硬件底层固件,对各个模块的性能进行测试。测试时硬件端烧录好固件程序,手机端安装智能家居管理APP,系统加电测试各模块的性能,智能家居实物连接如图4所示。
系统加电后,各硬件模块工作正常,将手机与AVR核心板连接,启动智能家居管理系统APP,监测到的室内环境参数如图5所示。
通过向室内释放甲烷气体测试烟雾险情报警功能,当释放甲烷气体数秒后,烟雾报警器发出风鸣声,并通过通信模块向智能家居管理系统发送室内险情信息。
在智能家居系统中选取连接8个设备节点为时,对其在0 m~30 m有障碍环境和无障碍环境下的丢包率进行测试(见图6)。从图可知,随着传输距离的增加,丢包率逐步上升,无障碍环境下当无线传输距离为30米时丢包率为0.173%,有障碍环境下当无线传输距离为30米时丢包率为0.41%,无障碍及有障碍环境下丢包率均小于5‰,可以满足无障碍及有障碍环境下网络连接设备的无线传输要求。
网络节点在1~11范围内,分别对智能家居系统在WiFi和Zigbee无线传输模式下的传输速率进行了测试。图7为WiFi模式下的传输速率,随着节点数的增加,网络传输速率逐步降低,当节点数达到11时,网络传输速率降低为10.84 Mbps,其最高网络传输速率则达到了11 Mbps;而Zigbee模式的传输速率在190~205 Kbps之间,传输速率明显低于WiFi无线传输模式(见图8)。
经测试,智能家居系统各模块运行正常,均达到了预期效果。通过智能家居系统能够对室内的环境进行实时的检测与控制,当环境参数达到了设定的阈值时,智能家居系统会自动启动相关设备改善环境相关参数。当室内有警情发生时,其通过WiFi模块向用户终端发送报警信息。
智能家居系统的应用,必将提高家庭居住的智能化水平,采用智能设备,降低了设备能耗。同时,智能设备的警情发送功能降低了居住环境的不安全事故发生的概率,提高了居住环境的安全性。在30 m范围内,对智能家居系统连接11个网络设备时对其在有障碍及无障碍的丢包率进行测试,丢包率均低于5‰;且基于WiFi无线模块的传输方式平均传输速率达到了10.91 Mbps,是基于Zigbee无线模块传输方式的约55.94倍,满足了家庭环境下节点设备不多、覆盖范围不大时对智能家居高效、可靠管理的需要。