1 引言
智能家居是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。智能家居可以定义为一个过程或者一个系统。利用先进的计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间;还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。
智能家居网络是指在家庭内部通过一定的传输介质将各种电气设备和电气子系统连接起来,采用统一的通讯协议,对内实现资源共享,对外通过网关与外部网互连进行信息交换的局域网。无线通讯的智能家居网络,将家庭内部的各种设备通过无线通讯技术连接起来。随着无线通讯技术的迅猛发展,无线通讯技术更稳定,更廉价,将无线通讯技术用到智能家居网络成为现实。尤其是以IEEE802.15.4为基础的ZigBee无线短程协议更是推出不久就以其低功耗、低价格、低复杂度引起了业界的广泛关注。智能无线家居是以家居为平台,兼备建筑、自动化、智能化于一体的高效、舒适、安全、便利的家居环境。在智能家居系统中,将无线网络技术应用于家庭网络已成为势不可挡的趋势。这不仅仅是因为无线网络可以提供更大的灵活性、流动性,省去花在综合布线上的费用和精力,而且因为它能更符合家庭网络的通讯特点。ZigBee的Mesh(网状网络)是一种特殊的网络拓扑结构,拥有自配置、自愈合、减少干扰的特性。而对于大多数家居网络来说,配置和路由是一件麻烦的事,特别是家居网络有移动的特性,而ZigBee的Mesh网络的特性对于拓扑不固定的家居网络来说更恰到好处。所以,如何在无线家居网络中使用ZigBee及Mesh,成了学术界和业界的研究热点,也将成为一个颇有潜力的产业。随着无线网络技术的进一步发展,必将大大促进家庭网络智能化的进程。
2 设计思想
2.1 系统结构
通常,整个家居无线网络包含一个网关、灯光控制节点、温度和亮度采集节点、水表节点、风扇节点和灯光节点。基于ARM(ARM2200N)设计的主控节点,用于监控各个节点的当前状态,发出指令查询相应的信息。温度亮度采集节点负责采集室内的温度和光亮度情况,并负责相应主控节点的查询命令。灯光节点负责接收来自主控节点的命令信号。灯光节点可以和亮度采集连动,风扇节点可以和温度节点连动等。
2.2 无线通讯
无线通讯部分实现自配置、自愈合的网络特点,做到网络拓扑无需事先指定,智能家居节点可以根据安装情况自行形成网络。采用AODV的基于距离矢量的路由方式,每一个节点不但能完成自己的通讯工作,还能担当路由器的功能进行数据的转发。
3 设计及实现方法
3.1 硬件设计
在家居无线网络系统的设计中,共包括了主控节点、风扇节点、灯光节点、水表节点、温度亮度采集节点等。
3.2 主控节点
主控模块的硬件构成主要由周立功公司的MiniARM2200系列模块、义统公司的ET52121 OLED模块和无线通讯部分等组成。ET52141作为彩色OLED的控制器,能支持96*96点阵显示和65,000色。ET52141可直接支持像素操作,通过一个16位的高速总线接口实现对图像RAM的操作,同时还可支持低功耗模式。硬件组成见图1。

