APP下载

基于ZigBee无线传感网络技术节点设计与实现

2014-03-07隋浩徐国凯孙炎辉

物联网技术 2014年2期
关键词:无线传感网络节点

隋浩+徐国凯+孙炎辉

摘 要:利用各类传感器采集外界信息,产生模拟电压信号,通过模数转换进而得到数字信号,摒弃传统的有线串口发数模式,用CC2430芯片作为节点的核心芯片,负责数据处理和无线射频工作。根据以上要求给出了系统硬件结构及软件设计方案,并综合考虑到了节点的功耗问题。

关键词:CC2430;无线传感网络;节点;ZigBee协议

中图分类号:TP393 文献标志码:A 文章编号:2095-1302(2014)02-0047-04

0 引 言

保护民族物质文化和非物质文化遗产的任务一直都为国家所重视,少数民族博物馆中的文物是国家最为宝贵的民族物质文化遗产,利用发展前景最为广阔的无线传感技术,将数字化保护概念落实到实际的少数民族遗产保护当中,搭建无线传感网络以完成数据的采集和传递,将博物馆中的实时环境信息转换为易读的数字信号传递给管理员。

受到“十一五”国家科技支撑计划的重点课题《民族特需品数字化关键技术研究与示范应用[课题编号2009BAH41B05]》项目的支持,研发一套适合民族家具博物馆的物联网无线传感网络产品。本文对整个无线传感网络体系中的网络节点硬件、软件提出具体设计思路和实现方法。

1 ZigBee网络路径

1.1 路由基本算法

ZigBee[1]网络区别于其他无线传感网络之处就在于其预先进行地址分配,各节点由分布式算法根据一系列网络参数来确定,节点只有通过协调器或者路由器节点才能加入网络,加入网络后随即获得一个唯一的地址。我们这里设Cm和Rm分别为节点所能分配的最大节点数和路由节点数,Lm为网络的最大深度,则网络深度为d的路由节点所能分配的地址块大小如式(1)所示:

(1)

深度为d的父亲节点分配的第k个路由节点和第n个终端节点的地址分别为:

(2)

(3)

在式(2)、(3)中,Aparent代表负责分配网络地址的父节点地址,ZigBee网络路由算法应用的就是这种分布式网络地址分配机制。

1.2 基于AODV路由算法

AODV即无线自组网按需平面距离向量路由协议,此算法通过检查自己的路由表,如存在到达目的节点的表项则直接跳取到下一地址,否则节点以洪泛的方式向网络广播路由请求数据包,当该数据包到达目的节点时,目的节点以单播方式向路由发起节点回复路由数据包[2]。当路由发起节点收到路由回复包后,一条新加入到路由表的通信链路便产生了。

该算法有很多优点能够大大提高网络通信效率,有效地避免传统网络路由算法中出现的环路问题。基于需求的距离向量链路中由于发送数据之前需要对现有的通信路径进行遍历过程,因此在网络较大的情况时也会导致网络数据传输延时增大,进而造成网络效率不高的问题。

1.3 基于树型结构路由算法

在网络中,深度为d,源节点S若要想传输到任意节点D时,就可以简单地根据的公式S

(4)

依据式(4)来进行跳到下一个地址的行为,否则将数据输出给父亲节点。该算法的优点是空间复杂度以及时间复杂度比较简单,适用在网络节点数目不是很多的情况,否则会导致分组传输时延高的缺点,从而造成网络效率低下的问题。

Cluster-Tree算法是在树型路由算法技术基础上,由协调器作为中心点生成簇树状网络拓扑结构,通过判断目的节点是否是具有转发功能设备的下属节点,以决定是否进行数据包的转发,最终达到分层遍历查找目的节点的结果[3]。这种算法可以大大减少信息冗余度和源节点的发送功率,对于数据高内聚非常有利,也在一定程度上弥补了树型结构的缺点。

2 ZigBee网络节点硬件设计

