成都理工大学 王 佩 陈金鹰 喻恒彦
基于ARM和ZigBee的智能家居的设计
成都理工大学王佩陈金鹰喻恒彦
利用ZigBee无线传感网络实现对家电等设备的控制,将采集到数据封装成统一格式后传送到ARM平台的嵌入式网关,利用Qt编程设计的可视化界面,实现了在网关上对采集数据的显示和家电等设备的控制。另外网关上嵌入了Boa网络服务器实现网页访问智能家居控制系统,方便用户在终端浏览器上通过网页远程控制。
ZigBee;ARM;Qt编程
随着电子信息技术和计算机网络技术的快速发展,人们的生活水平大幅度提高,对生活环境的舒适度要求也越来越高,构建高效的住宅设施与家庭日程事务的管理系统成为当前的一个研究热点。本文设计了一个基于ARM的家居控制系统,该系统即可以满足家庭一般家居的智能化操作,方便的提高人们生活质量,又可以实现对家居安全性和节能性的需求[1]。
设计实现的是一个基于ARM智能家居多平台系统。用户可以通过该系统(目前包括Qt用户操作平台、网页用户操作平台)实时监测房屋的数据、远程控制家电,并且系统会完成一些自动化控制。系统主要包括了消防系统、门禁系统、家庭环境数据采集系统,家电控制系统,盆栽植物的远程控制浇水系统,视频监控系统。其中主要涉及的技术和工作有:
①通过Linux系统编程完成串口应用程序,后台服务进程,安卓客户端的服务进程等;
②向开发板移植嵌入式web服务器,通过CGI C编程完成服务器与硬件的交互;
③通过V4L框架提供的API完成远程视频监控程序的编写;④完成ZigBee的组网和协议栈的开发;
⑤51单片机的编程(包括了某些器件的时序控制),完成了传感器数据的采集和一些器件的控制;
⑥Qt图形界面编程完成用户控制界面的开发;
⑦通过HMTL语言加javascript和ajax完成了网页控制平台。
3.1系统框架图(见图1)
图1 智能家居系统框架图
图2 8Byte的char类型数据包
3.2系统框架综合概述
3.2.1网络通信的数据格式的定义
为了保证系统的可扩展性我们自行定义了一种收发数据格式,如图2所示,在系统中涉及的CDMA、ZigBee、Internet网络中均采用这种数据格式通信;方便嵌入式网关对数据的分类处理,以及ZigBee终端接收到协调器的信息,匹配自己身份成功后作出相应的动作[2]。
3.2.2数据上传
第一步:ZigBee终端节点将采集到的数据通过按照先前叙述所定义的格式发送给ZigBee协调器;
第二步:ZigBee协调器将数据转发到串口,嵌入式网关开机自启串口后台服务进程(该进程主要完成嵌入式网关从串口读取数据,并将数据写入到共享内存里面,提供给其它应用程序使用,另外还能完成一些自动化控制(如房间温度超过用户设置的最高值,会自动打开散热器,模拟空调给房间降温);
第三步:Sqlite服务进程从共享内存读取到数据插入数据表格,实现房间环境参数的历史数据存储;
第四步:Qt从共享内存读出数据,显示到智能家居控制面板上;CGI程序将数据显示到网页上[3]。
3.2.3下达控制命令
第一步:通过用户操作智能家居控制界面,把操作指令写入到共享内存里面;
第二步:串口后台服务进程将共享内存的指令发送到串口;第三步:ZigBee协调从串口读取指令,并将指令以广播的形式发送给该网络的ZigBee终端节点;
第四步:ZigBee终端节点接收到指令,做设备号匹配,匹配成功后,就会执行相应用户操作。
该系统主要由两部分组成:嵌入式网关部分和智能家居实体模型部分,因此我们的软件从这两部分设计。其中智能家居模型主要包括了电源模块,51单片机系统,ZigBee终端,各类传感器,电子控制模块等;嵌入式网关部分包括Tiny6410嵌入式开发板,RFID阅读器模块,USB摄像头,wifi-AP模块,外接音响等。
4.1ARM平台软件设计
系统在Qt智能家居控制面板使用Qt Creator集成开发环境开发,主要涉及的是控件和槽的使用。实现各种功能,包括对各种家居设备如的控制和相关工作状态查看,系统主界面主要起统筹管理的作用,它给我们提供了各个功能模块的接口,只要点击相应的图标按钮,用户就可以进入相应的功能界面,每个功能的具体实现由各个相应模块的代码完成。串口后台服务程序主要是完成读取端口的数据,把数据写入到共享内存,方便其他进程使用;后台服务程序也会定时读取该共享内存另一个段上,将数据写到端口,发给ZigBee协调器[3]。
4.2ZigBee软件设计
ZigBee选用CC2430型号的芯片,由于该芯片是一个加强版的51芯片,里面运行ZigBee协议栈。开发协议栈最主要是要了解协议栈的框架,协议栈的运行。为了开发方便,开发主要集中放在应用层。主要从ZigBee协调器和终端实现其功能:
ZigBee协调器在本系统中主要接受来自终端的数据,并将数据通过串口发送给ARM开发板,并且通过回调函数触发读取串口的数据,并将数据以广播的形式发送给ZigBee终端。
ZigBee终端主要是从串口读取单片机C51控制传感器采集的数据,通过无线传感网络发送给ZigBee协调器,接受来自ZigBee协调器的指令,并匹配指令中的ZigBee号和设备号,配成功后,终端执行相应的动作。ZigBee接受指令后,匹配信息成功,将数据通过串口发送给单片机。
4.3ZigBee软件设计
单片机选用的是89C54型号,89C54是一款加强版的51MCU,在本系统主要完成一些底层硬件的控制,如矩阵键盘的扫描,密码的匹配,步进电机的控制,温湿度采集和一些家电的控制。
目前市场智能家居市场的各种各样产品,但是大部分的普通家庭还是望而止步,主要还是整个系统的铺建需要支付不菲的资金。本系统采用嵌入式芯片,不仅具有强大的数据处理能力且稳定,安全性特别好,量化采购价格也合理。系统实现了多平台控制,用户可以使用多种终端实现家庭的监控,方便用户的操作。
[1]马菁菁.Zigbee无线通信技术在智能家居中的应用研究[D].武汉理工大学,2007.
[2]李文仲,段朝玉.ZigBee2007/PRO协议栈实验与实践[M].北京:北京航空航天大学出版社,2009.
[3]吴文忠,李万磊.基于ARM和ZigBee的智能家居系统[J].计算机工程与设计,2011,06:1987-1990.
王佩(1990-),女,山西吕梁人,硕士,现就读于成都理工大学,研究方向:智能控制。