摘要:智能家居系统中,随着传感器数量的增多,有线的布线系统弊端逐渐体现。本文将无线传感器网络引入智能家居系统中,主要介绍了一种低功耗智能家居无线传感器网络系统的设计方法。采用以超低功耗处理器MSP430为核心,以嵌入式实时操作系统μC/OS-II 为软件设计平台。详细介绍了硬件和软件上的低功耗设计,进而达到降低系统功耗、延长网络寿命、增强网络稳定性。
0 引言
随着计算机技术和通讯技术的发展,智能家居系统也得到了迅速的发展。传感器是智能家居系统中的重要组成部分,也是智能化的最基本和最重要的部分。随着智能化要求的提高,越来越多的传感器被引入智能家居系统中,如果还是采用传统的有线网络,就必须提前设计铺设大量电缆,一旦要增加一个传感器节点,就需要重新再布一条线路,在别墅此类大型家居网路中,其不足更加明显了。而且在已经装修布线完毕的家居中,有线网络的引入更是不方便。无线传感器网络,除了省去布线这个麻烦外,还具有自组织能力,在节点的增减上非常方便,本文将无线传感器网络应用在智能家居系统中,提出了一种以超低功耗单片机为处理器,嵌入式操作系统为平台的智能家居无线传感器网络的设计方法,从而达到家居中的节能目的。
1 系统构成及实现的功能
智能家居系统是一个庞大的系统,本设计的无线传感器网络系统主要应用在对家居环境的检测和调节,主要是由三部分构成:传感器节点、协调器和家庭网关,如图1。整个家庭内部网络采用星形网络结构为主,具体实现功能:由协调器负责整个无线传感器网络的构建,通过不同的传感器节点对温度、亮度、湿度等环境参数进行检测、处理后,通过无线网络传给网络协调器,网络协调器将数据传给具备家庭网关功能的主控制器,控制器通过无线网络来发送控制信号到被控端(灯光、空调以及其他家电控制器)。主控制器的另外一个功能就是将整个家庭网络跟外界Internet 网络互联,实现远程查询状态、控制家居中家电。
图1 家庭网络系统框图
现在常用的短距离无线通讯技术主要有:蓝牙(Bluetooth)、Wi-Fi 和Zigbee 技术。表1列出了这三种技术的对比。在家庭传感器网络中,对环境参数如温度、亮度以及湿度等数据的传输速率要求不是很高,而对设备的功耗要求倒是比较高的,鉴于Zigbee 协议具有低功耗、低数据速率、低成本等特点,本设计的家庭网络通讯采用Zigbee 协议。
表1 三种无线通讯技术对比
由于篇幅限制,本文主要介绍家庭网络节点的设计。Zigbee 通讯节点主要是用在传感器节点、子控制器以及协调器之间的通讯。采用TI 公司的MSP430 系列超低功耗单片机与CC2420无线收发芯片结合,以嵌入式操作系统为平台,通过节能策略对任务的调度管理达到降低节点功耗,起到延长网络寿命和增强稳定性的效果。
2 家庭网络节点的硬件实现
2.1 Zigbee 技术。
Zigbee是IEEE802.15.4 协议的代名词。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。
其特点是近距离、低功耗、低数据速率、低成本,可以嵌入各种设备。Zigbee 采用自组织方式组网,这种架构被称为无线基础架构的无线局域网,这种架构对网络内部的设备数量不加限制,并可随时建立无线通信链路,协调器一直处于监听状态,一个新添的节点会被网络自动发现。
2.2 节点硬件构成
根据不同的应用,无线传感器节点的组成不尽相同,但是一般是由数据采集、数据收发、数据处理和电源这四部分构成。
(1)数据采集:不同的节点有不同的数字传感器,温度、湿度、亮度等传感器。如果该网络节点是应用在被控端和协调器中,则不需要数据采模块。
(2)数据收发:由CC2420 无线射频模块构成,在协调器节点还需要串口通讯与家庭网关进行数据交换。
(3)数据处理:MSP430 系列超低功耗单片机,根据不同的节点要求,采用不同型号的单片机。
(4)电源:负责单片机、无线射频模块以及传感器等器件的供电。
CC2420 是Chipcon As 公司推出的首款符合2.4GHzIEEE802.15.4 标准的Zigbee 兼容射频收发器。该器件包括众多额外功能,是第一款适用于Zigbee 产品的RF 器件,性能稳定且功耗极低。CC2420 的选择性和敏感性指数超过了IEEE802.15.4 标准的要求,可确保短距离通信的有效性和可靠性。
对CC2420 的操作来说,只需要少量的外部原件,其外围电路包括晶振时钟电路、射频输入/输出匹配电路和微控制器接口电路三部分。芯片本振信号既可由外部有源晶振提供也可以有内部电路提供。射频输入/输出匹配电路主要用来匹配芯片的输入/输出阻抗。CC2420 可以通过4 线SPI 总线(SI、SO、SCLK,CSn)设置芯片的工作模式,并可实现读/写缓存数据,读/写状态寄存器等。图2 就是CC2420 部分的电路图。在SPI 总线接口上的进行的地址和数据传输大多是MSB 优先的。在数据传输过程中CSn 必须始终保持低电平。
另外,通过CCA 管脚状态的设置可以控制清除通道数据,通过SFD 管脚状态的设置可以控制时钟/定时信息的输入。这些接口必须与微处理器相应管脚相连来实现系统射频功能的控制与管理。
图2 CC2420 电路原理图
作为主控制器的MSP430 系列单片机,是TI 公司1996 年开始推向市场的一种16 位超低功耗的混合信号处理器(Mixed Signal Processor),特点是超低功耗和功能集成。本设计采用了不同系列的单片机,本文以MSP430F149单片机为例子,工作电压为1.8V~3.6V,待机电流小于1μA,在RAM 数据保持方式时耗电仅0.1μA,在活动模式时耗电250μA/MIPS,I/O 输入端口的漏电流最大为50nA。通过控制位可以设定一种活动模式和5 种低功耗模式,同时内部集成有丰富的片内外设,片内JTAG 调试接口令其开发方式方便快捷,特别是它的功耗低、体积小,因此适合选用。
图3 是节点硬件连接框图,图中的LED 指示灯是测试时候用来指示数据的传输、节点的发现以及节点休眠等状态。串口通讯模块是在协调器中与家庭网关进行数据通讯,在被控端节点中,数据采集模块和串口通讯模块也都不需要,这里为了节省篇幅,故都集中到一张图来说明。节点通过数据采集模块采集到数据,如温度、亮度、湿度等,再经微控制器对数据进行处理,同过CC2420 无线收发器将数据传送到主控制器。
主控制要查询环境参数,改变环境的亮度、温度、湿度也是通过CC2420 将命令传送到传感器节点或者是终端控制器。
图3 节点硬件连接框图
3 软件实现
系统的软件都是基于嵌入式实时操作系统μC/OS-II 设计的。μC/OS-II 是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSI C 写的,μC/OS-II 占用很少的系统资源,它的最小化内核能编译到2K,很适用于无线传感器网络节点。
整个软件的设计包括嵌入式系统的移植以及在μC/OS-II 内核基础上,应用程序的编写。除了移植μC/OS-II 中配置与CPU 有关的用汇编语言编写,整个程序设计采用C 语言进行程序设计。
3.1 μC/OS-II 在MSP430 单片机上的移植
μC/OS-II 在MSP430 单片机的移植可以归纳为以下两个部分:一是定义基本配置,二是实现系统相关函数。
定义基本配置主要包括:(1)定义编译器相关的数据类型;(2)设置堆栈单位;(3)定义CPU 状态寄存器;(4)定义堆栈的增长方向;(5)宏定义:包括开关中断的宏定义,以及进行任务切换的宏定义;(6)系统中断栈指针,实现中断栈与任务栈分离。
这里值得说明的是,由于MSP430 单片机RAM 空间一般都比较小,而μC/OS-II 发生中断直接把现场保存在所运行的任务的堆栈上,所以每个任务堆栈必须留下足够的空间保存中断堆栈,因此造成RAM 空间的浪费。所以要实现 μC/OS-II 中断栈与任务栈分离。实现μC/OS-II 把中断栈与任务栈分离节省 RAM 空间,代价是增加任务调度时间。
实现系统相关函数主要包括建立任务时初始化任务栈函数,钩子函数以及其他函数等等,这里就不一一列举。
3.2 应用程序编写
μC/OS-II 操作系统移植后,应用程序的编写就在其上面,以任务的形式编写。
图4 节点软件体系框图
在μC/OS-II 操作系统中,主函数的功能主要就是初始化操作系统,创建起始任务,开始多任务调度。图4 是节点软件体系框图。
起始任务:初始化、使能端口(SPI 端口、CC2420 控制端口、UART 端口、I/O 端口等);启动CC2420;根据节点的应用场合创建其他任务(数据采集任务、数据收发任务、串口通讯任务、控制任务等);执行起始任务主体,协调器的起始任务主体是:构建整个网络、查询有无新增、减少节点;终端节点的任务主体是:
查询网络,加入网络。
数据采集任务:初始化传感器芯片;通过传感器芯片检测环境数据(温度、亮度、湿度等)。
数据收发任务:负责收发采集的数据、反馈的信息、主控制器的控制指令等。
串口通讯任务:负责协调器与家庭网关之间数据交换。
控制任务:终端节点执行主控制器的指令,调节温度、亮度、湿度等。
μC/OS-II 是一个可抢占的多任务嵌入式实时操作系统。任务有64 个优先级,这种优先级算法有利于保证系统的实时性,使高优先级任务及时得到响应,但是,这种多任务调度并没有考虑到低功耗的应用。针对无线传感器节点的特性,其需要的任务不是很多,但对低功耗要求大,对此对μC/OS-II 的任务调度做些改进。
3.3 低功耗策略
硬件上采用低功耗芯片,低节点的功耗,提高网络的寿命。软件部分主要是在任务调度管理上实现的。
在具体实现过程中,采用的低功耗改进策略如下:
1) 在多任务系统运行时,系统经常会在某个时间内无用户任务可运行而处于空闲状态。在μC/OS-II 中规定,一个用户程序必须使用一个空闲任务OSTaskIdle(),而且这个任务不能用软件删除的。基于此,本设计对该任务的钩子函数进行改进,在系统进入空闲任务前,进入低功耗模式。
把OSTaskIdleHook(void)改写成:
void OSTaskIdleHook(void)
{
LPM0;/*进入低功耗模式LPM0*/
}
2) 在系统进入空闲任务时,系统进行计时,如果系统在空闲任务工作的时间超过预先设定的值,则先将外围芯片如CC2420、传感器等芯片进入休眠状态,系统自动进入休眠功耗模式。如果在休眠状态下,没有发生需要系统处理的事件,则进入睡眠状态。在睡眠状态下,如果发生事件,则先进入休眠状态,如果事件对系统是有效事件,则系统恢复运行模式。
3) 在任务调度方面,如果任务执行后,在短期时间内不需要再执行,(如对灯光亮度,温度、温度采集的任务就不需要时时刻刻在运行)则将任务进入睡眠状态。当系统所有任务都进入睡眠状态的时候,系统进入睡眠模式。如果任务睡眠时间到,则激活CPU,重新开始调度。
根据MSP430F149 处理器和CC2420 芯片的不同的工作模式,低功耗模式的选择可以根据实际情况选择。
如CPU 电压为3V 的情况下在活动模式下耗电300μA,在LPM0 低功耗模式下,耗电为55μA,在LPM1 低功耗下耗电17μA,在LPM4 低功耗模式下为0.1μA 等。而CC2420 稳压器关闭为0.02μA,低电位模式为 20μA,空闲模式为426μA,接收模式为18.8 mA,发送模式(输出功率P=0dBm)为17.4 mA。
系统的功耗的降低就取决于系统休眠的时间,而家庭网络中,像光度、温度、湿度等类的环境传感器一般情况下是不需要检测时间远远大于检测时间,因此从软件上对节点任务调度管理,能够极大的降低系统功耗。
4 结语
设计调试过程中,以DS18B20 温度传感器为对环境数据采集,整个系统运行状态稳定。本设计将无线传感器网络引入智能家居中,对设备的增减、布线等方面都能带来极大的方便,尤其在传感器数量庞大的智能家居系统中优点更为明显。无线传感器网络将会成为今后智能家居控制系统的研究趋势。设计嵌入式操作系统为平台的传感器节点,提高了设计的效率同时也方便了今后功能的扩展。研究构建低功耗传感器网络,对提高整个网络的寿命、增强网络的稳定性,均有极大的作用。
本文作者创新点:将无线传感器网络引入智能家居中,采用超低功耗器件设计节点,任务调度采用低功耗策略,极大降低了系统能耗,增强网络稳定性,节点的嵌入式系统设计,方便后续开发,缩短开发周期。