2.1 节点总体硬件设计

节点按功能共可分为CC2430模块、电源模块和天线模块三大模块。其总体硬件设计如图1所示。

图1 节点总体硬件图

2.2 CC2430模块

CC2430具有增强性能的8051MCU、8 KB RAM等,其增强的8051MCU核的性能是工业标准8051核性能的8倍[4]。CC2430/CC2431还具备直接存储器定址(DMA)功能,它能够被用于减轻8051微控制器内核对数据搬移,因此提高了芯片整体的性能、可编程看门狗定时器、AES-128 安全协处理器、多达8输入的8~14位ADC、USART、睡眠模式定时、上电复位、掉电检测电路(Brown Out Detection)等,CC2430有两个晶振,分别是32 MHz晶振和32.768 kHz晶振。

2.3 天线模块

CC2430发送数据时,信号从差分射频端口RF_P、RF_N经巴伦电路变为单端信号,由 RXTX_SWITCH信号控制2个逻辑开关,选通功率放大电路(PA),放大后的信号从天线发射出去。接收信号时,在RXTX_SWITCH信号控制下,从天线接收的信号经低噪声放大电路(LNA)放大,巴伦电路转换,由RF_P、RF_N端口接收。天线模块电路图如图2所示。

2.4 电源模块

电源模块主要是由TPS79533低压稳压器输出3.3 V电压,其输入电压范围是2.7~5.5 V,并具有较高的电源抑制比、超低噪声、较好的电压线性和负载瞬态效应以及较小的电压漂移。可以将5 V的电源通过DC-DC变换器得到3.3 V的工作电压,电源电路如图3所示。

图2 天线模块电路

图3 电源模块电路

3 ZigBee网络节点软件设计

3.1 ZigBee协议栈

ZigBee无线网络的实现,是建立在ZigBee协议栈[5,6]的基础上的,协议栈采用分层的结构,协议分层的目的是为了使各层相对独立,每一层都提供一些服务,服务由协议定义,它们向高层提供服务,并由低层提供服务。

在ZigBee协议栈中,物理层、MAC层位于最低层,且与硬件相关;网络层、安全层、应用框架层以及安全层建立在物理层和MAC层之上,并且完全与硬件无关。分层的结构脉络清晰、一目了然,给设计和调试带来极大的方便。

Z-Stack采用了操作系统的思想来构建,采用事件轮循机制[7],当各层初始化之后,系统进入低功耗模式,事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,先判断优先级,再逐次处理事件。

3.2 协调器网络的建立

在ZigBee网络中,网络协调器具有建立一个网络、维护邻居设备表、对逻辑网络地址进行分配、允许设备MAC层/应用层的连接或断开网络的功能,网络协调器在进行一些初始化之后调用aplFormNetwork()来建立网络。协调器通过扫描一个空信道来建立一个新的网络,然后选择一个随机的PANID并开始监听此信道[8]。同时协调器还有一个目前连接设备的列表,以支持其他设备加入网络。网络建立程序如下:

void main(void){

……

halInit();//硬件初始化

aplInit();//协议栈初始化

……

aplFormNetwork();//建立网络

while(apsBusy()){apsFSM();}//等待网络相应

while(1)

{apsFSM();//执行协议栈

}

……

}

3.3 节点加入网络

当一个网络建立成功以后,便要考虑路由节点和RFD节点如何加入到网络中去。节点通过调用aplJoinNetword()函数加入到协调器建立的网络当中。通过扫描信道找到协调器并进一步申请加入网络,获取协调器的地址,同时将自己的地址发送给协调器。网络加入成功以后,网络节点则进入休眠状态,知道有命令或者数据发送时才被唤醒。网络加入的程序如下:

void main(void){

halInit();//硬件初始化

aplInit();//协议栈初始化

……

do{

aplJoinNetwork();//加入网络

while(apsBusy()){apsFSM();}//等待网络格式化

}

while(aplGetStatus()=WXLPAN_STATUS_SUCCESS);

while(1){apsFSM();}//执行协议栈

……

}