图1 主控节点硬件组成框图
从硬件组成可以看出,主控节点主要由电源部分、显示部分、输入部分、无线通讯部分以及存贮部分等组成。
整个主控节点分为MiniARM2200部分和无线通讯部分。
MiniARM又由MiniARM2200N-9000模块和MiniARM2200 Eval Board两部分组成。MiniARM2200-9000N采用了飞利浦公司的LPC2220F先进ARM处理器,整合Ram、Flash以及基本控制芯片组成了ARM最小系统。最小系统结构紧凑,扩展性强,适合于ARM系统的快速开发。设计中使用的LPC2220,是一款能支持实时仿真和跟踪的16/32 位ARM7TDMI-STM CPU。对代码规模有严格控制的应用,可使用16 位Thumb 模式将代码规模降低30%以上,而性能的损失却很小。由于LPC2210/2220 的144 脚封装、极低的功耗、多个32 位定时器、8 路10 位ADC、PWM 输出以及多达9个外部中断管脚等特点,使它们特别适用于工业控制、医疗系统、访问控制和电子收款机(POS)等。通过配置总线,LPC2210/2220 最多可提供76个GPIO。由于内置了宽范围的串行通信接口,LPC2210/2220 也非常适合于通信网关、协议转换器、嵌入式软件调制解调器以及其它各种类型的应用。评估板上根据不同的模块,预布了相应的外设、I/O、通信以及电源。这些功能包含: PowerSafeguard 、GPIO、VIC、EMC、UART、Timer、I²C、SPI、WDT、PWM,以及CF 卡、IDE、SD 卡大容量存储设备以及10 M /100M 以太网功能。电源部分根据不同的芯片提供3.3V和5V两种电压选择。LPC2220只需使用3.3V供电,简化了电源部分的设计。电源监控部分选用SP706保证系统的可靠。输入部分采用两个键盘进行简单的菜单选择。串口部分选用了UART0,电压芯片选择了SP3232。显示部分采用ET52141彩色OLED显示控制器。16位总线控制,传输率更高,有休眠和待机等多种低功耗模式,允许精确的电压控制。该款芯片适用于移动设备以及电池驱动的设备。在该开发板中,采用的是96*64的OLED屏。
无线通讯部分由AVR单片机(mega128)和无线通讯模块组成。无线通讯模块由CC2420及部分外围电路组成。单片机可通过SPI总线对无线通讯模块进行操作可以实现Mesh网络。无线通讯模块原理图如图2所示。

图2 无线通讯模块原理图
ARM作为主监控节点通过串口与无线部分进行通讯,无线通讯部分通过对串口的命令解析将相应的网络命令和数据发送到对应的网络节点。
3.3 网络终端节点设计
网络终端节点包括风扇节点、灯光节点、水表节点、温度亮度采集节点。终端节点的无线通讯部分共用一个通讯模块,只是在外围部分扩展不同的应用板而已。终端节点原理框图如图3所示。

图3终端节点原理框图
(1) 风扇节点
风扇节点的目标控制对象采用5V风扇,利用单片机端口来控制三极管的导通和关断,以此来控制风扇的转动与否。
(2)灯光节点
灯光节点的目标控制对象采用LED小灯,通过端口输出驱动,外加电阻限流。
(3)水表节点
水表节点采用数字脉冲式远传水表,目标对象为兼容Meter-Bus的ZigBee无线水表,作用是让智能家居网络可以监控用户的用水情况。
(4)温度亮度采集节点
温度传感器采用LM61,这种传感器使用比较简单,精度可以满足智能家居要求,这种传感器只需要给其提供电源就可以得到温度值(模拟量),然后使用单片机的A/D引脚进行采集。亮度采集采用光敏二级管,在电路中串联一个电阻,然后可以采集电阻的电压,经过一定的运算得到亮度值。
3.4 软件设计
3.4.1 无线通信部分
ZigBee协议栈运行在一个OSAL操作系统上,所以要进行ZigBee开发必须熟悉OSAL。OSAL基于任务调度机制,它是通过对任务的事件触发来实现任务调度。每个任务都包含若干个事件,每个事件都对应一个事件号。当一个事件产生时,对应任务的Event就被设置为相应的事件号,这样事件调度就会调用相应的任务处理程序。OSAL中的任务可以通过任务API将其添加到系统中,这样就可以实现多任务机制。OSAL任务调度流程如图4所示。
其中,NextActiveTask()是一个任务事件查询函数,返回任务的事件状态ActiveTask。软件设计时,可通过ActiveTask的值来决定是否需执行对应的任务函数ActiveTask()。
将无线水表应用的软件部分可以分成几个独立的任务,通过OSAL来实现统一调度。通过osalTaskAdd(),可以将无线水表Task(任务)添加到系统中,然后就可以在水表任务中添加对应的任务事件。

