基于TinyOS的无线传感器网络节点设计与实现
2015-10-20翟祥伟
翟祥伟,吴 蒙
(南京邮电大学通信与信息工程学院,江苏南京210003)
无线传感器网络[1](WSN)由部署在监测区域内的大量廉价的传感器节点组成,这些节点以无线通信的方式构成一种多跳自组织的网络,并对网络分布区域内的各种信息进行监测、感知和采集。传统无线传感器网络应用开发人员直接对硬件进行编程导致较大的开发难度和极低的软件重用性,增加了开发成本和工程周期,结合考虑无线传感器网络的能量、内存和接口等资源极为有限的特点,无线传感器网络操作系统的应用尤为必要。
TinyOS是加州大学伯克利分校专为无线传感器网络量身定制的操作系统[2]。采用的技术包括组件化的编程、事件驱动机制、轻量级线程和主动消息通信等,这些技术都是为了保证操作系统能满足无线传感器网络的特殊要求,使其在处理能力和存储能力有限的情况下具有更强的网络处理和资源收集能力。
目前广泛采用的支持TinyOS的节点平台如MicaZ[3]和TelosB[4],它们采用ATmega128/MSP430和 CC2420相结合的架构,并搭载了多种传感器以满足实际应用的需求。由于CC2420工作频率为2.4 GHz,绕射能力低,传输距离十分有限,且额定输出功率0 dBm,穿透能力不强,这些缺点限制了节点只能使用在室内或相对开阔的环境[5]。
本文首先设计了一个支持TinyOS的简易节点硬件系统,结合微控制器MSP430F5438A和915 MHz射频芯片,支持远距离的无线通信。接着在分析TinyOS的硬件抽象架构的基础上介绍如何在已有的TinyOS芯片支持文件上对所设计节点进行移植。最后对移植完成的节点进行包括串口通信、组网通信在内的稳定性测试,再联合micaZ节点和TelosB节点作性能对比测试,验证该节点的先进性。
1 newnode节点硬件模块
将本文搭建的TinyOS平台节点命名为newnode,笔者选用全新的MSP430F5438A开发板进行newnode平台的搭建。节点原型包括微控制器与射频,通过SPI口进行通信,关键部分接口电路如图1所示。
图1 节点关键接口电路
1.1 主控芯片
MSP430F5438A是TI公司推出的一款微控制器,具有许多优异的特性[6]。通过设计5种低功耗模式使系统仅在必要时启动所需时钟来显著降低功耗,配合极低的唤醒时间更是实现了超低功耗;同时作为一款16位的微控制器,在指令速度相等的情况下,其运算性能远高于8位微控制器。与MSP430F5xxx系列其他型号相比,MSP430F5438A有着更大的ROM和RAM,能够满足TinyOS的程序和数据存储需求。
1.2 射频模块
在射频部分,针对2.4 GHz频段的射频传输距离短的问题,笔者选用了915 MHz射频芯片来搭建硬件节点平台。由于低频率器件的路径损耗更低,因此其可用距离几乎是采用2.4 GHz器件的 3倍[7]。该射频模块接受灵敏度可达-110 dBm,可编程发送输出频率可达+10 dBm,有着较强的抗干扰性和穿透性。工作电压为1.8~3.6 V,与主控芯片相匹配,在保证了良好的兼容性的同时也简化了电路设计。
2 TinyOS系统的移植
2.1 TinyOS硬件抽象架构
TinyOS2.0采用了3层结构的硬件抽象化设计,基于3个不同的抽象化级别,结合组件的特点,形成了一个高效的系统结构[8-9]。图2为TinyOS硬件抽象架构。
图2 TinyOS硬件抽象架构
在图示的组件框架里,底层抽象为硬件表示层(HPL),它与硬件的寄存器和中断密切相关,主要任务是表示硬件的功能,同时通过隐藏复杂的硬件接口来简化对硬件的操作;中间层硬件适配层(HAL)使用由底层提供的原始接口,建立起硬件抽象,提供了对硬件模块的全功能访问,是硬件抽象架构的核心;顶层抽象为硬件接口层(HIL),它使用中间层提供的硬件抽象,提供了与平台无关的硬件接口,便于软件的开发和移植。
2.2 移植TinyOS至newnode
newnode节点平台硬件上包括两个关键部分,微控制器芯片MSP430F5438A和915 MHz无线射频芯片。对于一款芯片,在众多的基于TinyOS的无线传感器网络节点平台中,虽然所采取的硬件连接方式各有不同,但其大部分的逻辑工作与具体的平台无关。因此,newnode平台的开发工作就是把TinyOS中已有的该平台各个芯片代码进行连接整合[10-11]。需要注意的是,TinyOS只有在最新发布的Tiny-Prod这个版本添加了对MSP430F5xxx系列的支持,所以笔者选用的Tiny-OS版本为Tiny-Prod。newnode平台定义的关键目录及文件如图3所示。
图3 newnode节点平台源码目录
下面分别对图中关键目录及文件进行说明,包括三大分支:
1)首先在tiny-prod/tos/chips目录中,TinyOS提供了包括MSP430,915M_RF在内的众多芯片的驱动代码支持。对于MSP430,也提供了其外围模块的驱动代码,如flash,timer,adc,dma,usci等。
2)其次,在tiny-prod/tos/platforms/newnode目录下,需要定义新建的newnode平台,这一步将各个模块连接整合在一起,是移植的关键。需创建并定义在该目录下的核心文件有:
.platform:该文件定义newnode平台的基本编译参数,包括编译所需的目录和传递给NesC编译器的各种参数,目录必须包括源码树中所有文件夹;
hardware.h:该文件定义newnode平台的常量、引脚并包含外部头文件“msp430hardware.h”,该头文件提供了MSP430寄存器资源的定义,它包含在tiny-prod/tos/chips/msp430目录中;
platformP.nc和platformC.nc:这两个文件用于newnode节点的启动和初始化,需在其中提供Init接口,将平台初始化工作与RealMain组件连接起来;
hardware目录:该目录下为每个外设定义了一个子目录,定义了平台外设的初始化操作;
chips目录:连接底层射频驱动关键目录,需在该目录下新建射频目录以存放射频HAL层组件,通过这些组件与HIL层通用射频组件库rfxlink(存放于tiny-prod/tos/lib/rfxlink)和网络组件库net(存放于tiny-prod/tos/net)相连接来完成射频驱动的设计。
射频驱动部分关键性组件包括:
RadioConfig.h文件,配置射频驱动变量和宏定义;
RFDriverLayerC.nc和 RFDriverLayerP.nc文件,通过 SPI总线、GPIO接口构建完整的射频驱动代码,并对外提供射频控制接口;
RFRadioC.nc和RFRadioP.nc文件,连接射频底层关键组件,并配置TinyOS库函数的应用参数;
RFActiveMessageC:该文件定义了各个层次的组件,包括Send,Receive,和 SplitControl。
3)最后,需要在tiny-prod/support/make目录下创建newnode.target文件,使得编译系统将“newnode”理解为合法的平台名字。newnode.target中需设置PLATFORM变量值,使平台包含msp处理器的文件(make/msp/msp.rules)并为该平台上的程序提供编译规则,具体内容如下:
#-*-Makefile-*-vim:syntax=make
PLATFORM=newnode
MSP_MCU=msp430f5438a
$(call TOSMake_include_platform,msp)
newnode:MYM(BUILD_DEPS)
@:
至此,已经初步搭建完newnode平台。使用NULL应用进行编译测试,NULL应用是专门用来测试编译环境的程序框架。进入tiny-prod/apps/Null目录,对该应用在newnode平台下进行编译,如图4所示,可以顺利通过。
图4 NULL应用编译结果(截图)
3 性能测试
使用3个节点,搭建简易的星状网络,同步进行组网通信与串口通信的测试。使用其中1个节点作为网关节点通过串口连接PC,另外2个作为普通节点周期性地向网关节点发送数据,网关节点收到数据后通过串口发送给PC,PC端使用串口调试助手显示数据。据此编写上层应用TestNetwork[12],组网协议采用CTP汇聚树协议。实验室环境下,接收数据如图5所示。
图5 网关节点接收数据(截图)
取图中第一行数据进行分析,根据CTP协议数据帧格式截取有效载荷为:00 01 AA BB 00 07,其中00 01为发送源节点号,AA BB为固定自定义数据,00 07为每次发送递增1的自定义数据。有效载荷区之前为主动消息区,表示了有效载荷长度、网络组号和AM类型,之后为CRC校验位。由图可以看出,1号节点与2号节点周期地向根节点发送数据,运行稳定。
在性能测试中,选用目前广泛采用的MicaZ和Telosb节点作为对比,检测最大发射功率下多种通信环境中节点的丢包率。将TestNetwork应用分别在3种平台上进行编译,并下载到对应节点。分别在大楼内部和室外操场环境下进行测试,各点在测试时保证通信次数1 000以上。测试结果见表1和表2。
表1 室内环境下3种节点丢包率对比 %
表2 室外环境下3种节点丢包率对比 %
测试结果表明,室内环境下,newnode节点在60 m距离、3堵墙阻隔下依然保持极低的丢包率;室外300 m内的开阔环境下,newnode节点能实现有效而可靠的通信,当通信距离达到800 m时,丢包率才开始出现陡增。而Telosb节点和MicaZ节点仅能保证室内20 m、室外150 m的可靠通信,当通信距离达到300 m时基本失去可靠性,这也与官方给出的室内20~30 m,室外75~100 m的使用距离吻合[13]。由此可见,newnode节点在室内和室外环境下的传输性能均大幅领先Telosb节点和MicaZ节点,符合节点设计预期。
4 小结
随着无线传感器网络技术的深入发展,对作为其基础的无线传感器节点也提出了更高的要求。本文设计了一个无线传感器网络节点硬件平台,结合微控制器MSP430F5438A和915 MHz射频芯片,具有传输距离远、穿透性强等特点。同时,将无传感器网络操作系统TinyOS针对本节点进行移植,大大降低了节点应用的开发难度,缩短了开发周期。后续可以使用该节点作为原型,通过加入多种传感器进行功能拓展以满足实际应用。
[1]孙利民.无线传感器网络[M].北京:清华大学出版社,2005.
[2]潘皓,董齐芬,张贵军,等.无线传感器网络操作系统 TinyOS[M].北京:清华大学出版社,2011.
[3] SU W,ALZAGHAL M.Channel propagation characteristics of wireless MICAz sensor nodes[J].Ad-Hoc Networks,2009,7(6):1183-1193.
[4] PRAYATI A,ANTONOPOULOS C,STOYANOVA T,et al.A modeling approach on the TelosB WSN platf-orm power consumption[J].Journal of Systems and Software,2010,83(8):1355-1363.
[5]黄勋,袁红林,孙强.无线传感器网络节点机的研制[J].电视技术,2008,32(8):84-86.
[6] Texas Instruments.MSP430 TM Ultra-Low Power 16-Bit Microcontrollers[EB/OL].[2014-05-18].http:∥e2e.ti.com.
[7]谢处方,饶克谨.电磁场与电磁波[M].北京:高等教育出版社,2006.
[8]吴小娜,王漫.无线传感器网络操作系统 TinyOS综述[J].计算机与现代化,2011(2):103-105.
[9] HANDZISKI V,POLASTRE J,HAUER J H,et al.TEP2:Hardware abstraction architecture[EB/OL].[2014-05-05].http:www.tinyos.net/tingos-2、1、0/doc/html/tep2.html.2010.
[10]朱肖肖,姚明海,李海红,等.无线传感器网络节点操作系统的移植[J].传感器与微系统,2008,27(7):75-78.
[11]何伟贤,刘建明,彭智勇,等.TinyOS跨平台移植方法研究与实现[J].微计算机信息,2012(9):356-358.
[12] LEVISP,GAY D.TinyOSprogramming[M].England:Cambridge University Press,2009.
[13] Crossbow Technology Inc.MICAZ_datasheet[EB/OL].[2014-07-23].http:∥www.docin.com/P-681787670.html.