基于Zstack的点对点通信研究
2014-09-07刘顺勇
刘顺勇,温 怀,赵 丽
(重庆邮电大学 自动化学院,重庆 400065)
Zigbee技术是一种无线通信技术。Zigbee采用IEEE802.15.4标准,利用2.4GHz波段进行通信,具有低功耗、低成本、网络容量大等特点。ZigBee的目标市场主要有PC外设(鼠标、键盘、游戏操控杆)、消费类电子设备(TV、VCR、CD、VCD、DVD等设备上的遥控装置)、家庭内智能控制(照明、煤气计量控制及报警等)、玩具(电子宠物)、医护(监视器和传感器)、工控(监视器、传感器和自动控制设备)等非常广阔的领域。本文通过对Zigbee协议的解析,介绍基于zigbee协议栈(Zstack)的点对点通信,并通过硬件和软件设计来实现Zstack的点对点通信。
1 相关概念
ZigBee协议栈(Zstack)结构如图1所示,包括高层应用规范、应用支持子层、网络层、媒体接入层和物理层。
图1 zigbee协议栈
Zigbee网络中的设备按功能划分为三类逻辑模型:协调器(Coordinator),路由器(Router),终端设备(End Device)。这三种设备类型可以在编译器IAR EW中进行相应选择,程序下载到相应的设备中即可实现相应的设备类型[1]。
1.1 协调器(Coordinator)
协调器主要功能是启动和配置IEEE802.15.4/ZigBee网络。一个ZigBee网络只能有一个协调器。协调器的角色主要涉及网络的启动和配置,一旦这些都完成后,协调器的工作就像一个路由器,由于ZigBee网络本身的分布特性,因此接下来整个网络的操作就不再依赖协调器是否存在。
1.2 路由器(Router)
路由器是一种支持关联的设备,将自己关联至协调器或者已在网络的其他路由器,同时允许另外的路由器和终端设备加入网络。主要功能是加入已存在的ZigBee网络,为ZigBee网络通信提供中继和路由。通常,路由器希望是一直处于正常的工作状态,因此它必须使用主电源供电,但是当使用树群这种网络模式时,允许路由器间隔一定的周期操作一次,这样就可以使用电池给其供电。
1.3 终端设备(End Device)
终端设备执行具体的任务,如信息采集等,并使用ZigBee网络实现信息交互。终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以是一个电池供电设备。
ZigBee网络中传输的数据可分为三类:周期性数据,例如传感器网中传输的数据,这一类数据的传输速率根据不同的应用而确定;间歇性数据,例如电灯开关传输的数据,这一类数据的传输速率根据应用或者外部激励而确定;反复性的、反应时间低的数据,例如无线鼠标传输的数据,这一类数据的传输速率是根据时隙分配而确定的。为了降低ZigBee节点的平均功耗,ZigBee节点有激活和睡眠两种状态,只有当两个节点都处于激活状态才能完成数据的传输。在有信标的网络中,ZigBee协调点通过定期地广播信标为网络中的节点提供同步;在无信标的网络中,终端节点定期睡眠,定期醒来,除终端节点以外的节点要保证始终处于激活状态,终端节点醒来后会主动询问它的协调点是否有数据要发送给它。在ZigBee网络中,协调点负责缓存要发送给正在睡眠的节点的数据包。
如图2所示,点对点的通信实质上就是协调器和一个终端节点之间的通信。
图2 点对点通信拓扑图
2 硬件设计
2.1 总体设计
Zigbee无线通信主要由协调器、路由器及终端设备3种节点组成。在网络建立之初,每个网络有且仅有一个协调器节点,主要负责网络的发起、参数的设定、信息的管理及维护功能,也可用来协助建立安全层和应用层的绑定[2]。协调器节点主要由处理器模块、电源管理模块及其各外部接口等组成[3]。协调器主要硬件结构图如图3所示。
图3 协调器节点硬件结构图
2.2 协调器各功能模块介绍
(1)处理器模块。我们采用CC2530作为处理器,它是用于2.4GHz IEEE802.15.4,Zigbee应用的一个真正的片上系统解决方案。它能够以非常低的材料成本建立强大的网络节点。CC2530结合了领先的RF收发器的优良性能,业界标准的增强型8051CPU,系统内可编程,其中之一版本CC2530F256就结合了zigbee协议栈,提供了一个强大和完整的zigbee解决方案。
图4 CC2530功能引脚图
(2)接口模块。通常情况下,协调器节点接口主要包括串行接口、电源接口及JTAG接口,也可增加USB接口。当硬件设备外接电源无效时,也可采用干电池为硬件系统供电,以保证系统各节点的正常运行。
(3)无线设备。CC2530具有一个IEEE802.15.4兼容无线收发器[4]。RF内核控制模拟无线模块。另外,它提供了MCU和无线设备之间的一个接口,这使得其可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。
(4)电源管理模块。本系统采用外接电源供电,保证系统各节点的正常运行。
3 软件模块设计
对于Zigbee协议栈的点对点通信,主要由网络层来实现,zigbee网络层主要为新加入的节点分配地址并提供路由发现及路由维护等[5]。协调器作为网络的第一个节点设备,主要负责网络的建立及参数配置,该节点设计的开发环境是IAR Embedded WorkBench,采用的协议栈是TI Zstack。
组建网络的两个步骤主要是网络初始化及节点加入网络[6]。网络初始化首先要确定网络协调器,通过主动扫描发送信标请求命令来检测该网络中是否有协调器。如果在扫描期限内没有检测到信标,则将自己作为网络的协调器,并不断地产生信标并广播出去,然后进行信道扫描,对指定的信道或默认的信道进行能量检测以避免可能的干扰,并将那些能量值超过了允许水平的信道丢弃,而后对剩余信道进行主动扫描,以检查区域内有没有其他Zigbee网络存在;完成主动扫描后,即可获得设备所在区域内已有的各Zigbee网络的网络标识符,至此,网络初始化基本完成。
图5 协调器节点工作流程图
节点加入网络可通过两种方式完成:一是由子节点发起的通过关联加入网络;二是由父节点发起的通过已有父节点(协调器或路由器)加入网络。当一个节点希望加入该网络时,首先会进行信道扫描来收索周围是否存在协调器。若在扫描期限内检测到协调器,则向其发送关联请求。协调器收到请求后会回复一个确认帧(ACK)。并向其上层发送连接指示原语。当节点收到协调器的回复帧后,节点的MAC层将等待一段时间,以便接收协调器发出连接响应。如果协调器的地址资源足够,它就会给节点分配一个16位的短地址,并产生包含新连接和连接状态的响应命令。至此,节点将可以成功的和协调器进行连接,并可以开始通信了。这一系列的过程都是通过协议栈各层间原语通信实现的。
4 实例
步骤一:将相应的实验代码程序载到相应的硬件元件上,然后通电。
步骤二:打开终端设备时屏幕会显示 Texas Instruments XXX,这时将下载了协调器程序的Zigbee射频板打开,这时会观察到屏幕也先显示 Texas Instruments XXX,同时相应的LED灯闪烁,当协调器网络建立好之后屏幕会显示ZigBee Coord Network ID: 2222, LED灯由闪烁变为一直亮。此时另外作为终端设备的协调器,LCD屏幕会出现:EndDevice:DFF Parent:0并且与之相关的的LED灯也一直亮。表明两者在同一个网络中了,如图6所示。
图6
步骤三:使用终端设备的U1开关向右拨打一次,拨打完之后会发现协调器和终端设备到的LED灯都点亮了,说明绑定成功了,之后便可以收到Hello World rcvd 其效果如图7所示。
图7
参考文献:
[1]彭澎.计算机网络教程[M].北京:机械工业出版社,2001.
[2]王建平,徐其林,张茂林.基于EPA标准的Zigbee网络构建方法的研究[J].计算机测量与控制,2008,16(1):121-123.
[3]李俊斌,胡永忠.基于CC2530的zigbee通信网络的应用设计[J].电子设计工程,2011,(16):108-111.
[4]宋颖.无线个域网问题研究[D].吉林:吉林大学,2008.
[5]杨诚,聂章龙.zigbee网络层协议的分析与设计[J].计算机应用与软件,2009,(12):219-221.
[6]郝晓萌.基于zigbee的无线粮情监测系统中路由协议的研究[D].北京:北京邮电大学,2009.