目前普遍使用的无线传感器网络平台主要有Crossbow公司的Mica2/MicaZ和Microchip公司的PICDEMZ等。MicaZ虽然具有Tinyos操作系统,但是没有结合Zigbee技术;PICDEMZ的Zigbee协议栈不完全符合Zigbee的定义,而且功能简单。因此,设计一种Zigbee无线传感器网络平台,可以更好地开发无线传感器网络的应用和Zigbee技术。
本文在分析Zigbee无线传感器网络的特点和关键技术的基础上,提出Zigbee无线传感器网络平台的设计实现方案,采用模块化的方法实现了Zigbee协议栈,并且使用该无线传感器网络平台进行了温度监测的实验。结果表明,该平台实现了Zigbee无线传感器网络的基本功能,可以更好地开发Zigbee技术。
1 Zigbee无线传感器网络
1.1 无线传感器网络
一个典型的无线传感器网络至少要由无线传感器节点、网络协调器和中央控制点组成。大量传感器节点随机部署在监测区域内部或附近,能够通过自组织方式形成网络。传感器节点监测的数据沿着其他传感器节点逐跳地进行传输,在传输过程中监测数据可能被多个节点处理,经过多跳后路由到网络协调器,最后到达中央控制点。在这个过程中,传感器节点既充当感知节点,又充当转发数据的路由器,用户通过中央控制点对无线传感器网络进行配置和管理,发布监测任务以及收集监测数据[3]。图1给出了一个典型的无线传感器网络的结构。
1.2 Zigbee技术
Zigbee技术是一种具有统一技术标准的短距离无线通信技术。完整的Zigbee协议栈由物理层、介质访问控制层、网络层、安全层和应用层组成。其物理层和介质访问控制层协议为IEEE802.15.4协议标准[4],网络层和安全层由Zigbee联盟制定,应用层的开发应根据用户自己的需要,对其进行开发利用[1,5]。
在无线通信技术上,采用免冲突多载波信道接入(CSMA-CA)方式,有效地避免了无线电载波之间的冲突。此外,为保证传输数据的可靠性,建立了完整的应答通信协议。
Zigbee设备为低功耗设备,其发射输出功率为0~3.6dBm,通信距离为30~70m,具有能量检测和链路质量指示能力,根据这些检测结果,设备可以自动调整发射功率,在保证通信链路质量的条件下,最低限度地消耗设备能量。
在组网性能上,Zigbee可以构造为星形网络或者点对点对等网络。在每一个Zigbee组成的无线网络中,连接地址码分为16bit短地址码或者64bit长地址码,具有较大的网络容量。
2 Zigbee无线传感器网络平台的硬件设计
2.1 设计目标
Zigbee无线传感器网络平台在各种应用系统中存在一些现实的约束[3,6]:
(1)外形尽量小。芯片的尺寸决定了整个节点的尺寸。
(2)集成度尽量高。各种传感器节点通常需要程序存储器、静态存储器、A/D转换器、定时器和计数器等多种硬件资源。特别是要有足够大的ROM空间存储Zigbee协议栈。
(3)功耗低而且支持休眠模式。是否具有休眠机制直接关系到节点生命周期的长短,所以芯片必须支持低功耗的休眠状态。
(4)运行速度尽量快。系统应在最短时间内完成工作,从而快速进入休眠状态,以节省系统能源。
(5)工作在免费的ISM(Industial Scientific Medical)频段,2.4GHz它是免付费、免申请的无线电频段,在该频段上,数据传输速率为250Kb/s。
(6)成本要尽量低。芯片在传感器节点成本中占很大的比例。
2.2 基于CC2430的硬件设计
目前,常见的Zigbee无线传感器平台都是由一个8位或16位的单片机和Zigbee射频芯片组成。随着芯片设计的发展,目前出现了无线单片机,即将处理器模块和射频模块集成在同一个芯片中。Ti-Chipcon公司的CC2430就是其中的代表,其典型应用如图2所示。
CC2430集成了Zigbee 射频前端、ROM和8051微控制器在一个芯片内,而且大小仅为7mm×7mm,这样就使得设备集成度高、外围器件很少、外形很小;在接收和发射模式下,电流损耗分别低于27mA或25mA,并且支持四种休眠机制,可以大大地降低功耗;CC2430工作在2.4GHz的免费频段,而且芯片价格仅为5美元左右,使用成本很低。所以CC2430很符合Zigbee无线传感器网络平台的设计要求[2]。
3 Zigbee无线传感器网络平台的软件设计
3.1 软件结构
Zigbee无线传感器网络设备上的软件主要由嵌入式操作系统、Zigbee协议栈和应用程序组成,嵌入式操作系统内核提供了简单高效的任务调动、中断处理和时间队列管理等,还包括所有硬件的底层驱动。应用程序包括串口通信、射频通信和信号强度检测等。采用模块化的设计协议栈,使得整个系统层次清楚、扩展性好、有利于Zigbee技术的二次开发。
3.2 协议栈设计
Zigbee协议栈能够确保无线设备在低成本、低功耗和低速率网络中的互操作性。Zigbee协议栈的不同层通过服务接入点进行通信,大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制[1]。其基本结构如表1所示。
PHY层由射频收发器以及底层的控制模块组成,定义了物理无线信道和MAC层之间的接口。主要功能是启动和关闭无线收发器、能量监测、链路质量监测、信道选择、清除信道评估以及通过物理介质对数据包进行发送和接收。
MAC 层为高层访问物理信道提供了点到点通信的服务接口,具体功能是信标管理、信道接入、时隙管理、发送确认帧、发送连接及断开连接请求。此外,MAC层还为应用合适的安全机制提供了一些方法。
网络层主要用于建立和维护网络连接。它独立处理传入数据的请求、关联、解除关联和孤立通知请求。
应用层主要为Zigbee技术的实际应用提供一些应用框架模型等,以便对Zigbee技术进行开发应用。
由于Zigbee技术已经定义了物理层、介质链路层和网络层的标准规范,因此这三层的实现通常是类似的。无线传感器网络的不同应用都是由基本应用组成,如加入网络、脱离网络、发送数据等。本文使用IAR Embedded Workbench for 8051软件编写了本网络平台的物理层、介质链路层和网络层程序代码,其中每层的头文件定义了该层所支持的服务与应用程序接口。同时该平台还提供了一些应用接口,如aplFormNetwork()、aplJoinNetwork()、aplSendMSG()等,用户可以通过调用这些函数来实现自己的开发与应用。
3.3 代码示例
Zigbee无线传感器网络协调器在进行一些初始化之后,调用aplFormNetwork()来建立网络。协调器通过扫描一个空信道来建立一个新的网络,然后选择一个随机的PAN ID并开始监听此信道。同时协调器还有一个目前连接设备的列表,以支持其他设备加入网络。
main( ) {
halInit( ); //硬件初始化
aplInit( ); // 初始化协议栈模块
ENABLE_GLOBAL_INTERRUPT( ); //打开全局中断
aplFormNetwork( ); //建立网络
while(apsBusy( )) {apsFSM( );} //等待网络建立成功
while(1) {apsFSM( );} //运行协议栈
}
同样,Zigbee路由器和终端设备通过aplJoinNetwork()加入协调器建立的网络中。终端设备扫描信道找到协调器并申请加入网络,获取协调器的地址,同时将本设备的地址发送给协调器。网络加入成功后,终端设备则进入休眠状态,直到有数据发送时才被唤醒。
main( ) {
halInit( ); //硬件初始化
aplInit( ); //初始化协议栈模块
ENABLE_GLOBAL_INTERRUPT( ); //打开全局中断
do {
aplJoinNetwork( ); //加入网络
while(apsBusy)( )){apsFSM( );} //等待加入网络成功
}while (aplGetStatus( ) !=LRWPAN_SUCCESS);
while(1) {apsFSM( );} //运行协议栈
}
4 应用
Zigbee无线传感器网络是具有低成本、低功耗、低速率的短距离的无线通信网,在实际应用中,通常应满足以下条件:设备成本低、体积小;使用一次性电池;通信覆盖范围大、传输的数据量很小。使用该无线传感器网络平台方便地利用Zigbee技术开发应用。下面重点介绍基于该平台的温度监测的实验。
无线温度监测系统由多个独立的终端节点、一个网络协调器和一台PC机组成星形网络。其中,传感器节点分布于需要检测的区域,负责对数据的感知和处理,并通过无线射频信号发射出去;协调器接收各个传感器节点发出的无线射频信号,通过RS-232的串口线送入PC主机;PC主机负责存储及对数据的进一步处理。
只要在该平台的基础上设计应用层的程序就能实现无线温度监测,无需设计物理层、MAC层和网络层的代码。每隔10秒进行一次温度采集,两次温度采集期间节点进入休眠状态,以减少功耗。某一时刻对节点1加热,从图3可以看出,在60秒左右时,采集的数据明显地增大。而节点2在时刻采集环境温度,可以看出,采集到的数据基本为一直线。实验结果表明,该温度监控可以很好地实现功能,而且具有低功耗、低速率的特点,布置起来摆脱了线缆的限制。
本文使用CC2430芯片设计并实现了Zigbee无线传感器网络平台,以低成本、低功耗等为目标设计终端节点,采用模块化的方法设计了Zigbee协议栈,使得该平台具有通用性和易开发性,解决了从系统设计到产品设计中的典型问题,加快了Zigbee无线传感器网络的开发和应用。