三峡电力职业学院 张 强
农田中数据采集量很大,利用网络可以比较方便地实现大量数据的远距离传输;但如果在农田中铺设有线网络,一方面不便于农田的耕作,另一方面成本较高。近几年发展起来的无线传感网络由于应用成本低、网络结构灵活、数据传输距离远,已经在很多领域得到了应用。并且,传感器网络所要求的无线技术不同于现在已有的一些无线网络技术,这种网络并不需要太高的传输速率,而是在成本和功耗方面有比较苛刻的要求。为了满足类似于温度、湿度传感器这样小型、低成本设备无线联网的要求,ZigBee技术正是为适应这种需求而产生的。
CC2430芯片为Chipcon公司生产的2.4GHz射频系统单芯片,是一颗真正的系统芯片(SoC)CMOS解决方案,这种解决方案能够提高性能并满足以ZigBee为基础的2.4GHzISM波段应用对低成本、低功耗的要求。
CC2430 SoC家族包括3个产品:CC2430-F32、CC2430-F64和CC2430-F128。它们的区别在于内置闪存的容量不同,分别为32KB、64KB和128KB,并具有8K的RAM和其他强大的支持特性。CC2430基于Chipcon公司的SmartRF技术平台,采用0.18µmCMOS工艺生产,尺寸是7mm×7mm,封装为48PIN;在接收和发射模式下,电流损耗分别小于27mA或25mA。CC2430适用于那些要求电池寿命非常长的应用,CC2430具有休眠模式和可短时间转换到主动模式的能力,使之成为解决问题的理想方案。这个配置可以被应用于所有ZigBeeTM的无线网络节点,包括协调器、路由器、设备终端。
CC2430芯片的主要特点如下:高性能和低功耗的8051微控制器内核;集成符合IEEE802.15.4标准的2.4GHz的RF无线电收发机;优良的无线接收灵敏度和强大的抗干扰性;在休眠模式时仅0.9μA的流耗,外部的中断或RTC能唤醒系统;在待机模式时少于0.6μA的流耗,外部的中断能唤醒系统;硬件支持CSMA/CA功能;较宽的电压范围(2.O~3.6V);数字化的RSSI/LQI支持和强大的DMA功能;具有电池监测和温度感测功能;集成了14位模数转换的ADC;集成AES安全协处理器;带有2个强大的支持几组协议的USART,以及1个符合IEEE 802.15.4规范的MAC计时器,1个常规的16位计时器和2个8位计时器;强大和灵活的开发工具。
无线传感器网络的节点通常由传感器模块、处理器模块、无线通信模块和电源模块构成。处理器模块和无线通信模块采用CC2430芯片,大大简化了射频电路的设计。传感器模块采用数字温度传感器DS18B20。电源模块采用2节干电池。节点的硬件原理框图如图1。
图1 节点硬件框图Fig.1 Hardware diagram of the node
DS18B20是“单总线”数字温度传感器,其测量温度范围为-55℃~125℃,在-10℃~85℃范围内,精度为0.5℃,可编程设定9~12位的分辨率,默认值为12位,转换12位温度信号所需时间为750ms(最大)。检测温度由2字节组成,高字节MSB的高5位S代表符号位,如果温度为负则S为1,否则为0。低字节LSB的低4位是小数部分,中间7位是整数部分,如图2所示。
图2 DS18B20测温字节Fig.2 Temperature measurement bytes of DS18B20
DS18B20与CC2430的通信电路如图3所示,VDD引脚直接连接外部电源,CC2430的P0.0脚与18B20的数字输入/输出脚DQ相连,DS18B20在空闲时,其DQ脚由上拉电阻置为高电平。
图3 18B20与CC2430连接电路图Fig.3 The interface circuit between 18B20 and CC2430
软件部分需要解决的问题包括:温度信号采集、ZigBee协议栈(Z-Stack)、ZigBee通信等。
温度信号的采集可由CC2430芯片内部的MCU完成,温度传感器DS18B20采用单总线方式和处理器通信,根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
ZigBee协议栈的体系结构如图4所示。介质接入控制子层(Medium Access Control Layer,MAC)和物理层(Physical Layer,PHY)是由IEEE 802.15.4标准中定义的两层。网络层(Network Layer,NWK)是由ZigBee联盟所定义,主要完成从应用层接受数据并向其发送数据;应用层(Application Layer APL)是ZigBee协议栈的最高层。应用层的框架包括了应用支持子层(APS)、ZigBee设备对象(ZDO)和由制造商制定的应用对象。应用层主要负责把不同的应用映射到ZigBee网络上。
图4 ZigBee体系结构Fig.4 ZigBee system structure diagram
ZigBee协议栈运行在一个OSAL(操作系统抽象层)操作系统上。该操作系统基于任务调度机制,通过对任务的事件触发来实现任务调度。每个任务都包含若干个事件,每个事件都对应一个事件号。当一个事件产生时,对应任务的事件就被设置为相应的事件号,这样,事件调度就会调用相应的任务处理程序。OSAL中的任务可以通过任务API将其添加到系统中,这样就可以实现多任务机制。OSAL任务调度流程如图5所示。NextActiveTask( )是一个任务事件查询函数,返回任务的事件状态ActiveTask。软件设计时,可通过ActiveTask的值来决定是否需执行对应的任务函数ActiveTask( )。
图5 OSAL任务调度机制Fig.5 OSAL task scheduling mechanism
本小节以两个节点之间的通信为例,介绍了点对点通信的过程和实现方法。完成一次数据传送的程序流程图如图6。系统初始化主要是将系统的工作频率设为32MHz的晶振频率,这样RF才能正常工作。RF初始化时,先设置通信频率,再通过设置RFPWR.RREG_RADIO_PD位为1给RF供电。RF初始化的过程还包括执行下面的代码来开启Rx,清空Rx、Tx的FiFo缓冲区以及校准Radio。
图6 数据发送程序流程图Fig.6 The flow chart of Data distribution procedures
DMA的初始化阶段要为Tx分配1个空闲的DMA通道。首先要为通道0和通道1~4分别设置好通道描述数据结构的存放地址,并将首地址分别写入DMA0CFGH:DMA0CFGL和DMA1CFGH:DMA1CFGL。再为这个分配好的DMA通道设置其描述数据结构。
当设置为Tx准备的DMA通道时,需将数据的源地址SRCADDRH:SRCADDRL设为所要发送数据的起始地址,目标地址DESTADDRH:DESTADDRL设为寄存器RFD的地址0xDFD9。然后,在LENH:LENL中设置所要发送数据的长度,并将VLEN设为0。将WORDSIZE位设为0,表示DMA数据按字节进行传输(设为1表示按字传输)。DMA的数据传送模式按照一次触发传输的数据量可分成四种,由TMODE设置选择。本例中采用Block模式,即一次DMA触发可进行一个完整数据块的传输。CC2430定义的DMA触发信号有31种之多,由TRIG位设置。将TRIG设置为0,表示采用无触发模式,这样DMA在每次接收到DMAREQ信号后才启动一次数据传输。SRCINC和DESTINC分别用于设置数据源地址和目标地址的变化方式,可设为不变、增1、增2或减1。由于采用按字节的Block模式向Radio发送数据,因此数据源地址选择增1变化,而数据目标地址则一直为寄存器RFD的地址0xDFD9,故设为不变。IRQMASK位用于设置是否在DMA数据传输完后发中断信号。本例中设为0,即禁止DMA中断。M8是按字节传输时的数据宽度,设为0表示8位传输,为1时表示只传输字节的低7位。本例中设为0。PRIORITY用于优先级设置,本例中设为2,即中等优先级。
DMA描述设置好后,通过设置寄存器DMAARM和RMREQ的位来准备相应的DMA通道以及启动这个通道上数据块的传输。在启动DMA数据传输之前,将当前数据帧的长度、目标节点地址、源节点地址、标志字节通过直接写寄存器RFD的方式写入TXFIFO。这样在启动DMA传输后,完整的数据帧将被传输至TXFIFO。通过给CSP发送指令ISTXONCCA启动TX传输。这就完成了一帧数据的发送。
数据接收的过程同样需要设置系统工作频率为32MHz,且应确保Rx工作在Tx相同的频道上,并设置DMA通道。其中DMA的数据源为寄存器RFD,并将DMA触发信号设为RADIO,即Radio接收到数据时触发DMA。数据接收的程序流程如图7所示。
图7 数据接收程序流程图Fig.7 The flow chart of Data reception
通过利用CC2430芯片对测温系统的设计,我体会到ZigBee无线温度传感网络的优越性及其广阔的应用前景,CC2430芯片是真正意义上的SOC芯片,使得我们开发ZigBee无线传感网络会更加方便,产品开发周期会大大缩短。
[1] 李文仲,段朝玉.ZigBee无线网络技术入门与实战[M].北京:北京航空航天大学出版社,2007.
[2] 李文仲,段朝玉.ZigBee2006无线网络与无线定位实战[M].北京:北京航空航天大学出版社,2007.
[3] 马永强,李静强,冯立营.基于ZigBee技术的射频芯片CC2430[J].单片机与嵌入式系统,2006(3):45-47.
[4] 王玮,樊则宾.基于CC2430的无线温度检测终端的设计[J].电子工程师,2007(8):78-79.
[5] 夏恒星,马维华.基于CC2430的无线传感器网络节点设计[J].集成电路应用,2007(5):47-48.