ZigBee与Android的智能家居控制系统设计
智能家居是在传统住宅的基础上,利用现代科学技术,诸如网络通信、安全防范、自动控制、音视频等技术将家居生活有关的各种家居设施集成,构成的高效、便利、舒适、节能环保的家居环境。随着无线移动网络的快速布局,现代的智能家居只要有一个无线智能设备,即能通过客户端实时查看到住宅中的一切动态。在目前,智能家居控制系统中,有基于面板和红外遥控器或蓝牙的智能家居控制终端解决方案,也有完全基于PC机的智能家居控制终端解决方案,同时还有采用手机作为家居控制终端,利用GSM电话网络通信,实现短信或者语音控制。而以上多种技术的应用,催生了各种智能控制模块的研究和生产,因此导致了当前智能家居控制系统的标准无法统一,各个系统和模块之间难以实现互联互通。针对以上问题,本文提出了一整套的智能家居控制系统解决方案,该方案采用Android智能手机作为控制终端,在STM 32F 107移植μC/OS-II操作系统和LwIP协议栈搭建嵌入式服务器,通过搭建ZigBee无线传感网络,采用改进的ZigBee路由算法,制定完善的通信协议,提高网络通信性能,最终实现手机对智能家居的远程和本地的实时监控。
1 系统总体设计
本文所设计的智能家居控制系统主要包括嵌入式服务器,Android客户端和ZigBee无线模块节点。移动控制终端和ZigBee无线模块节点通过嵌入式服务器进行通信实现信息交互。即用户采用Android客户端程序发送指令通过互联网或局域网传输到智能家居嵌入式服务器,服务器在接收到控制命令后再通过ZigBee无线传感网络发送到对应的终端节点,终端节点接收到命令后进行相应的操作,比如采集温湿度信息并将信息反馈到服务器,服务器再将信息通过局域网或互联网发送到Android客户端进行显示。系统总体结构图如图1所示。
图1 系统结构图
2 系统硬件设计
2.1 设计原则
嵌入式服务器在整个系统中起着至关重要的作用,其实现的主要原则应从下面几点出发:(1)允许Android客户端远程登录到服务器,并能够保存登录用户的基本信息,实现多用户登录,为每个用户都能提供相应的服务。(2)能够正确接收客户端发送的控制命令,并能够返回相应信息。(3)能够与ZigBee协调器实现信息交互,完成命令传输和信息采集。嵌入式服务器启动后,采用socket通信方式接收客户端的登录命令,验证通过后为客户端提供相关服务。
2.2 服务器硬件设计
本次研究采用ST公司生产的Cortex-M3为内核的微处理器芯片STM 32F 107VC进行扩展搭建嵌入式服务器硬件平台,硬件结构图如图2所示。根据需求,外围需扩展的功能模块主要包括与ZigBee协调器通信模块和与控制终端实现网络通信硬件模块。其中与ZigBee协调器通信采用串口通信方式实现。而STM 32F 107内部集成了以太网MAC控制器,因此本次设计采用RMII接口连接以太网PHY(物理层)芯片DM9161。
图2 嵌入式服务器硬件结构图
2.2.1 网络通信接口
网络通信接口是服务器与控制终端实现网络通信的桥梁。STM 32F 107内部集成了一个以太网MAC,并有专用的DMA控制,实现内部数据的高速传输。STM 32F 107还同时支持MII和RMII两种物理层接口,因此只需外界一片物理层收发器,即可实现以太网帧的发生和接收,实现网络通信。所以本次设计采用高性价比的DM 9161A 作为 10M / 100M 以太网PHY芯片,采用RMII接口与处理器STM 32F 107内部的IEEE1588 MAC连接,并与标准RJ45接口HR 911105A 连接,支持平行交叉网线自适应,实现以太网通信功能。网络接口硬件接口设计如图3。
图3 以太网通信接口
2.2.2 ZigBee无线模块节点
智能家居中,家居内部无线网络通信方式的选择至关重要。在本次智能家居控制系统设计中,家庭内部网络采用ZigBee数传模块组网技术。在智能家居网络中,ZigBee无线模块节点被分为主节点和从节点,主节点主要负责建立无线网络,分配从节点网络地址,并与从节点和嵌入式服务器实现指令的发送和接收。
ZigBee无线模块从节点主要嵌入到终端设备中用于采集检测信息发送到主节点,或者接收控制命令实现对终端设备的控制,ZigBee网络结构图如图4。
图4 ZigBee网络结构图
ZigBee无线模块节点采用TI公司的CC2530作为主控制器芯片。该芯片是用于2.4GHz IEEE 802.15.4、ZigBee和RF4CE应用的一个真正的片上系统解决方案。它结合了领先的RF收发器的优良性能,基于51内核,系统内可编程闪存,8KB RAM和许多其它强大的功能。
ZigBee数据采集节点主要包括一些通过传感器实现的信号采集类模块,比如温湿度采集,可燃气体泄漏或者火灾发生时的信号ZigBee数据采集并报警。设备控制节点主要嵌入到家电设备中,以实现门禁系统、灯光控制、智能窗帘、智能热水器、智能空调、摄像头云台等的远程控制。
3 系统软件设计
本系统的软件主要包括3个部分:嵌入式服务器软件平台、ZigBee节点控制程序、控制终端的Android应用程序。
3.1 嵌入式服务器软件实现
嵌入式服务器软件平台的搭建根据以下2点需求来进行:(1)服务器要实现实时多任务操作。(2)服务器要实现TCP/IP网络通信功能。因此,本系统选择移植实时操作系统μC/OS-II作为服务器操作系统,移植LwIP实现TCP/IP网络通信。
3.1.1 操作系统移植
μC/OS-II是一个可移植、可固化、可剪裁、抢占式多任务实时内核。它适用于多种微处理器,微控制器和数字处理芯片,是和很多商业操作系统性能相当的实时操作系统。
在移植μC/OS-II系统过程中,需修改以下几个文件:汇编文件OS_CPU_A.ASM,与处理器相关C文件OS_CPU.H和OS_CPU_C.C,系统配置文件OS_CFG.H。
3.1.2 LwIP协议栈移植
LwIP是TCP/IP协议栈的一个实现。它的目的是减少内存使用率和代码大小,使LwIP用于资源受限系统,本次设计的嵌入式系统正属于此列。因此,为实现嵌入式服务器的TCP/IP网络通信功能,有必要移植TCP/IP协议栈,综合考虑,本次设计选择移植开源的LwIP协议栈。为移植LwIP,主要工作是需针对本次设计中的目标系统μC/OS-II修改模拟层实现。移植后的系统软件框架如图5。
图5 服务器软件框架
3.1.3 应用程序编写
本次设计中,嵌入式服务器实现对远程用户登录注销、用户信息管理和数据传输两大主要功能。服务器依据客户端指令分别实现客户端的登录注销、用户信息管理、终端设备控制三种功能。用户登录时服务器创建服务,注销时结束服务并切断与客户端的通信。用户信息管理允许用户通过客户端修改用户信息,终端设备控制功能允许用户使用客户端来实现远程监控家居环境。控制功能由服务器与ZigBee协调器通信实现。服务器工作流程图如图6所示。
图6 服务器主线程工作流程图
服务器启动后进行系统初始化,初始化主要包括设置STM32系统时钟、串口、以太网、GPIO、中断控制器NVIC、LwIP栈。系统初始化完毕创建2个任务,优先级为3的任务内容是实现socket通信,注册数据接收回调函数,当接收到数据时在回调函数中进行数据接收处理,其中要使用socket接口必须包含API头文件socket.h。优先级为4的任务完成串口数据的接收,在任务中不断查询串口数据接收完成或缓冲区溢出标志USART_Rx_Done,当数据接收完毕或缓冲区溢出时,此时在中断服务程序中设置全局变量USART_Rx_Done为1,即表示通知主线成串口数据接收完毕,主线程将接收到得数据以网络通信的方式发送的客户端。服务器中断程序流程图如图7。
图7 中断服务程序流程图
3.2 移动控制终端Android应用程序设计
Android客户端应用程序主要实现三个部分功能,程序功能界面、与家居服务器通信和处理相关信息。
3.2.1 功能界面设计
应用程序界面设计包括登录界面和功能界面。功能界面采用底部导航栏分栏显示,包括主页、设备控制、信息中心和系统设置四个方面。主页主要显示当前住宅内部温度和湿度以及安防信息;设备控制主要包括灯光控制、家电控制、门窗控制和情景模式,通过安检选项进行控制;消息中心主要显示住宅环境的一些家居状态消息,比如当住宅发生火灾时传感器检测到危险信号后服务器会发送信息到消息中心显示,并且手机根据消息命令会自动实现报警和提醒用户等;系统设置主要包括设置一些用户权限和网络通信配置。设计好的界面如图8所示。
图8 登录及主界面
3.2.2 网络通信实现
移动Android应用程序设计中主要涉及两个方面的数据通信,一个是界面Activity组建与后台Service组建间的通信,另一个是Android客户端与嵌入式服务器间的通信。在Android应用程序中,Activity主要负责前台页面的展示和用户指令的接收,Service则主要在后台负责长时间执行的任务比如监控任务。移动客户端应用程序中数据通信架构如图9。
图9 数据通信程序架构
在Android中,Activity主要负责前台页面展示,Service主要负责需要长时间运行的任务。在图9中, 参考And roidIPC通信机制,在Activity中通过Intent启动后台Service,Intent中传递了Activity从用户动作中接收到的数据。Service在后台启动后创建一个Socket服务子线程与嵌入式服务器实现网络通信,并将服务器返回的数据通过Binder对象传递给Activity。另一方面,Service在程序登陆后创建一个循环子线程实现每隔一分钟向服务器发送一次更新数据指令,以便实时更新主页面显示数据。
4 结束语
本文利用ZigBee数传模块对智能家居信息进行ZigBee数据采集,将Android客户端安装到手机,并搭建服务器平台,在实验环境下进行试验和调试。实验结果表明系统运行稳定,Android手机客户端可以通过无线网对家居设备实现远程控制,并且能够实时接收并显示住宅环境信息,当检测到异常时能够及时的发出警报。
本次设计的智能家居控制系统,采用了当下最流行也最实用的智能手机实现对家居环境的实时监控。这种方式通用性强,操作便捷,易于安装推广,运行稳定可靠。达到了对家居设备智能化管理的目的。同时,本次设计在功能上可以加以改进,比如可以在后续的工作中加入视频监控、智能服务等内容。