摘 要: 详细阐述了基于无线传感器硬件搭建无线传感器网络实验平台并利用TinyOS进行传感器硬件通信验证的实现方案。
关键词: 无线传感器网络 实验平台 传感器节点
集成了传感器、微机电系统和网络三大技术而形成的无线传感器网络是一种全新的信息获取和处理技术,具有十分广阔的应用前景。
无线传感器网络是一种特殊的无线自组网,它由成千上万甚至数以百计的“沙粒”(motes)构成。“沙粒”即无线传感器网络节点,大小相当于给它提供能量的2节AA电池。它还包含一个微型处理器,很少的内存以及用于感应光、温度、压力、热量等的传感器,此外还有一个微型无线电收发机,用来接收和发送无线电信号。无线传感器网络被部署在应用现场后能够实时感知和采集各种监测对象的信息,并对其进行处理,最后传送到用户。它在国防军事、反恐抗灾、环境监测、交通管理、工程安全、医疗卫生等领域都将得到广泛的应用,必将引发信息感知和采集的革命[1]。
典型的无线传感器网络结构如图1所示。此网络由传感器节点、基站(Base Station)、Internet或通信卫星、任务管理节点(Task Manager Node)等部分构成。传感器节点通过飞行器撒播、人工埋置和火箭弹射等方式散布在指定的感知区域内,每个节点都可以收集数据,并通过“多跳”路由方式把数据传送到基站。基站也可用同样的方式将信息发送给各节点。基站直接与Internet或通信卫星相连,通过Internet或通信卫星实现任务管理节点(即观察者)与传感器之间的通信[2]。
无线传感器网络的广阔应用前景引起了学术界和工业界的高度重视。由于各方面条件的限制,目前针对无线传感器网络的研究大多基于模拟环境(如NS-2),然而在实际网络系统的研究中会遇到在模拟环境下无法预料的问题。因此,无线传感器网络实验平台的实现在整个传感器网络研究中占据非常重要的作用。为此本文主要介绍了如何搭建无线传感器网络实验平台,包括利用TinyOS在传感器硬件上进行测试,保证传感器节点间无线通信正常,这些都是实现传感器应用实例的前提工作。本文将重点介绍如何利用Crossbow公司的无线传感器产品来实现无线传感器网络实验平台和基于此实验平台的节点验证;Crossbow公司的5040系列硬件产品;TinyOS系统和传感器硬件验证;将来的研究方向。
1 硬 件
Crossbow公司是全球第一家提供Smart Dust无线传感器的公司。该公司提供了一系列传感器和相关硬件,其中大部分产品是即插即用的。硬件产品上的所有部件都支持TinyOS操作系统(此系统是美国加州大学伯克利分校专为嵌入式系统开发的微型操作系统)。
实验平台硬件采用的是MOTE-KIT 5040系列。它包括4个MICA2 Processor/Radio Boards、4个MICA2DOT Boards、3个MTS310 Sensor Boards、2个MDA500 MICA2DOT 原型和数据采集板以及1个MIB510编程接口板。
MOTE-KIT5040系列的主要部件是MICA2。它是早期产品MICA的改进,采用的TinyOS操作系统是一个小型、开源、节能的软件操作系统,支持大规模、自配置的无线传感器网络,其源代码和软件开发工具可以在网上下载。MICA2采用的硬件平台为MPR400CB,MPR400CB采用了Atmel Atmega 128L微控制器,该控制器从其自带的ROM中运行TinyOS操作系统。可以利用编程接口板对其进行开发。MICA2具有许多优良的特性:
①是第三代小型智能无线传感器节点。
②内嵌TinyOS操作系统,提供了前所未有的通信和处理能力。
③在休眠模式,AA电池可以使用一年。
④无线通信功能强大,并且每个节点都具有路由器的功能。
⑤433MHz或868/916MHz的多信道收发天线。
⑥光敏、温度、RH、气压、震动、声学、电磁以及诸多可选的传感器。
⑦支持无线的远程重编程。
⑧具有大量可用的传感器板和数据采集板。
⑨与下一代产品MICA2DOT完全兼容。
MICA2DOT与MICA2相比的主要优点在于其体积约是MICA2的四分之一。其他功能与MICA2极其类似。
MOTE-KIT5040还提供了3块传感器板,这些接口板可以通过一个51脚的接口连到MICA2上。任何一个MICA2节点都可以配置成基站来进行工作。基站可将从无线传感器网络取得的数据汇集到计算机上。
2 基于TinyOS实验平台的实现
TinyOS操作系统是一个小型、开源、节能的软件操作系统。该操作系统支持大规模、自配置的无线传感器网络,安装比较简单,与普通应用软件安装过程类似。完整的安装包包括如下软件(一般选择完全安装): TinyOS、TinyOS Tools、NesC、Cygwin、Support Tools、Java 1.4 JDK & Java COMM 2.0、Graphviz、AVR Tools(avr-binutils、avr-libc、avr-gcc、avarice、avr-insight)。
调试嵌入式系统应用程序的难点是:难以区分错误源在应用程序还是在嵌入式系统平台。但由于TinyOS安装包包括了2个用于对系统和传感器硬件进行验证的工具,因此可以利用这2个工具在调试应用程序前确认传感器节点本身是否有问题。
首先,对传感器硬件验证前要先对安装的PC工具进行确认,包括 avr gcc compiler、perl、flex、cygwin(如果使用Windows操作系统)、JDK 1.4.x等。利用TinyOS自带的 toscheck工具可以检验PC工具是否安装完全,其操作步骤是:双击图标运行cygwin应用程序,进入/tools/scripts目录,键入toscheck。运行后,最后1行输出应为“toscheck completed without error”。若发现显示错误,则必须先解决该错误再继续下面的步骤。
接下来可以使用下面2种方法[3]进行传感器节点的硬件验证:
(1)TinyOS自带的MicaHWVerify程序。
(2)Crossbow提供的图形用户界面程序Mote-Test。
2.1 使用MicaHWVerify进行硬件验证
MicaHWVerify程序专门用来验证MICA/MICA2/MICA2DOT节点硬件。若所使用的硬件平台不同则不适宜使用该程序。以下步骤都以验证MICA2节点为例(对MICA2-DOT节点只需修改相应参数即可)。对传感器节点硬件编程时须注意:若使用配套的电源给编程接口板供电,将传感器节点插到接口板前要保证节点上的电池已取出;若利用传感器节点上的电池给编程接口板供电,则不需再接电源但必须保证电池电量≥3.0V,且节点上开关状态为On。验证步骤如下。
(1)运行cygwin后,进入/apps/MicaHWVerify目录。键入make mica2编译MicaHWVerify程序。若使用MICA2/MICA2DOT平台,完整的命令应该是PFLAGS=-DCC1K_MANUAL_FREQ=<freq> make <mica2|mica2dot>。其中,<freq>可以根据需要在315MHz、433MHz和915MHz中任选1个,具体设置方式见参考文献[5]。本文则选用915MHz的频率;若使用MICA平台,则键入make mica。
(2)将MICA2节点插到编程接口板上(MIB510),用电池或电源供电(通电后编程接口板上的绿灯亮)。
(3)将编程接口板通过串口连到计算机。如果使用编程接口板MIB500,则将编程接口板通过并口连到计算机(以下未特别声明的编程接口板都是指MIB510)。
(4)将程序装载到MICA2节点上。键入MIB510=COM# make reinstall mica2。其中:COM#表示MIB510连接在计算机端口COM#上(#=1、2、3……本文取为COM1);rein-stall是直接将已编译过的程序装载到指定节点上而不再重新编译程序,因此速度较快;若使用命令install代替reinstall,则先对目标平台编译再将程序装载到节点。如果使用MIB500,则键入make reinstall mica2即可。回车后,MIB510编程接口板的典型输出如下:
$ mib510 make reinstall mica2
installing mica2 binary
uisp -dprog=mib510 -dserial=COM1 -dpart=ATmega128 --wr_fuse_e=ff --erase --upload if=build/mica2/main.srec
Firmware Version:2.1
Atmel AVR ATmega128 is found.
Uploading:flash
Fuse Extended Byte set to 0xff
这时可以知道编程接口板和计算机串口工作正常。接下来继续验证传感器节点硬件。
(5)键入make -f jmakefile,再键入MOTECOM=serial@
COM1:57 600 java hardware_check,计算机上的输出应该大致为:
hardware_check started
hardware verification successful
Node Serial ID:1 60 48 fb 6 0 0 1d
其中,Node Serial ID是MicaHWVerify程序分配给MICA2节点的序列号,该程序检查结点序列号、闪存连通性、UART功能和外部时钟。当这些状态都正常时,屏幕上就会打印出硬件检测成功的消息。由于MICA2DOT没有序列号,当编译MicaHWVerify时会提示警告信息“Serial ID not supported on mica2dot platform”,最终的运行结果serial ID输出全为0xFF。
最后,验证传感器节点间的无线通信。应注意通信时传感器节点间要使用统一的频率,即 PFLAGS=-DCC1K_MANUAL_FREQ=915 988 000。为操作方便,可以在apps/目录下建立一个Makelocal文件来设定参数默认值,其内容如下:
PFLAGS=-DCC1K_DEFAULT_FREQ=CC1K_915_998_MHZ
MIB510=COM1
这样,以后就不必每次输入MIB510=……、PFLAGS=……等表设置参数了。
通信实验需要2个传感器节点,因此先对另一个传感器节点进行硬件检测,再按下述步骤操作,使其充当第一个节点的无线网关程序。
(6)进入/apps/TOSBase目录,键入make mica2编译TOSBase程序。
(7)将TOSBase程序装载到插在MIB510编程接口板上的传感器节点,并将另一个传感器节点(注意:该节点装载的是MicaHWVerify程序)放在附近。
(8)键入MOTECOM=serial@COM1:57600 java hardware_check来运行hardware_check java程序,输出结果应和前面类似:
hardware_check started
Hardware verification successful.
Node Serial ID:1 60 48 fb 6 0 0 1e
这里返回远端节点的序列号,表示传感器节点间无线通信验证成功。如果远端传感器节点关闭或工作不正常,将返回提示信息“Node transmission failure”。
2.2 使用Mote-Test进行硬件验证
验证传感器硬件还有另外一种更快捷的方法,即使用Mote-Test程序。介绍如下。
(1)从光盘运行/Crossbow Software/Mote-Test文件夹下的setup.exe安装Mote-Test。
(2)从光盘/Crossbow Software/Mote Firmware目录下拷贝MICA2_TEST_315、MICA2_TEST_433、MICA2_TEST_916、MICA2DOT_TEST_315、MICA2DOT_TEST_433、MICA2DOT_TEST_916文件夹到/apps目录下。
(3)用电源给MIB510编程接口板供电,并通过串口与计算机相连。首先,在MICA2上装载测试固件(Test Firm-ware)。
(4)运行cygwin,进入MICA2_TEST_XXX目录(XXX是频率,本实验中使用的是MICA2_TEST_916)。
(5)键入MIB510=COM1 make mica2 reinstall,在待测试的传感器节点上装载测试固件,如果装载成功,按下编程板上的RESET按钮后会看到LEDs闪烁,验证了编程接口板和计算机串口工作正常。
(6)设置Mote-Test检测传感器节点。运行Mote-Test,在窗口中点击GONFIGURE 按钮,弹出一个配置对话框。在其中选择正确的端口号(这里是COM1)。MICA2固件配置的波特率是57 600,默认的包大小是36,UART CRC设置为不可用。一旦配置好,按下SET NOW 按钮,主屏幕就会弹出。
(7)接下来验证传感器节点硬件工作是否正常。Mote-Test允许使用插在MIB500/MIB510上的一个MICA2或MICA2DOT节点来创建一个基站或PC的串行网关,用来测试和演示2个传感器节点间的双向无线通信,也可以验证传感器硬件和计算机串口是否工作正常。
①使用一个装载过MICA2_TEST_916固件、电池供电的传感器节点作为测试无线通信功能的远程节点。
②将一个装载过MICA2_TEST_916固件的传感器节点插到编程接口板上,称此节点为基站。基站的频率要和远程节点相同。
③将MIB510编程接口板通过串口连到计算机。
④按下SELF TEST按钮,选择好测试对象后,将远程节点放在距离基站大于0.6米的地方。
⑤运行MICA2硬件验证测试,按下START TEST按钮。
检测后,输出结果如图2所示。
从图中可以看出,若Memory检测成功,MEM OK绿灯亮;Battery检测电池电量大小;RSSI测试有2个值,可以显示远端节点与基站的连通性。若RSSI值小于-80.00将显示FAIL,但这并不意味着节点无线通信失败,可能因为MICA2节点距离基站太远,可以通过缩短MICA2节点与基站间距离来改善RSSI值。在本实验中,RSSI实际测得的数据分别为-64.50和-61.88,说明连通性较好。Serial ID NUMBER显示本地传感器节点的硬件序列号。当各项状态都正常时,最上面的PASS绿灯亮。传感器硬件测试完成后,就可以根据需求自己编写程序,通过编程接口板加载到传感器上,实现无线传感器网络的各种功能。
3 结论及下一步工作
本文介绍了如何搭建无线传感器网络实验平台以及在此平台上的系统验证。内容涉及无线传感器网络的结构和发展前景、传感器节点的硬件测试、传感器节点间无线通信等。在此实验平台上,可以编写应用程序(Nesc和Java程序)完成传感器网络的各种功能。
下一步的工作是在该实验平台上研究具体的无线传感器网络协议,需要解决如下问题:(1)无线传感器网络中的定位和同步问题。(2)研究网络层协议中的路由算法。(3)研究传感器网络的管理问题。
参考文献
1 李建中,李金宝,石胜飞.传感器网络及其数据管理的概念、问题与进展.软件学报,2003;14(10)
2 任丰原,黄海宁,林闯.无线传感器网络.软件学报,2003;14 (7)
3 http://www.xbow.com/Support/Support_pdf_files/UISPHELP.pdf.UISP,MoteProgramming,and Mote Fuse Help Guide version 20030315.Crossbow Technology Inc,2003