基于STR912的嵌入式无线传感器网络网关的设计
2013-11-12朱思建杨光友马志艳
朱思建, 杨光友, 马志艳, 张 铮
(1 湖北工业大学农机工程研究设计院, 湖北 武汉 430068; 2 湖北工业大学机械工程学院, 湖北 武汉 430068)
无线传感器网络(wireless sensor network,WSN)[1]应用于环境监测、医疗健康、工业控制等众多生活领域,并且能够完成传统系统无法完成的任务,已经成为国内外众多领域研究的热点.建立在IEEE 802.15.4标准[2]上的Zigbee技术[3],是应用于无线监测与控制的全球性无线通信标准,已经成为无线传感器网络组网的首选技术之一.
在钻井工程等一些室外环境较恶劣的特定领域,经常需要采用ZigBee网络远程监测目标区域,这就需要在现有的网络基础设施(如RS232、485、以太网等)基础上进行远程监控,此时ZigBee网关在整个无线传感器网络体系中起着重要的枢纽作用,它负责外部网络和无线传感器网络间的协议转换、数据存储和处理等[4-5].本文提出了基于ZigBee的无线传感器网络网关的软硬件方案,并实现无线传感器网络传感数据的远程传输和监控.
1 嵌入式网关系统总体结构
网关系统中网关节点(协调器节点)作为整个ZigBee无线网络的中心,主动建立网络并允许传感节点加入网络[6],同时维护管理整个无线网络,接收感知区域传感器节点发送的数据,并对数据进行存储、解析、封装等处理,然后通过GPRS或以太网等发送至远程监控中心;同时网关节点将监控中心发送的指令发送至目标区域,实现对目标区域的监控.但是网关节点通常需要连接外部网络如GPRS或以太网等来实现ZigBee无线网络与外部网络的互联,这就需要在传输层基础上完成不同网络协议的转换.本文使用具有较强信息处理能力和网络功能的ARM9系列芯片STR912作为核心处理器[7],完成ZigBee协议与以太网协议的相互转换,完成ZigBee无线传感器网络与外部以太网的互联.图1为嵌入式无线传感网络网关系统的体系结构.
图 1 ZigBee无线传感器网络网关体系结构
本文中嵌入式网关系统采用三层结构(图2),硬件层主要由STR912处理器芯片与ZigBee无线芯片CC2530[8]组成,实现数据解析、封装和存储等功能.软件层主要实现在嵌入式操作系统μC/OS-II[9]下建立多任务以及在uIP协议[10-11]下以太网数据传输,在CC2530无线节点上运行ZigBee协议栈,建立并维护无线传感器网络,从而实现ZigBee无线传感器网络协议数据和以太网协议数据的双向转换;应用层主要由用户定义的应用程序组成,调用软件接口函数,用户可根据实际需要扩充应用API接口函数.
图 2 ZigBee网关系统架构
2 网关系统硬件结构
本文中嵌入式网关硬件结构如图3所示.处理器采用基于ARM920T内核的ST公司的微处理器STR912FAW44芯片,支持内核96MHz的工作频率,具有96 KB SRAM,256 KB主Flash和32 KB从Flash,外部扩展存储器、LCD接口、JTAG接口、串口、以太网接口等组成硬件平台.其中串口(UART2)是连接STR912处理器和ZigBee网关节点的桥梁.ZigBee网关节点选用TI公司2.4 GHz 的无线芯片CC2530,其内部集成了工业标准增强型8051微处理器和高性能射频CRF收发器,使用TI公司的Zstack无线通信协议栈实现ZigBee无线传感网络的建立和维护.
图 3 嵌入式网关硬件结构
3 网关系统软件结构设计
整个嵌入式网关系统是以STR912芯片作为微处理器,采用嵌入式实时操作系统μC/OS-II和微型嵌入式TCP/IP协议栈uIP,通过以太网带动整个传感器网络的运行,实现ZigBee无线传感网络和以太网两个相对独立网络的互联.所以软件方面需要在μC/OS-II操作系统和uIP协议下运行,并完成网关节点的程序设计.
3.1 嵌入式操作系统μC/OS-II下多任务建立
在实时多任务操作系统μC/OS-II[9]下,完成上述的网关系统的功能,需要建立4个任务.运行流程如图4所示.
图 4 μC/OS-II下嵌入式网关系统任务
TASK1是对LCD触摸屏的初始化以及相关GPIO的配置,设置相关参数如串口的波特率,以及IP地址、端口号的设置等.
TASK2是键盘扫描任务,通过矩阵键盘修改相关参数,如UART2波特率、 IP地址等.
TASK3是串口任务,实现网关节点与STR912微处理器的通信.网关节点与STR912微处理器通过UART2交互数据,处理器接收到网关节点传来的ZigBee无线协议数据包后,需要存储、解析并封装成以太网协议的数据报;同时还要解析由远程终端发送的监控命令,封装成ZigBee无线协议数据包,通过网关节点发送至目标区域的监测节点.
TASK4是以太网任务,完成以太网模块的初始化及uIP协议栈的轮询,检查是否有从远端机传来的数据分组及应用层是否有数据要发送,并做相应的处理.
3.2 嵌入式uIP协议下以太网数据传输
uIP协议栈[10-11]是在TCP/IP协议基础上去掉了TCP/IP协议中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议机制.uIP协议栈相当于一个代码库,通过一系列的函数实现底层硬件与上层应用程序的通信,对于整个系统来说它内部的协议族是透明的,从而增加了协议的通用性.uIP协议族与系统底层和上层应用之间的关系如图5所示.
图 5 uIP通信结构图
从图4可知uIP协议栈处于整个网络通信的中间层,其上层为应用层,下层称为网络设备驱动.uIP协议栈与底层硬件有两个接口,与应用层有一个接口.
3.2.1uIP协议栈与底层设备驱动程序的接口
1)uip_input()函数.当设备驱动程序从网络中收到数据包时要调用这个函数,设备驱动程序必须事先将数据包存入到uip_buf[]中,包长为uip_len,然后交由uip_input()函数处理,当函数返回时,如果uip_len不为0,则表明有带外数据(如SYN,ACK等)要发送.当需要ARP支持时,还需要考虑更新ARP表或发出ARP请求和回应.
2)周期时钟函数uip_periodic().这个函数用于uIP内核对各连接的定时轮询,因此需要一个硬件支持的定时程序周期性地用他轮询各连接,一般用于检验主机是否有数据要发送.
3.2.2uIP与上层应用的接口为了将用户的应用程序挂接到uIP中,将宏UIP_APPCALL()定义成实际的应用程序函数名,这样,在任何一个事件发生时调用UIP_APPCALL(),uIP在接收到底层传来的数据包后,在需要送到上层应用程序处理的地方调用UIP_APPCALL().网关系统中uIP协议栈数据处理流程如图6所示.
图 6 uIP协议处理数据报流程图
3.3 ZigBee网关节点程序设计分析
Zigbee网关节点在整个嵌入式网关系统中起着承上启下的作用.网关节点负责构建ZigBee无线网络,并管理整个ZigBee网络路由表,接收来自感知区域无线节点的传感数据,对数据进行校正、封装、存储等[6],并通过串口API发送至STR912微处理器.网关节点的程序流程如图7所示.
首先硬件上电,网关节点创建一个ZigBee网络,网络中的其他节点发出加入网络请求,如果加入网络成功,每个加入网络的节点会被分配一个网络地址.无线传感网络中的节点将需要传输的节点地址信息和监测数据以ZigBee数据帧的形式打包以无线的方式通过一跳或多跳发送至网关节点.STR912微处理器经UART2接收到来自网关节点传来的数据,将数据按ZigBee协议解包并封装成TCP/IP协议报文,再通过以太网传至上位机;当上位机下达监测指令时,STR912处理器将接收到的数据按TCP/IP协议解包,然后封装成ZigBee协议数据包并通过UART2发送至网关节点,网关节点通过ZigBee无线网络将相应指令发送至目标区域节点.
图 7 ZigBee网关节点程序流程
4 测试
实验室环境下,随意布置7个ZigBee节点,ZigBee节点定时采集温度、湿度以及光敏值并发送至网关节点;ARM板与网关节点通过UART2连接,并通过交叉网线与PC连接,设置好网关IP和端口号,嵌入式网关板实物如图8所示.组网成功后可以在上位机拓扑图中观测到各个节点实时的温度、湿度和光敏值(图9).
图 8 ZigBee网关实物图
图 9 ZigBee网络拓扑图
经测试,整个嵌入式网关系统运行稳定.
5 结束语
本文使用基于ARM9系列微处理器STR912和ZigBee芯片CC2530构建嵌入式无线传感器网络网关系统,同时该系统扩展了丰富的外围接口设备,可将目标区域中传感器节点采集的位置、环境等参数通过以太网传送至远程终端,实现远程监控.该网关具有低成本、低功耗、高可靠性与高抗干扰能力等特性,可方便地应用于现代各种监测领域,在工业控制领域具有很好的应用和推广价值.
[参考文献]
[1] 孙利民,李建中.无线传感器网络[M].北京:清华大学出版社,2005.
[2] IEEE std. 802.15.4 - 2006: Wireless medium access control (mac) and physical layer (phy) specifications for low rate wireless personal area networks (lr-wpans)[S].IEEE Press,2006.
[3] 瞿雷, 刘盛德, 胡咸斌. ZigBee技术及应用[M]. 北京:北京航空航天大学出版社,2007:5-8.
[4] 匡兴红,邵惠鹤. 无线传感器网络网关研究[J].计算机工程,2007,36(6):228-230.
[5] 李长峰,藤国库,常 闯. 基于ZigBee的无线传感器网络网关的设计[J].安徽农业科学,2011,39(21):13 100-13 102.
[6] ZigBee Alliance, Inc. ZigBee specification[EB/OL].(2013-08-08) http://www.zigbee.org/Specifications/ZigBee/Overview.asp.
[7] STMicroelectronics group of companies.STR91X hardware development getting started[EB/OL].[2011-02-25] http://wenku.baidu.com/view/8ef2fbff04a1b0717fd5dd25.html.
[8] texas instruments.A True System-on-chip Solution for 2.4GHz 802.15.4 and ZigBee Application [EB/OL]. (2013-08-08)http://www.ti.com/lit/ds/symlink/cc2530.pdf.
[9] 杨宗德,张 兵.μCOS-II 标准教程[M].北京:人民邮电出版社,2009:5-6.
[10] 岳世为,尹为民. uIP协议栈在基于DSP以太网通信系统中的应用[J].计算机与数字工程,2010,38(1):187.
[11] DUNKELS A. The uIP embedded TCP/IP stack[EB/OL]. [2006-06-01]http://sourceforge.net/projects/uip-stack/.