- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于MC13192的无线传感器网络节点设计
摘要:ZigBee技术是一种新兴的无线通信技术,以低速率、低功耗、短距离而著称,是目前研究的热门技术。本文简要介绍了ZigBee技术体系结构与特点,以及基于ZigBee技术的无线传感器网络的主要优势;重点介绍了一种采用符合ZigBee技术的射频芯片MC13192实现无线传感器网络节点的设计方案,并对系统硬件接口电路与无线通信软件流程作了说明。
引言
无线传感器网络是计算机技术、通信技术和传感器网络技术相结合的产物,是互联网领域研究的热点之一。应用于无线传感器网络的技术有许多种(如蓝牙技术、红外技术和超带宽无线通信技术等),推动了无线传感器网络的发展。但是,在家庭控制、医疗护理和工业监测应用中不需要很高的带宽,需要的只是低延迟、低功耗;而如果使用现有的、过于复杂的无线通信技术,将非常耗电,占用过多的计算和通信资源。为满足上述要求,ZigBee技术应运而生。ZigBee技术是一种具有统一技术标准的短距离无线通信技术,把低功耗、低成本作为重要目标,主要应用于低速传输,可以作为无线传感器网络的通信协议。
传感器节点是组成无线传感器网络的基本单元,是构成无线传感器网络的基础平台。ZigBee网络节点通常是一个微型嵌入式系统,完成数据的采集、处理和传送,是决定网络性能的重要因素。本文采用Freescale公司的ZigBee无线收发射频芯片MC13192和Philips公司的32位ARM芯片LPC2138,完成了无线传感器网络节点的设计,给出了软、硬件设计方案,并且在硬件基础上进行了结果分析。
1 ZigBee技术及其优势
图1 ZigBee协议栈结构
ZigBee协议标准是由ZigBee联盟与IEEE 802.15.4的任务小组来共同制定的,其协议栈主要由5层体系组成,结构如图1所示。其中,物理层和MAC层标准主要由IEEE 802.15.4的任务小组完成;网络层和安全层由ZigBee联盟制定;应用层的开发则根据用户的应用需要对其进行开发,用户提供机动、灵活的组网方式。
ZigBee技术适合于承载数据流量较小的业务,特别是无线传感器网络,因为它具有以下优点:
功耗低。由于其传输速率低,发射功率仅为1 mW,所以功耗很低;而且采用了休眠模式,因此ZigBee设备非常省电。据估算,ZigBee设备仅靠两节五号电池就可以维持长达6个月~2年左右的使用时间。
时延短。通信时延和从休眠状态激活的时延都非常短,典型的搜索设备的时延为30 ms,休眠激活的时延为15 ms,活动设备信道接入的时延为15 ms。因此,ZigBee技术适用于对时延要求苛刻的无线控制等应用。
网络容量大。一个星型结构的ZigBee网络最多可以容纳254个从设备和1个主设备,一个区域内最多可以同时存在100个独立而且互相重叠覆盖的ZigBee网络。
安全可靠。采取了碰撞避免策略,避开了发送数据的竞争和冲突;采用完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息;还提供了基于循环冗余校验的数据包完整性检查功能,支持鉴权和认证。
基于以上特点与优势,ZigBee技术在无线传感器网络中的应用将有广阔的发展空间。
2 MC13192芯片与LPC2138芯片简介
MC13192是Freescale公司推出的符合ZigBee标准的射频芯片。其工作频率是2.405~2.480 GHz,该频带划分为16个信道,每个信道占用5 MHz的带宽;采用直接序列扩频的通信技术,数据传输速率为250 kbps。MC13192具有一个优化的数字核心,有助于降低MCU处理功率,缩短执行周期。为了适应低功耗的要求,芯片除了接收、发送和空闲3种工作状态外,还有3种低功耗运行模式: ① 掉电模式,这种模式下芯片电流小于1 μA;② 睡眠模式, 这种模式下电流在3 μA左右;③ 休眠模式,这种模式下下电流约为35 μA。芯片采用可编程功率输出模式,发送功率为0~4 dBm,接收灵敏度可以达到-92 dBm,传输距离30~70 m。
LPC2138芯片是Philips公司推出的一个支持实时仿真和嵌入式跟踪的32位ARM7微控制器。它具有丰富的片上存储功能,带有512 KB嵌入的高速Flash存储器和32 KB片内静态RAM;还带有多个串行接口,2个8路10位A/D转换器,1个D/A转换器和47个GPIO,以及多达9个边沿或电平触发的外部中断。LPC2138有两种低功耗模式: 空闲模式和掉电模式。较小的封装和极低的功耗使其可以理想地与MC13192结合,作为基于ZigBee技术的无线传感器网络节点。
3 无线传感器网络节点设计
传感器节点一般由数据采集单元、数据处理单元、数据传输单元和电源管理单元等功能模块组成,如图2所示。数据采集单元负责采集监视区域的信息并完成数据转换,采集的信息包含温度、湿度、光强度、加速度和大气压力等;数据处理单元负责控制整个节点的处理操作、路由协议、同步定位、功耗管理以及任务管理等;数据传输单元负责与其他节点进行无线通信,交换控制消息和收发采集数据;电源管理单元选通所用到的传感器。
图2 传感器节点组成框图
3.1 节点硬件设计
图3是节点的硬件原理图。电路外围元器件较少,主要包括6个模块: LPC2138 MCU模块、MC13192无线射频模块、电源模块、UART串口模块、JTAG接口模块和数据采集I/O模块。LPC2138和MC13192通过SPI总线连接。LPC2138的SPI接口工作在主机模式,是数据传输的控制方;MC13192设为从机模式。LPC2138通过4线SPI接口对MC13192的内部寄存器进行读写操作,从而完成对MC13192的控制以及数据通信。由传感器输出的模拟信号经过10位A/D变换后输入到LPC2138中,LPC2138将传感器采集的信号经过处理后通过MC13192发射出去。对传感器的控制信号可以从MC13192的天线接收进来,通过SPI传送到LPC2138上,经过其判断处理后通过GPIO口传送到传感器上,以实现对传感器的控制。MC13192芯片指定的晶振频率为16 MHz,考虑到晶振对通信质量的影响,在制作PCB板时应将晶振的位置尽可能地靠近MC13192芯片的XTAL1和XTAL2引脚。电源电路采用两种方式: 一种是3.6 V干电池;另一种是钮扣电池,可以根据需要选用。
图3 节点硬件原理图
3.2 节点软件设计
按照硬件电路设计思路,软件采用模块化结构程序设计方式。软件模块包括: 数据发送模块、数据接收模块、UART串口模块、LPC2138与MC13192连接的SPI模块、中断服务模块。系统软件编程的基本思路: 先对SPI端口、MC13192控制端口和LPC2138控制端口进行初始化;使能SPI端口、UART端口和A/D;初始化MC13192芯片;开启接收机后,即可运行任务程序,实现接收或发送数据。这里简要给出LPC2138与MC13192之间的SPI通信程序。发送和接收程序流程如图4和图5所示。
void SPIDrvWrite (uint8 u8Addr, uint16 u16Content) {
/*SPI写函数*/
uint8 u8TempValue;
MC13192DisableInterrupts();
/*禁止MC13192产生中断请求*/
IO1CLR = MC13192_CE;/*使能MC13192 SPI */
SSPDR = (uint8)(u8Addr & 0x3f);
/*写入要访问的6位地址,设置写*/
while((SSPSR & 0x01) == 0);/*等待发送栈为空*/
while((SSPSR & 0x10) != 0);/*等待状态寄存器空闲*/
u8TempValue = SSPDR;/*清空地址中的内容*/
SSPDR = (uint8)(u16Content >> 8);/*写高字节*/
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u8TempValue = SSPDR;
SSPDR = (uint8)(u16Content & 0x00FF);/*写低字节*/
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u8TempValue = SSPDR;
IO1SET = MC13192_CE;/*禁止MC13192 SPI*/
MC13192RestoreInterrupts(); /*恢复MC13192中断状态*/
}
uint16 SPIDrvRead (uint8 u8Addr) {/*SPI读函数*/
uint8 u8TempValue;
uint16 u16ret;
SPIClearRecieveStatReg(); /*清状态寄存器*/
SPIClearRecieveDataReg();/*清接收数据寄存器*/
MC13192DisableInterrupts(); /*禁止MC13192产生中断请求*/
IO1CLR = MC13192_CE;/*使能MC13192 SPI */
SSPDR = (uint8)((u8Addr & 0x3f) | 0x80);
/*写入要访问的6位地址,设置读*/
while((SSPSR & 0x01) == 0); /*等待发送栈为空*/
while((SSPSR & 0x10) != 0);/*等待状态控制器空闲*/
u8TempValue = SSPDR;
SSPDR = (uint8)0xFF;
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u8TempValue = SSPDR;/*存放高字节数据*/
SSPDR = (uint8)0xFF;
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u16ret = SSPDR;/*存放低字节数据*/
u16ret=u16ret+u8TempValue*256;/*存放一个完整字*/
IO1SET = MC13192_CE;/*禁止MC13192 SPI*/
MC13192RestoreInterrupts();/*恢复MC13192中断状态*/
return u16ret;
}
图4 发送程序流程 图5 接收程序流程
3.3 实验结果
图6为硬件节点实物图。该电路板经过仿真调试应用良好,可以实现多个节点间的通信;在实验电路板上设置了一个LED,可以通过灯的闪烁来指示信息接收的质量
图6 硬件节点实物图
以及接收的成败;能够利用串行接口与计算机进行通信,并且可以通过JTAG接口电路进行程序的固化。初步的实验表明: 通信距离基本达到预期目标,在空旷地带以最大功率传输,可以以较小误码率传输60多米。采用1节电压为3.6 V、容量为2 100 mAh的干电池供电时,节点连续工作的时间为3~4天。如果使得该节点始终工作在超低功耗的工作状态,则其工作时间可以超过1年,能够满足特定应用场合对电池寿命的要求。
结语
经实验证明,以MC13192和LPC2138为核心构造的无线传感器网络节点,在功耗、传输距离以及无线传输速率等性能上都能满足应用要求。在此方案基础之上,通过移植ZigBee协议栈,可以构建ZigBee网络的网络层、应用层及安全层,再配以满足特定要求的传感器便可实现具体的应用网络。
参考文献
[1] Freescale.MC13192 Data sheet,2005.
[2] Freescale.MC13192RM Rev1.4,2005.
[3] IEEE Std. 802.15.4,2003.
[4] ZigBee Alliance. ZigBee Specification,V1.0,2003.
[5] 周立功,张华.深入浅出ARM7[M].北京:北京航空航天大学出版社,2005.
[6] 于海斌,曾鹏,梁晔.智能无线传感器网络系统[M].北京:科学出版社,2004.
[7] 陈玉兰,聂军,李红妹.基于CC2420的无线传感器网络的硬件节点设计[J].电脑知识与技术.2006(17):114.
[8] Lu G,Krishnamachari B,Raghavendra C.Performance Evaluation of the IEEE 802.15.4 MAC for Low