ZigBee通信部分一般是通过其它事件来触发,向系统发送ZigBee通讯事件请求,由系统调度来完成ZigBee通讯。通讯协议部分涉及到两种ZigBee通讯帧格式:KVP(关键信息值)帧格式、Message(消息)帧格式。其中Message方式的帧格式可以由用户自己定义,操作方式比较灵活。所以在发送数据量较大时选择Message方式。在此定义的Message格式如下:
![]()
对应帧格式如下:
OTAFrame {
Uint16 StartWord;
Byte Length;
Byte Cmd;
Byte *Data;
Byte Endbyte ;};
可以通过定义OTAFrameIn 和OTAFrameOut来接收和发送消息帧,实现无线通信。
当只需要发送一个字节或几个字节的命令或数据时,可以使用KVP格式,这是ZigBee协议定义好的一种通信方式,操作比较简单,调用相应的信息发送函数即可实现两点间的通信。
在实际的操作过程中还需要考虑到通信的具体方式,是采用直接发送方式还是通过绑定建立关系的间接通信方式。在无线Mesh网络中采用直接通信方式,即让无线Mesh网络中的节点通过IEEE Address(绝对地址)来实现相互通信。但是,直接地址不能直接用来作为参数实现直接通信,需要通过IEEE Address调用网络API函数查询出相应的网络段地址,最终实现网络节点的相互通信。
3.4.2 功能部分
(1) 主控节点
主控节点软件设计主要包括ARM模块部分和无线通讯部分。
ARM模块部分
ARM模块采用嵌入式操作系统μC/OS-II。图5说明了整个任务分配和调度的情况。对于该部分来说,主要完成与无线网络协调器的通讯部分、OLED的显示部分、键盘菜单部分和CF卡的日志部分等等。
ARM模块作为主控节点,要监控无线网络必需通过无线通讯部分将监控数据读回、将命令发送到对应的节点,与无线部分的通信主要是通过串口来实现。

图5 ARM任务的分配和调度
- 串口任务(TaskSerial)
人们需要主控节点提供人机界面,来了解和控制整个智能家居网络。由于需要随时监听串口,在串口一有数据包发来时立即提供相应的操作,所以将该任务的优先级设为最高。串口接口的驱动,采用消息队列的实现方式,当串口中断使能、并且串口有数据收到时,把数据放入消息队列,同时发信号量给相应的任务。串口与网络协调器之间采用一定的传输协议来保证数据传输的准确可靠。下面给出的是ARM与网络协调器的通讯帧格式。
|
头 |
长度 |
命令字 |
数据 |
校验 |
尾 |
|
0x5A59 |
<=195Bytes |
1Byte |
<=192Bytes |
2Bytes |
0x10 |
整个协议帧以0x5a59开头,0x10结尾。长度包括命令字、数据和校验等字节总数。规定若命令字为奇数,则为回复信息。
- 键处理任务(TaskKey)
主要处理两个按键的相应操作。键盘通过ARM P0.20和P0.22两个GPIO口连接CPU。