3.4 数据发送与接收

在ZigBee协议栈中进行数据发送可以调用AF-DataRequest函数来实现,该函数会调用协议栈里面与硬件相关的函数最终将数据通过天线发送出去。以下是AF_DataRequest数据发送程序:

afStatus_t AF_DataRequest(afAddrType_t *dstAddr,

endPointDesc_t *srcEP,,

uint16 cID,

uint16 len,

uint8 *buf,

uint8 *transID,

uint8 options,

uint8 radius)

上面的程序中:afAddrType_t *dstAddr为包含了目的节点的网络地址以及发送数据的格式;endPointDesc_t *srcEP为使用网络地址来区分不同的节点,用端口号来区分统一节点的不同端口;uint16 cID为描述命令号,不同的命令号代表不同的控制命令,用来表示不同的控制操作;uint16 len为表示发送数据的长度;uint8 *buf为指向发送数据缓冲区的指针;uint8 *transID为指向发送序号的指针,每次发送数据后就会自动加1,配合接收端计算丢包率;uint8 options为默认取AF_DISCV_ROUTE;uint8 radius为默认取AF_DEFAULT_RADIUS。

在发送数据之前,接收的设备必须处于工作状态,否则将会出现“丢包”。上层使用NLME-SYNC.request原语初始化设备,打开其接收机,该原语将引起网络层使用MLME-POLL.request原语对其父设备进行轮询[9]。ZigBee协调器或路由器的网络层必须在最大程度上保证任何时间接收机总是处于接收状态。

当协调器接收到节点发送来的数据后,操作系统会将该数据封装成一个消息,然后放入消息队列中,每个消息都有自己的消息ID,表示接收到新数据的消息的ID是AF_INCOMING_MSG_CMD[10],其宏定义为:

#define AF_INCOMING_MSG_CMD 0x1A

在协调器中相应代码如下:

MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(GenericApp_TaskID);

while(MSGpkt)

{

switch(MSGpkt->hdr.event)

{

case AF_INCOMING_MSG_CMD;

GenericApp_MessageMSGCB(MSGpkt);

break;

……

}

}

首先使用osal_msg_receive函数从消息队列中接收一个消息,然后使用switch-case语句udixiaoxileixing进行判断(判断消息ID),如果消息ID是AF_INCOMING_MSG_CMD则进行相应的数据处理,进而完成数据的接收。

4 测试结果

测试采用的软件是Packet Sniffer,Packet Sniffer 是一款专门的协议分析软件,可以对各层协议上的信息包进行分析和解码;显示出错的包以及接入错误;指示触发包;在接收和注册过程中可连续显示包,可以利用Packet Sniffer分析ZigBee建立网络,加入网络,发送数据,接收数据的过程[11]。IEEE8022.15.4/ZigBee协议下协调器的组网过程如图4所示。

图4 协调器组网

从图4 中显示的数据包数据中,第2行到第7行是建立一个网络的过程,在这里可以看出在网络层管理实体一旦选择了一个PAN标识符,就会立刻选择一个0x0000的16位网络地址,并且设置MAC层的macShortAddress PIB 属性,使其等于所选择的网络地址。

第8行的源地址是路由器的物理地址0x1716151413120 030,它的PANID没有确定为0xFFFFF,这时的路由器还没有加入网络,所以还没有网络地址,目的地址为协调器的网络地址0x0000,它的PANID为0x0022;它的命令是联合方式加入请求。该行表示的意思是向协调器发送联合方式加入请求,发送完成后将得到一个应答。

节点在等待应答并回应后,就开始加入建立好的无线网络,其加入网络的过程如图5所示。

图5 节点加入网络

