基于ARM和ZigBee的智能家居控制系统设计与开发
2015-05-30胡国伟陈光绒李群代品川
胡国伟 陈光绒 李群 代品川
摘 要: 为适应家居智能化的发展需求,设计了一套基于ZigBee协议的智能家居系统。家居控制系统的智能网关采用STM32芯片为主控制器,控制分布在室内不同位置的家居设备。通过开发的Web客户端、手机客户端及平板电脑客户端,用户可实现对家用电器运行状态的信息查询及控制。结果表明,该系统具有低成本、低功耗、可扩展,人机交互界面友好等特点,且系统组网方便快捷,运行稳定,可靠性高,具有较高的实用性和推广价值。
关键词: 智能家居; ZigBee协议; 智能网关
中图分类号: TN 949 文献标志码: A 文章编号: 1671-2153(2015)05-0081-06
0 引 言
随着科技的发展和人们生活质量的提高,智能家居逐渐成为未来家居生活的发展方向[1]。智能家居不仅能给用户提供安全、健康和舒适的生活环境,而且用户能够远程监控家居状态并控制家庭电器设备。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能,甚至为各种能源费用节约资金。
目前,市场了提出了许多的智能家居解决方案,同时许多新的案例及成熟产品亦不断涌现出来。如美国霍尼韦尔、HAI和LG公司的智能家庭产品,海尔网络家电和清华同方ASTB1000机顶盒[2],小米智能家庭套装,联想家庭安防套装等。为提高智能家居控制系统的稳定性和可靠性,本文开发了基于ARM的家庭网关和基于ZigBee控制节点组成的智能家居控制系统,同时基于不同平台开发的智能家居客户端管理软件,用户能够通过多种方式实现对家居环境的远程访问和控制,能满足用户对智能家居控制系统的一般使用需求。
1 工作原理与系统结构
本文设计的智能家居控制系统主要包括(如图1所示):智能终端节点、智能家庭网关、服务器、用户客户端管理软件四部分。家庭网关是整个家居系统的核心,用户通过其在现场或者远程查询、控制智能家居网络各节点。监控现场的节点将各自采集的信息传送给网关上的协调器,经过主控制器处理后,将信息通过有线或无线方式传送至电脑或者手机等用户终端[3]。终端节点可分为两类:一类是数据采集节点,如温湿度采集、烟雾采集、CO2采集等,负责采集环境信息;另一类是控制节点,如灯光控制、继电器控制、PWM输出、红外输出等,控制家用电器。系统通过无线ZigBee技术组建的家庭网络,终端节点采集的信息经由协调器和嵌入式网关上传至客户端管理软件,用户可通过电脑或者移动终端查看家居环境信息并根据实际情况控制家用电器。系统整体结构如图1所示。
系统工作流程如下:终端节点采集的状态信息和传感器数据经ZigBee协调器传送至网关,由网关通过Ethernet模块和WI?鄄FI传输至外部网络,用户可以通过移动终端或计算机登入远程登入到Web界面,实时查看家中的电器和环境信息,或者通过手机等移动终端访问并控制家用电器,家庭网关根据控制信息做出正确判断和响应。
2 系统硬件设计
智能家居控制系统的硬件主要包括智能网关控制器模块、终端节点模块两部分组成,如图2所示。
2.1 网关控制器模块
网关控制器是智能家居控制系统的核心部件,其作为整个家居网络的数据交互枢纽,是连接家庭内部网络和外部网络的桥梁。网关通过ZigBee接口与终端设备无线通信来获得数据,并将数据通过以太网或WI?鄄FI接口转发至服务器。它以嵌入式微处理器为中心,由ZigBee协调器、WI?鄄FI模块、以太网接口、GPRS模块以及辅助装置等组成,另外还包括维持ARM系统正常工作的外围辅助电路,如电源电路、存储器借口、闪存电路、复位电路以及看门狗电路等[4]。
家庭网关核心微处理器选用意法半导体公司的STM32F103VCT6芯片,它是32位微处理器芯片,该芯片的CPU采用的是ARM Cortex M3内核,比一般的单片机运行速度快(主频可达72MHz),能够很好地满足系统对实时性的要求,可以很好地运行Linux嵌入式操作系统,同时其性能高、功耗低和价格低的特点符合本项目的设计要求。
协调器ZigBee模块采用TI公司的CC2530芯片,主要功能是接收传感器采集的数据信息,并解析由上端发送过来的控制指令,对控制节点实施控制。CC2530是TI公司经过ZigBee认证的Z-Accel系列的网络处理器,支持现有的ZigBee和Z-StackTM。CC2530内部包含一个专门支持ZigBee协议和底层协议IEEE802.15.4的定时器,并且支持低功耗工作模式,当无线模块配置成终端设备时,CC2530将自动转换到低功耗工作模式,在终端设备空闲时,进入睡眠状态,需要进行数据传输时,再从睡眠状态中唤醒,实现节省电量的目的[5]。
2.2 终端节点设计
终端节点硬件电路主要由无线终端节点ZigBee无线通信模块、处理器模块(TI公司的STM32F030芯片)、传感器模块和电池模块4部分组成,其结构示意图如图3所示。无线通信模块用于完成无线通信任务,实现与协调器之间传感器数据信息发送以及接收相关控制指令信息;处理器模块用于控制各种电器、存储数据等;电池模块用于系统工作所需要的电能;传感器模块主要功能是采集所在区域内或家居设备的相关信息,并对采集到的数据进行转换和处理。
由图3可以看出,传感器节点主要包括智能感知、安全监测、智能电器、智能安防四个部分。采用的传感器有:光照温湿度传感器、烟雾传感器、CO传感器、CO2传感器、雨水传感器、模拟信号、433M、红外传感器。控制节点主要包括灯具控制节点、继电器控制节点、窗帘控制节点、中央空调控制节点、RGB灯光控制节点、报警蜂鸣器控制节点、PWM输出控制节点,借助ZigBee模块将数据发送给协调器。
3 系统软件设计
本设计软件由网关控制器、智能终端以及家居客户端管理软件三部分组成。网关控制器位于智能终端与上层客户端软件平台之间,负责上层管理平台与感知节点数据转发。网关控制器软件系统运行在微控制器STM32F103VCT6平台上,采用开源的Linux操作系统,将用户发送的指令信息通过协调器转发出去,同时接收终端节点采集的反馈信息。客户端管理软件能实现环境信息实时查询,监控家电设备的运行状态,并适时做出调整。
3.1 通信报文帧格式定义
为满足无线传感器网络数据信息传输的有序及可靠性,需要定义好合适的通信协议,一方面避免处理器即使没有发送数据或指令,无线模块会随机发送一些无效数据等现象的发生,另一方面保证数据下传命令能够准确的传达。由网关发送给终端节点的数据帧,分为两种不同类型:查询类型和控制类型。考虑到篇幅的限制,下面以温度传感器采集模块为例(查询类型),定义数据传输协议格式如图4和图5所示。
(1)报头:固定为0xFE,表示一个报文帧的开始。
(2)数据长度:一帧的长度由数据包大小决定,不同数据包占用字节数不同,此长度即为一个数据包的字节数总和。
(3)指令类:2B 为数据通信帧标示。
(4)指令号:00 为点对点发送,01为广播发送。
(5)目的地址:即目标无线传感网络中断节点设备地址,温度传感器读取地址为0x143E,每个家电设备都由协调器随机分配的目标短地址与其对应。
(6)数据:数据包括读/写/上传、寄存器地址、寄存器数据三部分组成。读/写/上传指令分别用字节0x03,0x06,0x09表示。
(7)校验:采用所有字节异或得到最后位效验字节方式。占用2字节,对每一帧的数据进行16位CRC校验,低字节在前。
3.2 网关程序设计
网关主设备的软件设计是系统的关键所在,主要处理来自终端节点的数据和上层发送的控制指令。主要分为串口收发和以太网收发两部分,其过程如图6所示。由图6可以看出,硬件上电后初始化应用程序,网关开始监听网络,其软件工作为中断模式,有数据到来后,对数据类型进行判断[6],调用不同的解析指令。
判断不同相应的部分代码如下:
Void Zigbee_Drive_Send_Data_To_Node(u16 Object_Short_Address,u8 Command_Writer_Read,u8 Object_Data_Action,u32 Send_Data) //ZIGBEE发送数据函数
{
Dma_Send_Buff_Send_Data_To_Node[4]=Object_Short_Address/256; //短地址
Dma_Send_Buff_Send_Data_To_Node[5]=Object_Short_Address%256;
Dma_Send_Buff_Send_Data_To_Node[6]=Command_Writer_Read; //读写命令
Dma_Send_Buff_Send_Data_To_Node[7]=Object_Data_Action; //寄存器
}
3.3 协调器程序设计
协调器是智能家居控制系统的主控节点,主要负责ZigBee网络的建立及参数配置、接收采集终端发来的数据、实现节点与嵌入式网关之间信息的处理与交互,以实现对家电设备的信息查询与控制。硬件上电后首先完成ZigBee模块的初始化,之后协调器进行信道扫描,在协调器的网络标识中选PANID来作为协调器的网络标识,由此ZigBee网络并等待将其他节点加入其中。完成网络组建后,采用轮询方式实现不同事件的管理,中心协调器进入一个无限的循坏工作状态,如果监听到无线电信号,解析相应的命令,根据不同任务类型,调用对应的任务处理函数进行处理。任务类型分为三种:新节点加入网络、网关数据发送给终端节点以及终端节点发送给网关的数据。当任务完成后,系统回到判断是否有无线信号的判断过程,系统进入再一次循坏[7]。程序流程如图7所示。
3.4 终端节点程序设计
智能终端主要接收家居设备采集的数据信息以及接收网关控制器通过ZigBee模块发送来的命令,同时解析命令,然后操作相应的家电设备。系统上电初始化设备后,扫描信道寻找网络并发送入网请求,如果发现网络则请求加入网络,协调器收到请求后发送加入确认信息,终端获得响应被允许加入网络后会分配到一个16位的网络地址。如果在设定时间内,没有收到路由器或协调器发送的信标信号,将自动重新发送入网请求。打开串口中断、定时器中断、各个I/O口中断等,然后查询UART是否接收到网关控制器发来的ZigBee信息,并不断循坏检测,检测到信息后,对信息进行解析和处理,然后判断是信息采集指令、家电设置运行指令还是对某个家电进行控制。如查询室内温湿度信息,终端节点将温湿度信息通过协调器反馈给网关控制器。信息发送成功后,终端节点低功耗休眠模式,等待定时器唤醒。若发送失败,则继续发送,则继续发送直到发送成功为止。程序流程图如图8所示。
解析数据类型的部分代码如下:
void usart_usart(void)
{
if(usart_ok!=0)//接受完毕
{
if((usart_buff_long==8)||(usart_buff_long==12))//判断协议长度
{
if(usart_buff[send_zero]==read) usart_fasong(usart_buff[JICUNQI],DU);//读
else if(usart_buff[send_zero]==write) usart_jieshou(usart_buff[JICUNQI]);//写
else if((usart_buff[send_zero]==send)&&(send_back!=0))//上传返回并且还未验证
{
…//验证程序
{
}
3.5 客户端程序设计
智能家居客户端管理平台设计目的是用户能够查询家居设备运行状态信息及改变家电运行状态的功能。基于目前主流的可视化软件开发技术,本文设计开发了3种不同的智能家居客户端软件管理平台——基于Web的浏览器客户端、Android系统手机客户端、ios系统的平板电脑客户端。
为了方便用户使用,本文设计的客户端软件管理平台采用统一的界面风格。远程用户可使用智能终端所搭载的Web浏览器,通过Internet访问智能家居网关所搭建的Web服务器,以实现对家居系统的远程访问与控制。智能终端为智能手机及平板电脑等设备。本地用户可以通过具备WI?鄄FI通信功能的移动设备接入智能家居网关提供的WI?鄄FI网络,以实现对家居系统的控制;通过构建Web服务器,用户通过Internet对家庭网关服务器访问,实现对家居设备工作状态的信息查询和控制。基于Android系统设计的手持终端设备,可以在家庭内部通过无线局域网访问家庭网关服务器;也可通过运行在智能手机(Android)、平板电脑(ios平台)上的终端软件,用户可以便捷控制各类家电设备和查询数据信息。
4 系统测试
本文设计的智能家居控制系统支持多种访问控制方式,为能够测试所设计的系统是否达到设计要求,验证系统的可靠性和稳定性,首先搭建好系统测试环境,如图9所示。因篇幅有限,仅以访问平板电脑客户端控制灯具亮灭为例进行介绍相应的操作。登入客户端成功后(如图10所示),进入智能家居控制系统管理软件主界面(如图11所示),然后登入我的家居菜单项(如图12所示),用户就可以方便的控制家电设备的运行,点击灯具执行器按钮控制灯泡的亮灭,灯具成功打开后有相应的指示状态显示。根据实际测试表明,室内无障碍坏境下通信距离20 m左右。
5 结束语
本文设计了基于ARM和ZigBee的智能家居系统。系统采用ZigBee协议组建家庭网络,实现了家居环境和设备的统一管理和控制,让用户能够通过多种客户端访问和控制家居环境信息和设备。系统安装方便、扩展性强,使用方便快捷,用户可根据自己的需要设置不同的终端节点。系统经过测试运行可靠和稳定,为后续智能家居系统的开发提供了很好的借鉴。
参考文献:
[1] 满莎,杨恢先,彭友,等. 基于ARM9的嵌入式无线智能家居网关设计[J]. 计算机应用, 2010,30(9):2541-2544.
[2] 徐书芳,王金海,宫玉龙,等. 基于ARM和ZigBee的智能家居控制[J]. 计算机测量与控制,2013,21(9):2451-2454.
[3] 张毅,马钧元,杨校权. 基于Cortex和ZigBee的智能家居网关设计与实现[J]. 电视技术,2012,36(1):56-58.
[4] 辛海亮,钟佩思,朱绍奇,等. 基于ZigBee的物联网智能家居控制系统[J]. 电子技术,2013,39(12):79-85.
[5] 庞泳,李光明.基于ZigBee的智能家居系统改进研究[J]. 计算机工程与设计,2014,35(5):1547-1582.
[6] 郑笔耕,王恒. 面向智能家居和改进UDP协议的低能耗物联网网关设计[J]. 科学技术与工程,2014,14(7):1671-1815.
[7] 姚建峰,柳春华. 面向Zigbee技术的智能家居系统设计[J]. 信阳师范学院学报,2014,27(2):299-302.