1. 前言
近年来,随着电子技术和无线通信技术的快速发展,无线传感器网络始终是一个热门的话题,其在军事、环境监测、医疗健康等领域都有广泛的应用 [1] 。无线传感器网络是一种分布式传感网络,由部署在监测区域内的大量的廉价微型传感器节点组成,通过无线通信方式形成一个多跳的自组织网络系统 [2] [3] 。无线传感器网络的特点是多节点协作感知、采集和处理网络覆盖区域中被感知对象的信息,并通过路由器转发汇集到协调器。在实际应用中,被监测对象所处环境往往十分恶劣,而且离监控中心很远,协调器汇集的数据不能及时传送至监控中心 [4] 。为了达到实时在线监控的目的,需要实现两种不同网络协议的转换,建立无线传感器网络与Internet之间进行自由信息交互的机制 [5] 。本文提出了一种基于μC/OS-II的无线传感器网络网关的设计方案,并描述了实现过程。
2. 嵌入式实时操作系统μC/OS-II
μC/OS-II是基于任务优先级进行任务调度,管理微控制器资源的嵌入式实时操作系统 [6] 。内核属于抢占式,最多可以管理60个任务。在系统中嵌入式操作系统μC/OS-II可以把整个程序分成许多任务,每个任务相对独立,且都有自己单独的堆栈。μC/OS-II允许不同的任务拥有不同大小的堆栈空间,从而减少应用程序对RAM的需求。
同时,实时内核可以规避前后台程序设计缺陷,方便程序设计和优化,对实时性要求较高的应用也可满足。其占用系统资源少,编译后的内核不到10 KB,系统本身的实现具有高度模块化,可通过条件编译的方式对系统功能进行裁剪。另外,源代码开放,应用广泛,且技术支持全面,系统移植相对简单,其软硬件体系结构如图1所示。
3. 系统
3.1. 系统总体架构
无线传感器网络网关系统主要由五部分组成,应用处理器、协调器、GPRS模块、LCD显示屏和其他外设,如图2所示。系统首先需要通过GPRS模块与监控中心建立TCP连接,然后协调器将汇集的数据通过串口按照既定格式发送到应用处理器,应用处理器解析收到的数据帧,同时通过GPRS模块按照Internet协议转发到监控中心。LCD显示屏用于显示网关关键信息,便于使用和调试。其他外设,例如按键用于某些参数的设定、蜂鸣器用于特定情况的报警或作为提示音等。

Figure 1. Architecture of μC/OS-II software/hardware [4]
图1. μC/OS-II软硬件体系架构 [4]
3.2. 应用处理器
网关应用处理器采用意法半导体公司的STM32F107VCT6芯片,其专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,配置一流的外设——1us的双12位ADC、4 Mbps的USART、18 Mbps的SPI和18 MHz的I/O翻转速度等,拥有最大的集成度,简单的结构和易用的开发工具 [7] 。
3.2.1. μC/OS-II的移植
操作系统的代码分为与CPU无关的代码和与CPU相关的代码两部分,移植过程中间只需要修改与CPU相关的代码部分,如表1所示。
3.2.2. μC/OS-II主要任务
无线传感器网络网关系统主要分为以下七大任务,详情见表2所示。
任务间的切换按照优先级进行调度,相关的事件之间,通过信号量/邮箱进行同步与通信。图3为主要任务事件传递关系图。

Table 1. Code files associated with CPU
表1. 与CPU相关的代码文件
表2. μC/OS-II主要任务表

Figure 3. Main task event transfer relation graph
图3. 主要任务事件传递关系图
3.3. GPRS模块
MC55模块主要功能包括短信、语音通话和GPRS数据传输,同时内嵌TCP、UDP、HTTP、FTP、SMTP、POP3多种协议。在网关的设计过程中主要使用GPRS数据传输和短信功能,通过串口发送AT指令与MC55模块通信。图4即为发送AT指令流程图。