从图中可见,已成功组网的协调器在收到应答以后,节点开始加入网络。与此同时,协调器开始为路由器分配网络地址,路由器分配到的网络地址(Source Address)为0x0001。这样就完成了节点加入网络的过程,并分配了各自的网络地址,从而也完成了无线网络的组建和节点加入网络的过程。

5 结 语

本系统采用ZigBee技术设计无线网络节点,其设计思想简单,成本较低并且有着很好的扩展性,可以适应不同环境对系统的要求,与此同时,通过通用串口搭载不同的传感器又可以轻而易举地实现对各种信息的采集和传输工作,在短距离无线传感网络的应用上有着明显的优势,相信日后的发展前景会更好,给人们日常生活工作带来更大的便利。

参 考 文 献

[1] 冷亮,刘丹.基于ZigBee的无线传感网络[J].中国科技财富,2008(7): 115,118.

[2] 杜焕军,张维勇,刘国田.ZigBee网络的路由协议研究[J].合肥工业大学学报:自然科学版,2008,31(10):1618-1621.

[3] 李刚,陈俊杰,葛文涛.一种改进的ZigBee网络Cluster-Tree路由算法[J].测控技术,2009,28(9):52-55.

[4] REESE R. Implementation of microstrip balun for CC2420 and CC243x [M]. USA: Texas Instruments, 2006.

[5] 张任,王坚峰,严海.基于ZigBee的无线传感器网络节点设计[J].机电工程,2008,25(8):18-20.

[6] 孟海滨,张红雨.嵌入式系统电源芯片选型与应用[J].单片机与嵌入式系统应用,2010(12):7-10.

[7] 曹振国.基于ZigBee的集装箱站组网设计与实现[J].自动化与仪器仪表,2010(4):50-52.

[8] 赵晨.基于ZigBee技术的无线传感器网络的研究与实现[D].青岛:中国海洋大学,2007.

[9] 屈明佑,雷航,郭文生.基于ZigBee的现场数据采集系统设计与实现[J].电讯技术,2008(4):36-40.

[10]张帅华,杨远,梁玉堂,等.基于AT91SAM9260的ZigBee工业以太网网关设计[J].微计算机信息,2011,27(8):113-114.

[11]闫哲,杜涛,左海利.智能家居控制系统的设计及实现[J].自动化技术及应用,2010,29(2):93-96.

Design and implementation of node in the WSN based on ZigBee

SUI Hao, XU Guo-kai, SUN Yan-hui

(College of Electromechanical and Information Engineering, Dalian Nationalities University, Dalian 116600, China)

Abstract: The information is collected by sensors, to produce analog voltage signals. The digital signal is obtained through A/D conversion. CC2430 chip is used as core chip instead of traditional sending model with wired style to take charge of data processing and wireless radio frequency. According to the requirement, the solution of the hardware structure and software design is presented, and the power consumption is also taken into consideration.

Keywords: CC2430; wireless sensor network; node; ZigBee protocol

4 测试结果

测试采用的软件是Packet Sniffer,Packet Sniffer 是一款专门的协议分析软件,可以对各层协议上的信息包进行分析和解码;显示出错的包以及接入错误;指示触发包;在接收和注册过程中可连续显示包,可以利用Packet Sniffer分析ZigBee建立网络,加入网络,发送数据,接收数据的过程[11]。IEEE8022.15.4/ZigBee协议下协调器的组网过程如图4所示。

图4 协调器组网

从图4 中显示的数据包数据中,第2行到第7行是建立一个网络的过程,在这里可以看出在网络层管理实体一旦选择了一个PAN标识符,就会立刻选择一个0x0000的16位网络地址,并且设置MAC层的macShortAddress PIB 属性,使其等于所选择的网络地址。

第8行的源地址是路由器的物理地址0x1716151413120 030,它的PANID没有确定为0xFFFFF,这时的路由器还没有加入网络,所以还没有网络地址,目的地址为协调器的网络地址0x0000,它的PANID为0x0022;它的命令是联合方式加入请求。该行表示的意思是向协调器发送联合方式加入请求,发送完成后将得到一个应答。

