- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于ARM9的嵌入式Zigbee网关设计与实现
摘要:设计并实现了一个基于ARM9处理器的Zigbee无线传感器网络嵌入式网关,用来完成Zigbee和Internet之间数据的透明转换。给出了该网关的硬件方案设计和主要软件编程思路以及一种新型网关的协议转换方案的实现思路。该网关具有较好的通用性。
关键词:无线传感器网络 ;Zigbee ;嵌入式网关;STR912 ;LwIP
引言
& nbsp;& nbsp;& nbsp; 无线传感器网络(Wireless Sensor Network,WSN)是指由大量成本相对低廉的,具有感知能力、计算能力、实时通信能力的传感器节点组成的嵌入式无线网络,是当前众多领域的研究和应用热点。建立在IEEE 802.15.4(LR_WPAN,低速率无线个人区域网)上的Zigbee协议是应用于无线监测与控制的全球性无线通信标准,是无线传感器网络组网的首选技术之一。
随着Zigbee无线传感器网络技术的广泛应用,如何通过现有网络基础设施(如Internet、GPRS等)对其进行远程管理、控制感测环境中的各种传感装置,逐渐成为该领域的重要研究课题。图1给出了基于Zigbee的无线传感器网络体系结构,如图示Zigbee网关在整个无线传感器网络体系中起着重要的枢纽作用,同时也是WSN整体系统的“瓶颈”之一。当图1中的服务器或用户部分为其它Zigbee网络时,通过Zigbee网关和Internet或GPRS做媒介,就使得世界范围内的不同监测区域都可以信息共享,这大大缩小了物理世界的时空距离。
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; & nbsp;图1 基于Zigbee技术的无线传感器网络
本文主要研究的是Internet环境下基于Zigbee传感器网络的网关设计及其实现。
1 系统概述
& nbsp;& nbsp; 网关是建立在传输层以上的协议转换器,通常它连接两个或多个相互独立的网络,每接收一种协议的数据包后,在转发之前将它转换为另一种协议的格式。考虑到Zigbee节点的通信能力有限(数据速率仅为250 Kbps),为了减少网关协议转换自身的工作量,本网关选择了一款集成Ethernet接口的ARM9 芯片来完成硬件系统的搭建。
本网关采用模块化设计方案,如图2所示由硬件层、软件层和应用层三大部分组成。其中硬件层描述了网关的硬件实现,在后文将详细介绍;软件层移植μC/OS-II实时操作系统内核、Zigbee和嵌入式TCP/IP协议栈LwIP,实现了Zigbee和TCP/IP协议的双向透明转换,同时封装一些关键API函数供应用层程序调用;应用层运行的是用户编写的应用程序,用户可以根据实际需要使用下层定义的API自行扩充相关应用。
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;
&
nbsp;&
nbsp;
&
nbsp;&
nbsp;&
nbsp;&
nbsp;&
nbsp;&
nbsp;&
nbsp;&
nbsp;&
nbsp;&
nbsp; &
nbsp; 图2 Zigbee网关总体结构
2 硬件设计
& nbsp;& nbsp;& nbsp; 网关硬件结构如图3所示,由内部集成以太网MAC的ARM9处理器STR912FW44X、Zigbee射频收发模块CC2420、大容量DataFlash存储卡片AT45DCB008、以太网收发芯片(PHY) RTL8201和带触摸功能的LCD显示模块LQ084V1DG21等模块组成。
& nbsp;& nbsp;& nbsp;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; & nbsp; 图3 Zigbee网关硬件结构
其中STR912FW44X作为硬件系统的主控芯片,它是意法半导体(ST Microelectronics)推出的基于ARM966E-S内核,片内集成Flash、USB、CAN、以太网MAC、AC马达控制、ADC、RTC、DMA等接口的高性能ARM9 SOC,最高主频可达96Mhz;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; Zigbee射频收发芯片CC2420是挪威Chipcon(现为TI)推出的符合2.4 GHz IEEE 802.15.4和Zigbee 标准的射频收发器。CC2420采用O-QPSK调制方式,工作频带范围为2.400~2. 4835 GHz,接收灵敏度为-94 dBm,抗邻频道干扰能力为39 dB。利用此芯片开发的无线通信设备支持数据传输率高达250 Kbps,能够实现点对多点的快速组网;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; AT45DCB008是Atmel公司推出的新型DataFlash存储芯片,在该网关中用来保存网络故障状态下的数据信息。AT45DCB008中的数据按页存放,主存共8192页,每页1024字节,总容量约为8M字节,每页的擦写次数保证在100,000次以上;
以太网PHY层芯片采用的是Realtek公司的RTL8201BL,它是一个单端口的物理层收发器,实现了全部的10/100M以太网物理层功能;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 显示部分采用的LQ084V1DG21是SHARP公司的带触摸屏8.4英寸TFT数字液晶显示屏,分辨率为640×480。
3 嵌入式网关软件设计
3.1 μC/OS-II下的LwIP的移植
& nbsp;& nbsp; μC/OS-II是一个抢占式的实时多任务内核操作系统,具有开放源码、可固化、可剪裁、高稳定性和可靠性等特点。目前国内外对μC/OS-II的相关研究已有很多,其在STR912处理器上的移植在此不再赘述。LwIP是瑞士计算机科学院开发的轻量级(Light Weight)开放源码TCP/IP协议栈,目前最新版本为1.2.0
LwIP协议栈把所有与硬件相关、OS、编译器相关的部分独立出来,放在/src/arch目录下,可以是说其在设计时就考虑了移植问题。LwIP在μC/OS-II上的移植就是修改这个目录下的文件,其它的文件一般不做修改。需要修改和自己编程实现的是以下几部分:
●与STR912及IAR编译器相关的include文件;
●μC/OS-II模拟层相关代码编写;
●与μC/OS-II相关的一些结构和函数;
●lib_arch中库函数的实现;
●STR912网络驱动程序编写。
完成以上代码移植的工作后,LwIP就可以顺利运行在μC/OS-II下,主要通过以下程序完成LwIP的初始化及运行:
main(){& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;
OSInit();//μC/OS-II初始化
OSTaskCreate(lwip_init_task,& LineNo11,& lwip_init_stk[TASK_STK_SIZE-1], 0);& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; //创建LwIP初始化任务
OSTaskCreate(usr_task,& LineNo12,& usr_stk[TASK_STK_SIZE-1],1);//创建用户任务
& nbsp;& nbsp;& nbsp;& nbsp; OSStart();//启动LwIP& nbsp; }
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 在main函数中创建了lwip_init_task来初始化LwIP任务(优先级为0)和usr_task用户任务(优先级为1)。需要指出的是,在lwip_init_task任务中除了完成初始化硬件时钟和LwIP本身等工作之外,还创建了tcpip_thread(优先级为5)和tcpecho_thread(优先级为6),其中tcpip_thread才是LwIP的主线程,也是应该先创建的。
3.2& nbsp;& nbsp; μC/OS-II下的Zigbee协议栈的实现
我们在该网关平台上运行自主编写Zigbee协议栈的子集ez_PAN。ez_PAN目前还很不完善,只实现了Zigbee的部分关键功能,仅支持星型和簇状网络(Cluster),支持网络的动态组网配置和动态绑定等。ez_PAN协议栈结构如图4所示:
& nbsp;& nbsp;& nbsp;& nbsp;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 图4& nbsp; ez_PAN协议栈结构
下面给出ez_PAN 协议栈上的协调器(Coordinator)、路由器(Router)和精简节点(RFD)实现的关键代码。Coordinator通过aplFormNetwork()函数建立网络,等待其它节点(Router和RFD)的加入,主要程序如下:
Main()
& nbsp;{
halInit(); //初始化 HAL 层
hawInit();//硬件初始化
aplInit(); //初始化APL
ENABLE_GLOBAL_INTERRUPT(); //开中断
aplFormNetwork(); //建立网络
while(apsBusy)()) {apsFSM();}& nbsp; //等待建立完成
while(1) {apsFSM();}& nbsp; //循环执行协议栈
}
其中调用apsBusy()来判断当前协议栈是否忙于其它程序调用,apsFSM()是在APS层上实现的FSM(有限状态机),被apsBusy周期调用来维持ez_PAN的运行。在Coordinator建立网络完成后,允许Router或RFD节点动态加入,关键代码实现如下:
do {
aplJoinNetwork();//Router或RFD加入网络
while(apsBusy ()) {& nbsp; apsFSM();}& nbsp; //等待加入完成
} while (aplGetStatus ()! =LRWPAN_SUCCESS);
3.3& nbsp;& nbsp; 协议转换软件设计
& nbsp;& nbsp;& nbsp; 在TCP/IP协议簇中,以太网的数据传输使用硬件地址(MAC)来进行识别,其中ARP(地址解析协议)完成IP地址和数据链路层使用的硬件地址之间的转换,因此为了保证Zigbee网关在以太网中的通信,首先要实现ARP协议的功能。Zigbee网络中的节点数理论上最多可达65536个,每个节点同样有自己唯一的MAC地址(64位长地址或16位短地址)。参考TCP/IP下的实现机制,我们实现了Zigbee协议中的适配层和ARP,实现IP地址到Zigbee节点地址的映射。协议转换的工作原理如图5所示,下面简单描述一下数据包在网关中从Ethernet向Zigbee单方向转换过程:Ethernet端从某网络接口接收一个正常发往本机的IP数据包,简单判断后向上发给对应的UDP或TCP处理函数进行相应处理,然后再向上发给网关应用程序处理;网关应用程序经过简单分析后,确定要转发给Zigbee网络中的哪个节点,通过Zigbee端的ARP解析出该节点在Zigbee网络中的MAC地址,然后将相应数据包成功交至该节点,这样就完成此次从Ethernet向Zigbee端的协议转换。Zigbee向Ethernet端转换类似,不再赘述。
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;
& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 图5 网关协议转换框图
4& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 结论
本文设计的网关已在我们的“基于Zigbee无线传感器网络的煤矿井下定位跟踪系统”项目中得以实用,取得了较好的效果。经测试该网关具有效率高、响应实时、可靠性高、功耗低,抗干扰能力强等特点,同时具有很好的通用性。由于当前Zigbee技术还在不断的更新和完善中,如何跟踪最新的Zigbee技术来提高网关的性能以及如何提高ez_PAN的多平台可移植性,将是我们以后研究的重点。
本文作者创新点:采用集成Ethernet (MAC)接口的ARM9芯片STR912作为核心扩展设计了一个Zigbee网关,它很好地克服了传统网关架构下Zigbee传输速率的瓶颈,大大降低了协议转换过程中的资源和处理时间消耗。该网关设计思路、技术实现新颖,具有较强的实用性。
参考文献
[1] Zigbee specification v1.1. Zigbee Alliance.http://www.zigbee.org,2006
[2] LwIP v1.2.0 source code. Leon Woestenberg.http://savannah.nongnu.org/projects/lwip/, 2006
[3] Patrick Kinney, Kinney Consulting LLC.Gateways: Beyond the Sensor Network .Zigbee Alliance, 2005
[4] http://www.ece.msstate.edu/~reese/msstatePAN/, 2006
[5] 赵晨,何波,王睿.基于射频芯片CC2420实现的Zigbee无线通信设计[J].微计算机信息,2007(1-2):P101-102
13.56MHz NFC天线,13.56MHz RFID天线设计培训课程套装,让天线设计不再难
上一篇:用于测量电缆和天线的便携式分析仪
下一篇:802.11n:走融合之道更有作为