Figure 4. Flow chart of AT instruction
图4. 发送AT指令流程图
只有当指令发送成功后,函数才会从while(Flag == 0)循环中退出,指令未发送成功时,函数会按照设定的时间间隔(wait_time)重新给模块发送相同的指令,并检测是否成功,直到成功后,退出并关闭定时器。为保证与服务器保持长连接,在与服务器建立连接后,定时向服务器发送心跳包。
3.4. 协调器
采用TI推出的CC2530构建无线传感器网络,利用ZigBee协议栈Z-stack,组建星型拓扑结构的网络。网络由协调器(Coordinator)、路由器(Router)和端节点(Endpoint)三种类型设备构成,网关应用处理器与协调器通过串口相互通信,对ZigBee网络进行管理与维护。
ZigBee协议栈实现了无线传感网络的建立和维护,内部嵌入有实时操作系统(Real Time Operating System, RTOS) OSAL (Operating System Abstraction Layer),并以函数形式提供ZigBee协议所规定的基本功能 [8] 。利用OSAL可以实现任务注册、初始化和启动,任务间的同步、互斥,中断处理以及存储器分配和管理。确定传感器接口后,通过OSAL访问特定接口函数,便可完成数据的采集和传输。
4. 实验结果与分析
4.1. 实验结果
无线传感器网络网关如图5所示,主要包括电源、核心板、ZigBee协调器接口、GPRS模块接口、3.2寸LCD显示屏、四个按键和4个LED指示灯。
在实际测试中间,我们在服务器上部署了一个WSNServer服务,用以接收网关上传的数据,同时将接收到的数据写入数据库,图6为服务器上运行的WSNServer服务,图7为存入数据库的数据。
端节点模拟数据采集过程,向协调器发送数据,数据类型分为adc_ch1、adc_ch2、adc_ch3、core_voltage、humidity、key_info、mac_addr、ntk_addr、position和temperature。每一个端节点可以采集上述数据类型的全部或者部分,通过设备的MAC地址进行唯一标识,为网络拓扑结构、端节点采集信息管理、无线传感器网络地址与MAC地址管理等应用提供支持。
为了测试网关在上传或者接收数据时的延时,在端节点上传上来的数据尾部加上接收时间戳,作为一个属性字段(发送时间)与服务器上的接收时间做对比。实验结果表明上传数据延时保持在2秒以内,满足监测实时性要求。为了测试网关上传数据的丢包率,我们利用ZigBee网络的帧序列号,对网关的接收处理上传性能进行了测试,图8为丢包率测试结果图。

Figure 5. Wireless sensor network gateway
图5. 无线传感器网络网关

Figure 8. The packet loss of WSN gateway
图8. 无线传感器网络网关丢包率
丢包率测试结果图表明,当协调器通过串口向应用处理器传输数据时,发送数据帧频率越高,丢包率越大。当发送数据帧频率超过100 HZ时,丢包率直线上升。产生这种结果的原因在于,应用处理器接收数据是按照帧来处理的,在当前帧未处理完时,下一帧已经到达,从而导致丢包。
通过简化协调器与应用处理器通信帧,减少帧的字节数,可以有效提高网关信息处理的吞吐率。
4.2. 实验分析
基于μC/OS-II的无线传感器网络网关,能够实时有效的将端节点感知的数据上传至监控中心。引入μC/OS-II操作系统,将无线传感器网络网关系统按照逻辑关系分割为独立的任务,然后通过操作系统提供的一系列同步与通信机制,使得任务之间按照良好的逻辑稳定有效的运行。对采集信息频率较高的场合,可通过在协调器中增加缓存的方式,减少网关接收帧的频率。
5. 总结
在无线传感器网络网关的设计中,通过引入μC/OS-II嵌入式实时操作系统,对应用处理器软硬件资源进行管理,不仅能够有效解决无线传感器网络感知数据远程实时传输的问题,而且能够规避前后台软件设计缺陷。