《无线传感器网络简明教学教程.ppt》由会员分享,可在线阅读,更多相关《无线传感器网络简明教学教程.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、无线传感器网络简明教程,第8章 无线传感器网络实验,第8章 无线传感器网络实验,本章内容: 实验背景和设计 实验内容和步骤,8.1 实验背景和设计,1、实验名称 Mica系列传感器网络的编程实验 2、实验目的 学习安装和使用CrossBow公司的Mica传感器网络,练习传感器网络的基本应用,加深学生对传感器网络基本工作原理和实现方法的理解,强化学生将传感器网络课本知识与工程实践相结合的能力。,具体的实验目标包括: (1) 掌握安装TinyOS操作系统; (2) 事件驱动的传感器数据获取; (3) 发送与接受消息; (4) PC机显示数据。,4、实验所需软件 操作系统:安装有Cygwin的Win
2、dows 2000/XP操作系统,或者安装有GCC编译器的Linux操作系统。 下载并安装以下软件: Cygwin (); WinAVR (); nesC (); Java JDK ( TinyOS (,5、实验设备 除了采用普通计算机以外,还需要的实验硬件设备清单如图:,MIB510的具体型号为MIB510CA,下图所示的各标号部件的含义如下: 9针的RS232接口。 与MICAz/MICA2相连的51针接口。 与MICA2DOT相连的19针接口。 MICAz/MICA2 发光二极管指示器:红、绿、黄。 编程指示器:发光二极管为绿色,表示“电源开启”;如果为红色,表示“编程中”。 编程接口开
3、关:On/Off开关控制串行传输。 临时开关:复位编程处理器和Mote。 10针Jtag接口。 电源:5V50mA应用外接电源。,Mica2的具体型号为MPR400CB,各标号部件的含义分别如下: 51针的接口(插针型)。 电源On/Off开关。 外接电源的接口。 MMCX接口(插孔型)。,传感器板的具体型号为MTS300,各标号部件的含义分别如下: 51针的接口(插座型)。 光传感器。 声音传感器(4kHz)。 蜂鸣器。,8.2 实验内容和步骤,1、安装TinyOS (1) 下载与安装 TinyOS操作系统有两种安装方式,一种是使用安装向导自动安装,另一种是全手动安装。不管使用哪种方式,都需
4、要安装相同的RPM。 RPM就是Reliability Performance Measure,是广泛使用的用于交付开源软件的工具,用户可以轻松有效地安装或升级RPM打包的产品。,这里介绍在Windows平台下自动安装TinyOS。 TinyOS自动安装程序的下载地址如下:http:/webs.cs.berkeley.edu/tos/dist-1.1.0/tinyos/windows/tinyos-1.1.0-lis.exe。 TinyOS 1.1.0安装向导提供的软件包包括如下工具:TinyOS1.1.0、TinyOS Tools 1.1.0、NesC 1.1.0、Cygwin、Suppor
5、t Tools、Java 1.4 JDK $CLASSPATH;C:Program FilesUCBcygwinopttinyos-.xtoolsjavajavapath;C:Program FilesUCBcygwinopttinyos-1.xtoolsjava; # 设置Make入口点 export MAKERULES=$TOSROOT/tools/make/Makerules,重新启动cygwin之后,再运行toscheck进行验证,系统会报告安装成功。 最后一行报告“toscheck completed without error.”,这是十分重要的,只有显式了这一行才表示安装无误;否
6、则如果报告存在什么错误或问题,一定要先修补好。, 硬件验证 TinyOS的apps目录下有一个应用程序“MicaHWVerify”,是专门用来测试mica/mica2/mica2dot系列硬件设备是否功能完好的验证工具。 对于传感器节点在硬件编程时须注意: 若使用配套的电源给编程接口板供电,将传感器节点插到接口板前要保证节点上的电池已取出; 若利用传感器节点上的电池给编程接口板供电,不需再接电源,并保证电池电量大于等于3.0V且节点上开关状态为On。如果既外接电源,又采用电池供电,很可能会烧毁电路板。,以下步骤以MICA2节点为例,对MICA2DOT节点只需修改相应参数即可。 第一步:运行cy
7、gwin后,在C:Program FilesUCBcygwinopttinyos-1.xapps目录下,键入make mica2来编译MicaHWVerify程序。 在使用MICA2/MICA2DOT平台时,输入如下完整的命令: PFLAGS=-DCC1K_MANUAL_FREQ= make 其中,可以根据需要在315MHz,433MHz和915MHz中选择一个。针对Mica2系列的节点,手工设置频率为916.7MHz。这里的命令格式是:PFLAGS=-DCC1K_MANUAL_FREQ=916700000 make mica2,若编译没问题,将输出一个内存描述,显示如下的类似内容: comp
8、iled MicaHWVerify to build/mica2/main.exe 10386 bytes in ROM 390 bytes in RAM avr-objcopy -output-target=srec build/mica2/main.exe build/mica2/main.srec 如果输出结果与上述描述类似,则说明应用程序已经编译好,下一步就将它加载到节点中。,第二步:将MICA2节点插到编程接口板上(MIB510),用电池或电源供电,通电后编程接口板上的绿灯亮。 第三步:将编程接口板连到计算机,将程序装载到MICA2节点,键入命令: MIB510=COM# make
9、reinstall mica2 其中,COM#表示MIB510连接在计算机端口COM#上,#=1、2、3.。这里假设取为COM1。 reinstall是直接将已编译过的程序装载到指定节点,而不再重新编译程序,因此速度较快。如果使用命令install代替reinstall,则先对目标平台编译,再将程序装载到节点。,MIB510编程接口板的典型输出如下: $ mib510 make reinstall mica2 installing mica2 binary uisp -dprog=mib510 -dserial=COM1 -dpart=ATmega128 - wr_fuse_e=ff -era
10、se -upload if=build/mica2/main.srec Firmware Version: 2.1 Atmel AVR ATmega128 is found. Uploading: flash Fuse Extended Byte set to 0 xff 这时可以知道编程接口板和计算机串口工作正常,然后验证传感器节点硬件。,第四步: 键入命令: make -f jmakefile 然后再键入命令: MOTECOM=serialCOM1:57600 java hardware_check 这时计算机的输出会出现如下类似内容: hardware_check started har
11、dware verification successful Node Serial ID: 1 60 48 fb 6 0 0 1d 其中,Node Serial ID是MicaHWVerify程序分配给MICA2节点的 序列号。这个程序检查节点序列号、闪存连通性、UART功能和外部时钟。当这些状态都正常时,屏幕打印出硬件检测成功的消息。,第五步:验证传感器节点间的无线通信。 通信时传感器节点间使用统一的频率,即PFLAGS=- DCC1K_MANUAL_FREQ=916700000。 为了操作方便,我们可以在apps/目录下建立一个Makelocal文件来设定参数的默认值,内容如下: CFLA
12、GS=-DCC1K_DEFAULT_FREQ=CC1K_915_998_MHZ MIB510=COM1 这样以后就不必每次输入MIB510=.PFLAGS=. 之类的参数了。通信实验需要两个传感器节点,因此先对另一个传感器节点进行硬件检测,再按下述步骤操作,使它充当第一个节点的网关汇聚节点。,第六步: 进入/apps/TOSBase目录键入 make mica2 编译 TOSBase 程序。 第七步: 将TOSBase程序装载到插在MIB510编程接口板的传感器节点,并将另一个传感器节点放在附近,该节点装载的是MicaHWVerify程序。 第八步: 键入命令: MOTECOM=serialC
13、OM1:57600TH 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”。 如果系统通过了上述测试,就可以进行TinyOS的开发工作了。,2、事件驱动的传感器数据获取 为了演示
14、事件驱动的传感器数据获取,这里选用简单的传感器应用示例程序Sense,它从传感器主板的光传感器获取光强度值,并将其低三位值显示在节点的发光二极管。该应用程序位于apps/Sense 目录,配置文件为Sense.nc,实现模块文件为SenseM.nc。,跟前面的例子一样,在C:Program FilesUCBcygwinopttinyos-1.xappsSense目录下输入命令:make mica install 这条命令完成编译应用程序,并安装到传感器节点。本实验中需要将一个带有光传感器的传感器板连接到节点。例如Mica2传感器主板使用51针的连接头。传感器主板的类型可以在ncc的命令行上使用
15、“-board”选项来选择。在Mica2节点上,缺省的传感器类型为micasb。,TinyOS支持的所有传感器板都在tos/sensorboards目录下,每个目录对应一种型号,目录名称与主板名称相一致。 这里ADC将光传感器获取的大样本数据转化为10位的数字,表示当节点在光亮处时LED关掉,在黑暗中LED则发亮,因而将该数据的高三位求反。在SenseM.nc的函数ADC.dataReady()中有如下语句:“display(7 - (data 7) ”,就是为了实现这个用途。,3、发送与接受消息 这个实验是对传感器节点编写“CntToLedsAndRfm”程序,它通过无线方式传输计数器的数值
16、,假设命名为“节点1”。对另外一个传感器节点编写“RfmToLeds”程序,这个节点负责以LED显示所接收到的计数器数值,假设命名为“节点2”。 实验步骤如下: (1) 将网络节点Mica2通过串口与MIB510编程板相连。 (2) 打开Cygwin窗口,输入下面的命令: cd /opt/tinyos-1.x/apps/CntToLedsAndRfm,(3) 输入编译命令:make mica2 install 这时我们可以看到节点2上的LED会显示3位的二进制计数器,当然这也是节点1通过无线发送的数据结果。 (4) 关闭节点1的电源,将另外的其它一个节点与编程板相连,假设这个节点命名为“节点3
17、”。输入下面命令: cd /opt/tinyos-1.x/apps/RfmToLeds (5) 输入下面命令:make mica2 install.2 (6) 打开节点1和节点3,这时我们可以看到节点1通过无线发送计数器的数据,节点3在它的LED上显示所接收到的计数值。,4、PC机显示数据 本实验的目的是将传感器网络与PC机集成起来,让传感器数据在PC机上显示出来。 (1)Oscilloscope应用程序 这里使用的网络节点应用程序在 apps/Oscilloscope目录下。该应用程序包含一个从光传感器读取数据的模块。每当读取到10个传感数据时,该模块就向串口发送一个包含这些数据的包。网络节
18、点仅仅只用串口发送数据包。,先编译该应用程序,并安装到一个网络节点中。将传感器主板连接到网络节点上,以便可以获得光强数据。根据传感器主板类型在apps/Oscilloscope/Makefile中设置SENSORBOARD选项,要么是micasb,要么是basicsb。 将带有传感器的网络节点连接到与PC机串口相连的编程器主板。Oscilloscope应用程序运行时,如果传感数据超过某一阈值(在代码中设置,缺省为0 x0300),红色的LED灯将发亮。每当一个数据包被传回给串口时,黄色的LED灯就发亮。,(2) “监听”工具:显示原始数据包中的数据 为了在PC机和网络节点之间建立通信,首先将串
19、口电缆连接到编程器主板上,并检查JDK以及m 包是否安装完好。将Oscilloscope代码编译好安装到网络节点后,转到tools/java目录下,输入命令: make export MOTECOM=serial serialport:baudrate 环境变量MOTECOM在这里用于告诉java Listen工具要监听哪些数据包。serialserialport:baudrate的意思是监听连接到串口的微粒,其中serialport是连接到编程器主板的串行端口,baudrate是波特率。mica和mica2dot的波特率是19200,mica2是57600波特。,设置好MOTECOM参数后,
20、运行如下命令: java net.tinyos.tools.Listen 将得到类似于如下的输出信息: serialCOM1:19200: resynchronising 7e 00 0a 7d 1a 01 00 0a 00 01 00 46 03 8e 03 96 03 96 03 96 03 97 03 97 03 97 03 97 03 97 03 7e 00 0a 7d 1a 01 00 14 00 01 00 96 03 97 03 97 03 98 03 97 03 96 03 97 03 96 03 96 03 96 03 7e 00 0a 7d 1a 01 00 1e 00 0
21、1 00 98 03 98 03 96 03 97 03 97 03 98 03 96 03 97 03 97 03 97 03 该程序简单地将从串口接收到的每个数据包的原始数据打印出来。,(3) SerialForwarder程序 监听程序是与网络节点进行通信的最基本方式。这种方式只是打开串口并将数据包“堆”到屏幕上而已。很明显,使用这种方式不易于将传感数据可视化地展现在用户面前。 SerialForwarder程序用来从串口读取数据包的数据,并在互联网上转发,这样可以写一些其他程序通过互联网来与传感器网络进行通信。如果要运行串口转发器程序,转到tools/java目录,运行如下命令:,ja
22、va net.tinyos.sf.SerialForwarder -comm serialCOM1: 参数-comm告诉SerialForwarder使用串口COM1进行通信;该参数用于指定SerialForwarder将要进行转发的数据包来自于何处,使用语法与前面用到过的MOTECOM环境变量类似。 SerialForwarder与大多数程序不一样,并不理睬MOTECOM环境变量,必须使用-comm参数来指明数据包的来源。原理是通过设置MOTECOM参数来指定一个串口转发器,串口转发器将与串口通信。参数用于指定SerialForwarder通信时的波特率。,SerialForwarder程序的运行界面,(4) 启动Oscilloscope 图形用户界面 串口转发器保持运行状态,执行命令: java net.tinyos.oscope.oscilloscope 这时弹出一个图形化显示来自网络节点的数据窗口。如果提示错误信息“端口COM1正忙”,则可能是因为Listen程序执行完后没有重置MOTECOM环境变量。该程序将通过网络连接到串口转发器并获取数据,解析每个数据包的探测数值。,