基于μC/OS-Ⅱ的无线传感器网络系统的设计
2012-11-24戎舟,吴梦,吴为
戎 舟 ,吴 梦 ,吴 为
(1.南京邮电大学 自动化学院,江苏 南京 210003;2.上海绿地能源(集团)有限公司,上海 200433;3.南伊利诺伊大学,美国 伊利诺伊州 62901)
无线传感器网络 WSN (Wireless Sensor Network)是近年来信息科学领域一个热门的研究方向,它集成了无线通信技术、嵌入式技术、传感器技术和分布式信息处理,能相互配合对环境或各种对象进行实时的监测和感知,其被广泛应用于军事[1]、环境监测[2]、动植物监视[3]、智能家具[4]和健康结构监测[5]等多个领域。
无线传感器网络具有很强的应用相关性,不同的应用和需求对网络结构和软硬件的要求都不一样。很多商用的WSN系统存在源代码不公开、整个系统或单个节点价格过高以及对于某一具体应用适应差等问题。本文围绕无线传感器网络应用的关键技术,开发了一个适用于室内环境监控的实时数据收集的无线传感器网络系统。
1 系统设计
在分析了几种常见的无线传感器网络拓扑结构后,本文选取了分簇结构作为系统的拓扑结构。与一般分簇结构不同,采用中继节点作为簇头,一方面增加了网络的传输距离,另一方面由于簇头能量消耗较快,只要更换极少部分簇头的能量就可以延长网络的寿命。簇头也可以担任节点的任务进行数据采集。图1为无线传感器网络拓扑结构图。
1.1 硬件设计
在选择节点的处理器方面,主要考虑的因素包括价格、功耗、开发工具成本、片内集成的RAM、Flash及EEPROM大小等。目前已经商用的WSN节点,如Mica、Mica2 Dot、T-Nodes、Fleck 等 , 都 采 用 ATmega128 作 为CPU,一些自行开发的节点,参考文献 [6]、[7]也采用ATmega128。
图1 无线传感器网络拓扑结构图
无线通信芯片选择nRF24L0,其采用2.4~2.5 GHz世界通用ISM频段,最高数据传输速率可达2 Mb/s,125频道满足多点通信和跳频通信需要,发射和接收模式消耗的电流都比较低,而且高速链路层完全集成在芯片上,非常便于软硬件的开发。
Sink节点的硬件结构如图2虚线框部分所示。其中,串口通信模块负责Sink节点与计算机的连接,将收集的数据传送到计算机上进行显示。
图2 节点硬件结构图
采集节点的硬件结构与图2相似。采用温度传感器AD590和Honeywell的气体质量流量传感器AWM3200CR分别对温度和空气压差参数进行转换,然后采用ATmega128内的ADC将模拟信号转成数字信号。串口模块用于PC向节点下载程序。
1.2 Sink节点软件设计
(1)通信模块软件
nRF24L01的数据包处理方式主要分直接收发模式、ShockBurst模式和增强型ShockBurst模式3种。在本文中,nRF24L01无线通信模块都是采用增强型ShockBurst模式。根据nRF24L01在增强型ShockBurst模式下接收的步骤,设计了汇聚节点接收程序的设计。
为了提供从传感器节点到汇聚节点的中继转发,还设计了中继节点,利用nRF24L01工作方式和信道切换来完成收发方式的转变。
(2)μC/OS-Ⅱ的移植与在汇聚节点上的应用
μC/OS-Ⅱ是由 LABROSSE J J编写的一种源码公开的嵌入式实时操作系统。程序大部分用C语言编写,带有少量的汇编,适合小型控制系统,具有执行效率高、占用空间小、实时性能优良及可扩展性强等特点。本设计成功地将μC/OS-Ⅱ操作系统移植到ATmega128处理器上。
移植完成后,实现μC/OS-Ⅱ操作系统在汇聚节点中的应用。首先在main函数中初始化无线芯片、串口、ATmega128的SPI等,然后函数创建不同优先级的任务,最后启动μC/OS-Ⅱ操作系统。由于汇聚节点要接收来自不同采集节点的数据,本文设计了多任务调度机制,分别利用不同的信道接收来自传感器节点的数据。利用定时器和信号量机制分配时间,在一段时间内接收第一个传感器节点的数据,然后这个任务放弃CPU使用权,第二个任务切入,接收来自第二个传感器节点的数据,依次循环。中断转发程序设计流程如图3所示。
⑧Tiwana,A.,“Do bridging ties complement strong ties?An empirical examination of alliance ambidexterity”,Strategic Management Journal,2008,29(3),pp.251 ~272.
图3 中断转发程序设计流程图
1.3 采集节点软件设计
本系统主要设计了基于实时数据采集方式和基于按需数据采集方式两种基于不同数据采集的方式。在这两种方式中,收发的转变由对nRF24L01工作方式的设置和信道切换来完成。
(1)实时数据收集方式
这种方式实际上是单向上行的数据传输结构。具体流程如下:
①Sink节点和簇头节点初始化处于等待接收状态;
②簇内节点将数据以一定格式传送给簇头;
③簇头将接收的数据合成,切换信道收发模式后,发送给 Sink;
④Sink节点接收,通过串口传输给PC处理后显示;
⑤簇头再一次切换收发模式等待新的数据。
这里,簇头的设计涉及到无线数据的点对点收发、一对多收发以及收发模式切换的程序设计。
(2)按需数据收集方式
这种方式是一种双向的数据传输,在PC采集节点1的信号时,其他节点为睡眠状态,从而节约能量。具体流程如下:
①PC向Sink节点发送读取命令;
②Sink节点接收命令后向簇头节点发送读取命令,信道切换给簇头1;
③簇头接收到命令后将信道切换至节点1,节点1处于发送模式;
④节点1进行连续采集,采样的数据发送给簇头1;
⑤簇头1收数据后转发给Sink节点;
⑥Sink节点通过串口把数据传送给PC机。
2 基于LabVIEW的实时监控程序设计
在系统中,Sink节点采用串口与PC相连,采集的数据由PC实时显示,由于LabVIEW在串口通信和监测数据的显示等方面设计方便灵活,显示直观形象,因此,采用LabVIEW实现了串口通信和采集数据的显示。图4所显示的是从两个节点采集得到的温度值。经过多次测试,该系统能稳定运行,正常从各节点接收数据。
图4 实时监测界面
本文实现了一个无线传感器网络的软硬件系统。首先进行系统需求分析并且建立模型;然后完成了节点的软硬件设计,并在汇聚节点的核心处理器上移植了μC/OS-Ⅱ操作系统,实现了无线通信程序在多任务实时操作系统上的应用;最后用LabVIEW实现了串口通信和监测数据的显示。现场调试试验取得了较为理想的效果。
在今后的工作中,应进一步考虑如何降低功耗、实现更为灵活的路由机制、μC/OS-Ⅱ任务切换时间的分配、执行效率等问题,使系统性能进一步优化。
[1]马祖长,孙怡宁,梅涛.无线传感器网络综述[J].通信学报,2005,4(25):114-124.
[2]SHETH A, THEKKATH C A, MEHTA P.Senslide: a distributed landslide prediction system[J].Operating Systems Review,2007,41(2):75-87.
[3]JUANG P, OKI H, WANG Y, et al.Energy-effieient computing for wildlife tracking:design tradeoffs and early experiences with ZebraNet[C].Proceedings of the 10th International Conference on Architectual Support for Programming Languages and Operating Systems, 2002:96-107.
[4]纪晴,段培永,李连防,等.基于 ZigBee无线传感器网络的智能家居系统[J].计算机工程与设计,2008,29(12):3064-3067.
[5]JAFARIR R, ENCARNACAO A, ZAHOORY A, et al.Wireless sensor networks for health monitoring[C].The Second AnnualInternationalConferenceon Mobileand Ubiquitous System: Networking and Services, MobiQuitous,2005:479-481.
[6]赵海,赵杰,刘铮,等.一种无线传感器网络节点的设计与实现[J].东北大学学报(自然科学版),2009,130(6):809-812.
[7]田洪强,秦雅娟,郑涛,等.无线传感器网络智能红外控制节点的实现[J].计算机应用,2010,30(9):2549-2552.