节点在等待应答并回应后,就开始加入建立好的无线网络,其加入网络的过程如图5所示。

图5 节点加入网络

从图中可见,已成功组网的协调器在收到应答以后,节点开始加入网络。与此同时,协调器开始为路由器分配网络地址,路由器分配到的网络地址(Source Address)为0x0001。这样就完成了节点加入网络的过程,并分配了各自的网络地址,从而也完成了无线网络的组建和节点加入网络的过程。

5 结 语

本系统采用ZigBee技术设计无线网络节点,其设计思想简单,成本较低并且有着很好的扩展性,可以适应不同环境对系统的要求,与此同时,通过通用串口搭载不同的传感器又可以轻而易举地实现对各种信息的采集和传输工作,在短距离无线传感网络的应用上有着明显的优势,相信日后的发展前景会更好,给人们日常生活工作带来更大的便利。

参 考 文 献

[1] 冷亮,刘丹.基于ZigBee的无线传感网络[J].中国科技财富,2008(7): 115,118.

[2] 杜焕军,张维勇,刘国田.ZigBee网络的路由协议研究[J].合肥工业大学学报:自然科学版,2008,31(10):1618-1621.

[3] 李刚,陈俊杰,葛文涛.一种改进的ZigBee网络Cluster-Tree路由算法[J].测控技术,2009,28(9):52-55.

[4] REESE R. Implementation of microstrip balun for CC2420 and CC243x [M]. USA: Texas Instruments, 2006.

[5] 张任,王坚峰,严海.基于ZigBee的无线传感器网络节点设计[J].机电工程,2008,25(8):18-20.

[6] 孟海滨,张红雨.嵌入式系统电源芯片选型与应用[J].单片机与嵌入式系统应用,2010(12):7-10.

[7] 曹振国.基于ZigBee的集装箱站组网设计与实现[J].自动化与仪器仪表,2010(4):50-52.

[8] 赵晨.基于ZigBee技术的无线传感器网络的研究与实现[D].青岛:中国海洋大学,2007.

[9] 屈明佑,雷航,郭文生.基于ZigBee的现场数据采集系统设计与实现[J].电讯技术,2008(4):36-40.

[10]张帅华,杨远,梁玉堂,等.基于AT91SAM9260的ZigBee工业以太网网关设计[J].微计算机信息,2011,27(8):113-114.

[11]闫哲,杜涛,左海利.智能家居控制系统的设计及实现[J].自动化技术及应用,2010,29(2):93-96.

Design and implementation of node in the WSN based on ZigBee

SUI Hao, XU Guo-kai, SUN Yan-hui

(College of Electromechanical and Information Engineering, Dalian Nationalities University, Dalian 116600, China)

Abstract: The information is collected by sensors, to produce analog voltage signals. The digital signal is obtained through A/D conversion. CC2430 chip is used as core chip instead of traditional sending model with wired style to take charge of data processing and wireless radio frequency. According to the requirement, the solution of the hardware structure and software design is presented, and the power consumption is also taken into consideration.

Keywords: CC2430; wireless sensor network; node; ZigBee protocol

4 测试结果

测试采用的软件是Packet Sniffer,Packet Sniffer 是一款专门的协议分析软件,可以对各层协议上的信息包进行分析和解码;显示出错的包以及接入错误;指示触发包;在接收和注册过程中可连续显示包,可以利用Packet Sniffer分析ZigBee建立网络,加入网络,发送数据,接收数据的过程[11]。IEEE8022.15.4/ZigBee协议下协调器的组网过程如图4所示。

图4 协调器组网

从图4 中显示的数据包数据中,第2行到第7行是建立一个网络的过程,在这里可以看出在网络层管理实体一旦选择了一个PAN标识符,就会立刻选择一个0x0000的16位网络地址,并且设置MAC层的macShortAddress PIB 属性,使其等于所选择的网络地址。