图6 主控节点键处理任务流程
通过比较,选择了轮巡的方式,不断地查询键盘的状态。键盘任务每次查键结束后就进入延时等待状态,在下次查键的时候,与上次的键值进行比较,这样既能保证没有键按下的时候,系统可以把CPU让给别的任务,又能避免键盘的抖动给操作系统造成的多余的负荷和误操作。当键值改变以后,就进行相应的键盘处理,如果需要OLED显示的话,就发信号量给显示任务。键处理任务流程图如图6所示。键处理任务和显示任务构成了人机交互界面,在四大类图形菜单中,用户可以对当前房间温度,当前水表用量,当前房间亮度进行读取,同时可以设置风扇和灯自动/手动控制。
- 显示任务(TaskOLED)
显示任务满足OLED的显示功能。在设计中,考虑到引脚的分配,采用8地址线加6控制线的方式来实现OLED的显示。在对ET52141操作时,首先需对OLED进行初始化的工作,包括打开晶振、驱动输出、输出波形、电源控制、对比度控制以及显示控制和指针控制等等。初始化结束后,可根据当前菜单选项显示相应的菜单界面,然后进入挂起状态。OLED的显示操作比较简单,可通过寄存器11写入显示的首地址,然后不断地向寄存器12写入待显示的像素信息,这样就可以连续地输出图像信息了。OLED模块使用16位的颜色信息来表示颜色,颜色分量分别为红色5位,绿色6位,蓝色5位。设计时,将OLED的硬件驱动单独存放于某一文件中,将基本功能写成函数,以方便调用和加强系统模块化。
- CF读写任务(TaskCF)
主要用于完成用户对日志的访问工作。此任务在绝大多数情况下一直处于挂起状态。在有事件发生的时候按照格式存日志,用户访问的时候读日志。CF卡部分与操作系统有关的功能,使用ZLG提供的CF模块。API函数接口丰富,实现功能简单。
无线通信部分
因为此此节点的作用是监控整个网络,所以可以定义此部分的无线通讯模块为网络协调器,用它来监控整个无线网络。
此部分软件需要解析来自串口的协议帧,做到“上传下达”。将网络中发送过来的数据上传到ARM模块,由ARM进行统一的处理,ARM将处理的结果命令发送到串口,再由网络协调器对串口的数据进行解析,将控制命令字发送到网络中的节点。
(2) 风扇节点
接收来自监控节点过来的控制信号,然后控制风扇的开关。
(3) 温度亮度采集节点
定时采集室内温度和亮度,然后发送到主控节点,主控节点会将温度和亮度信息发送到ARM模块,ARM会根据这些信息通过主控节点对网络中的灯光和风扇节点发送相应的打开与关断操作命令。
(4) 水表节点
水表节点采集用水信息,通过无线网络发送到主控节点,由主控节点进行监控。
(5) 灯光节点
灯光节点接收来自主控节点的命令,解析出灯光控制信号,然后进行相应的操作。
4 结语
该设计制作的基于Mesh的无线智能家居网络能实现异地控制、集中控制等功能,由于家居设备安装的随机性,基于Mesh的无线智能家居网络解决了各种类型家居联网的“即插即用”问题,使生活更加舒适、便利和安全。该制作具有自动搜网、组网简单、网络稳定、兼容性强及成本低廉等特点,因其无需布线、功能灵活,扩展容易而被人们广泛接受和应用,非常有推广价值。加之如今无线家居网络成为市场的热点,各大厂商也在不断的开发出适合智能家居的产品,具有很大的应用前景和市场价值。
参考文献:
[1] 彭瑜。低功耗、低成本、高可靠性、低复杂度的无线电通信协议——ZigBee[J]。《 自动化仪表 》,2005年26卷5期:起止页码:1-4。
[2] 凌志浩。ZigBee无线通信协议的技术支持及其应用前景(上)[J]。2006年 10卷 1期:起止页码:44-47。
[3] 盛超华,陈章龙。无线传感器网络及应用[J]。《 微型电脑应用 》,2005年 21卷 6期:起止页码:10-13。
[4] 宋珍伟,陈坚。基于网络技术的远程智能家居系统[J]。《 科技广场 》,2005年 10期:起止页码:97-98。
[5] 周游,方滨,王普。基于ZigBee技术的智能家居无线网络系统[J]。《 电子技术应用 》, 2005年 31卷 9期:起止页码:37-40。
[6] 广州周立功单片机发展有限公司。PHILIPS 单片16/32 位微控制器-LPC2210/2220。http://www.zlgmcu.com。2005年5月/2006年3月。
[7] ZigBee Alliance. ZigBee Alliance Finalizes Specification. www.zigbee.org. 2004年12月/2006年2月。
[8] Atmel Corporation. ATmega128 (L) Complete. http://www.atmel.com. 2003年6月/2006年2月。