第8行的源地址是路由器的物理地址0x1716151413120 030,它的PANID没有确定为0xFFFFF,这时的路由器还没有加入网络,所以还没有网络地址,目的地址为协调器的网络地址0x0000,它的PANID为0x0022;它的命令是联合方式加入请求。该行表示的意思是向协调器发送联合方式加入请求,发送完成后将得到一个应答。

节点在等待应答并回应后,就开始加入建立好的无线网络,其加入网络的过程如图5所示。

图5 节点加入网络

从图中可见,已成功组网的协调器在收到应答以后,节点开始加入网络。与此同时,协调器开始为路由器分配网络地址,路由器分配到的网络地址(Source Address)为0x0001。这样就完成了节点加入网络的过程,并分配了各自的网络地址,从而也完成了无线网络的组建和节点加入网络的过程。

5 结 语

本系统采用ZigBee技术设计无线网络节点,其设计思想简单,成本较低并且有着很好的扩展性,可以适应不同环境对系统的要求,与此同时,通过通用串口搭载不同的传感器又可以轻而易举地实现对各种信息的采集和传输工作,在短距离无线传感网络的应用上有着明显的优势,相信日后的发展前景会更好,给人们日常生活工作带来更大的便利。

参 考 文 献

[1] 冷亮,刘丹.基于ZigBee的无线传感网络[J].中国科技财富,2008(7): 115,118.

[2] 杜焕军,张维勇,刘国田.ZigBee网络的路由协议研究[J].合肥工业大学学报:自然科学版,2008,31(10):1618-1621.

[3] 李刚,陈俊杰,葛文涛.一种改进的ZigBee网络Cluster-Tree路由算法[J].测控技术,2009,28(9):52-55.

[4] REESE R. Implementation of microstrip balun for CC2420 and CC243x [M]. USA: Texas Instruments, 2006.

[5] 张任,王坚峰,严海.基于ZigBee的无线传感器网络节点设计[J].机电工程,2008,25(8):18-20.

[6] 孟海滨,张红雨.嵌入式系统电源芯片选型与应用[J].单片机与嵌入式系统应用,2010(12):7-10.

[7] 曹振国.基于ZigBee的集装箱站组网设计与实现[J].自动化与仪器仪表,2010(4):50-52.

[8] 赵晨.基于ZigBee技术的无线传感器网络的研究与实现[D].青岛:中国海洋大学,2007.

[9] 屈明佑,雷航,郭文生.基于ZigBee的现场数据采集系统设计与实现[J].电讯技术,2008(4):36-40.

[10]张帅华,杨远,梁玉堂,等.基于AT91SAM9260的ZigBee工业以太网网关设计[J].微计算机信息,2011,27(8):113-114.

[11]闫哲,杜涛,左海利.智能家居控制系统的设计及实现[J].自动化技术及应用,2010,29(2):93-96.

Design and implementation of node in the WSN based on ZigBee

SUI Hao, XU Guo-kai, SUN Yan-hui

(College of Electromechanical and Information Engineering, Dalian Nationalities University, Dalian 116600, China)

Abstract: The information is collected by sensors, to produce analog voltage signals. The digital signal is obtained through A/D conversion. CC2430 chip is used as core chip instead of traditional sending model with wired style to take charge of data processing and wireless radio frequency. According to the requirement, the solution of the hardware structure and software design is presented, and the power consumption is also taken into consideration.

Keywords: CC2430; wireless sensor network; node; ZigBee protocol

猜你喜欢

无线传感网络节点
CM节点控制在船舶上的应用
Analysis of the characteristics of electronic equipment usage distance for common users
基于AutoCAD的门窗节点图快速构建
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
改进的无线传感网络节点定位系统的设计与研究
试论无线传感网络动态休眠通信协议
抓住人才培养的关键节点