无线传感器网络实验报告.docx
《无线传感器网络实验报告.docx》由会员分享,可在线阅读,更多相关《无线传感器网络实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
无线传感器网络实验报告
郑州航空工业管理学院
无线传感器网络实验报告
(第1版)
2014–2015第2学期
赵成编着
院 系:
电子通信工程
姓 名:
专 业:
物联网工程
学 号:
电子通信工程系
2015年6月制
实验一 WSNs开发环境的建立
一、实验目的
了解基于TICC2431/CC2530的WSNs基础知识,熟悉WSNs的开发环境,掌握Cygwin、TinyOS、SDCC、SmartRFStudio7等软件的安装方法。
二、实验内容
1.认识并观察WSNs节点模块的电路板;
2.WSNs开发环境的建立:
(1)Cygwin仿真软件的安装;
(2)TinyOS操作系统的安装;
(3)SDCC小型设备C编译器的安装;
(4)SmartRFStudio7编程软件的安装;
三、预备知识
了解无线传感器网络的基本概念;熟悉无线传感器网络的结构及开发环境的建立。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7。
五、实验分析
1.安装的Cygwin仿真软件时选择□InstallfromInternet还是√□InstallfromLocalDirectory。
(在正确的前面打勾)
2.在安装Cygwin时,需要选择安装包,如下图所示,在箭头所指向的位置,表示对所有(All)包的操作,点击循环按钮,观察四种安装方式格式什么?
写在下面。
图1CygwinSetup–SelectPackage
安装方式:
Default、Install、Reinstall、Uninstall。
3.安装TinyOS操作系统时采用了shell脚本自动安装,请在下面写出执行shell脚本的指令。
4.在下面写出SDCC默认指定安装在Windows系统中的路径,安装在其它路径编译时会出现错误提示。
默认指定安装路径:
C:
\ProgarmFiles\SDCC
5.安装TIFlash编程软件SmartRFProgr之后,系统成功安装设备的驱动程序,接着,打开编程软件,发现无法找到CC2431芯片,也就无法下载程序。
请问,出现这样情况的原因是什么?
你是怎么解决的?
首先检查接口是否拨到对应位置,进行正确连接。
无检查无误,需要检查cc2431芯片供电是够正常,不正常需要更换节点电池或者连接电源,如还是不可以使用,检查SmartRFProgr软件版本是否太低,升级至高版本。
我当时是因为SmartRFProgr版本太低,后来在网上下载了最新的版本,问题自动消失。
6.写出删除Cygwin程序的步骤。
(1)找到安装包,双击运行,到安装界面.默认选项,下一步.
(2)到"SelectPackages界面","Category"选择"Uninstall"点击下一步.
(3)等卸载完成.点击"确定"即可
六、遇到的问题及解决方法
找不到指定路径,需要建立指定路径的文件夹。
安装TIFlash编程软件SmartRFProgr之后,系统成功安装设备的驱动程序,接着,打开编程软件,发现无法找到CC2431芯片,也就无法下载程序。
首先检查接口是否拨到对应位置,进行正确连接。
无检查无误,需要检查cc2431芯片供电是够正常,不正常需要更换节点电池或者连接电源,如还是不可以使用,检查SmartRFProgr软件版本是否太低,升级至高版本。
我当时是因为SmartRFProgr版本太低,后来在网上下载了最新的版本,问题自动消失。
实验二 WSNs节点模块LED灯的控制操作
一、实验目的
应用LED控制组件和Timer组件,掌握对节点模块上LED进行开关控制。
LED的通断时间采用摩尔斯编码,使用灯光输出“hello,world”信息。
二、实验内容
1.使用cd指令将路径切换到\opt\\contrib\cc2431\Helloworld\下,查看其中的源码和源码;
2.切换到/opt/contrib/cc2431/Helloworld路径下,编译HelloWorld工程;
3.下载到节点模块;
4.观察并记录运行效果。
三、预备知识
了解WSNs开发软件的相关知识;了解TinyOS操作系统的编程及工程基本的编译方法。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7。
五、实验分析
1.是();是()。
(A)模块文件,实现LED程序的运行部分代码。
(B)配置文件,用于声明使用的各个组件及相互之间的连接关系。
2.源码中声明使用了四个模块,分别是:
(1)MainC
(2)HelloWorldM
(3)LedsC
(4)newTimerMilliC()
其中,HelloWorldM模块是本工程自定义的程序模块。
3.从源码可知,LED闪烁的基本时长是1000ms,其中:
(1)''保持2000ms;
(2)'.'常亮1000ms,长闭1000ms;
(3)'-'常亮3000ms,长闭1000ms。
4.观察程序的运行效果,对比源码,试分析:
(1)()函数与()函数是事件驱动的么?
是
(2)()函数触发()函数的执行么?
是
(3)()函数与()函数是顺序执行的,还是并发执行的?
是顺序执行的
六、遇到的问题及解决办法
基本没出现什么问题,就是在下载hex文件的时候节点的开关位置得适当调整
实验三 节点模块的串行通信
一、实验目的
熟悉TinyOS操作系统;熟悉message_t结构体,并解析实际传输的串行数据;掌握上位机与节点间的串行通信,尝试测试传输数据的获取。
二、实验内容
1.理解TinyOS中的串行通信格式---message_t结构体;
2.区分串行通信使用的message_t结构体和无线通信使用的message_t结构体的差异;
3.尝试通过实际的串行通信,分析message_t结构体传输数据的意义。
三、预备知识
了解TinyOS操作系统的基本结构;了解基于TinyOS操作系统基本的程序开发方法。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7、GCC。
五、实验步骤
1.编译节点模块程序
在Cygwin环境下,切换至/opt/contrib/cc2431/Serial_Echo_Test路径,运行makecc2431指令,得到hex文件,将其下载到节点模块。
2.在/opt/contrib/cc2431/Serial_Echo_Test路径下,按实际使用的串口号调整源代码中的ttySX值(X用实际数字替代)后,编译上位机的串行通信源代码“”,可以得到可执行的run程序。
输入的编译指令为:
gcc–orun
./run
3.将节点模块连接至计算机,同时,在计算机上运行run可执行程序,观察并记录一批串行通信数据(2~3组即可),解释这些数据的意义。
(1)在TinyOS中想要串行发送的数据:
FFFF20270Axx7Exx
实际被传送的数据:
7E4500FFFF20270Axx7D5ExxCRC1CRC27E
(2)在TinyOS中想要串行发送的数据:
FFFF20270Axx7Dxx
实际被传送的数据:
7E4500FFFF20270Axx7D5DxxCRC1CRC27E
(3)在TinyOS中想要串行发送的数据:
FFFF20270Axx7E7Dxx
实际传送的数据:
7E4500FFFF20270Axx7D5E7D5DxxCRC1CRC27E
在TinyOS中,通过串行通信向PC传送数据时,在数据的开始部分,总是0x7E值先被输入,其后没有ACK的数据类型—0x45值被输入。
(在TinyOS中,0x42值是没有ACK的数据类型。
)接下来,表示串行消息的DispatchID0x00被输入。
接着,对应TinyOS定义的串行消息格式的数据和2bytesCRC字段被输入。
最后,作为完成通信的意义,0x7E被输入
4.在\opt\\tos\types\路径下的源代码中定义了message_t结构体,在下面列出该结构体的定义。
typedefnx_structserial_header{
nx_am_addr_tdest;
nx_am_addr_tsrc;
nx_uint8_tlength;
nx_am_group_tgroup;
nx_am_id_ttype;
}serial_header_t;
第一字段dest字段表示收到串行消息的硬件的地址,一般使用0xFFFF。
Src字段写入发送数据包的节点的地址。
Length字段出现在header字段后表示data区域的长度。
Group和type字段表示编译时设定的组ID和SerialActiveMessageC接口数组中放入的数字。
(在TinyOS中,串行通信时,不填满group字段,以值0x00传送。
)
6、遇到的问题及解决办法
没有调整文件的ttySX的值后,导致gcc编译出现错误,调整之后能正常编译。
实验四 节点模块温湿数据采集
一、实验目的
熟悉温湿一体化传感器SHT11的工作原理,基于TinyOS编程实现温湿数据采集,并利用TinyOS的Oscilloscope程序分析采集的数据。
二、实验内容
1.了解SHT11的工作原理及电气接口;
2.熟悉控制SHT11的程序代码;
3.基于TinyOS操作系统编译运行于CC2431节点模块上的温湿数据采集程序,并编译运行上位机程序,以图形化的方式观察数据。
三、预备知识
了解TinyOSnesC软件编程;了解CC2431节点模块基本的应用方法。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7、GCC、JAVA。
五、实验步骤
1.观察并绘制SHT11与CC2431的接口电路。
2.TinyOS操作系统中,控制SHT11传感器的源代码分别是:
(1)
(2)
3.节点模块温湿数据采集应用工程为\opt\\contrib\cc2431\OscilloscopeSHT11路径下的OscilloscopeC组件工程。
OscilloscopeC组件由以下5个组件组成:
(1)MainC
(2)TimerC
(3)SensirionSht11C
(4)SerialActiveMessageC
(5)LedsC
4.切换到/opt/contrib/cc2431/OscilloscopeSHT11路径下,为了编译得到CC2431运行的,需要执行以下指令:
MakeCC2431
使用Java程序启动SerialForwarder服务器程序,需要执行以下指令:
路径:
/opt/tinyos‐contrib/Oscilloscope/java
指令:
切换到/opt/contrib/cc2431/OscilloscopeSHT11/java路径下,分别执行以下指令:
(1)make
(2)./run
显示运行效果:
六、遇到的问题及解决办法
没有在设备管理器中找到当前节点使用的COM编号,设置好上面的命令。
根据在设备管理器中找到当前节点使用的
实验五基本的无线通信协议
一、实验目的
了解无线传感器网络中使用的MAC协议的特性及其应用方法;通过简单的无线发送接收实例,熟悉TinyOS中基本的RF无线通信原理。
二、实验内容
1.了解节点的基本无线MAC协议—CSMA/CA;
2.理解TinyOS操作系统中提供的无线通信ActiveMessageC,AMSenderC以及AMReceiverC组件;
3.利用BasicMAC实例了解Broadcast和Unicast无线通信;
三、预备知识
了解TinyOS操作系统程序开发的原理;了解Broadcast和Unicast无线通信原理。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7、GCC。
五、实验步骤
1.切换路径到\opt\\contrib\cc2431\BasicMAC目录,打开
源程序,观察BasicMACM模块由哪些TinyOS操作系统模块组成?
(1)MainC
(2)TimerMilliC
(3)PhotoSensorC(4)ActiveMessageC
(5)PhotoSensorC(6)AMSenderC
(7)AMReceiverC
2.为了得到具有0号,1号,2号ID的hex文件,需要在Cygwin下依次执行以下指令:
(1)makecc2431
(2)makecc2431
(3)makecc2431
(4)makecc2431
3.在源代码中,修改函数的首个参数:
eventvoid(error_tresult,uint16_tdata){
…
if(call(ToAddr,&sendmsg,call(&sendmsg))==SUCCESS){
call();
}
…
(1)函数的首个参数为AM_BROADCAST_ADDR,表示:
√□Broadcast通信□Unicast通信
(2)函数的首个参数为特定节点的地址(ID),表示:
□Broadcast通信√□Unicast通信
4.写出实验中观察到的无线通信的运行效果。
如果打开2个传感器节点的电源,则会看到每隔1秒GreenLED和YellowLED指示灯闪烁。
此外,一边YellowLED瞬间闪烁时(发送完数据后),通过另一边节点的RedLED(发送的数据全都收到后)反复打开/关闭,可以确认数据的发送接收运行没有异常。
六、遇到的问题及解决办法
基本实现了预期目标,就是在运行“makecc2431”指令时,忘记更改X的值为0,1,2,而出现错误。
改变之后就观察到预期的实验现象。
实验六WSNs节点射频功率及信道控制
一、实验目的
掌握CC2431节点模块的射频功率控制,以控制数据的覆盖范围;掌握CC2431节点模块的信道控制,以避免不同模块间的传输冲突。
二、实验内容
1.理解Powercontrol及Multichannel;
2.了解CC2431上提供的Power级别及信道信息;
3.通过实践掌握CC2431节点模块的powercontrol及multichannel控制。
三、预备知识
了解TinyOS操作系统程序开发的原理;了解CC2431的功率控制;了解CC2431的多信道切换控制。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7、GCC。
五、实验步骤
1.CC2431可以传送从最高dBm()到最低dBm()的电波,接收侧接收的电波强度在-94dBm()以上时可以接收电波。
2.CC2431RF部分支持26个Multichannel中GHz频带的16个信道。
各信道的频带由下面的公式定义:
F=2405+5(k-11)MHz,k=11,12…26
3.在路径/opt/contrib/cc2431/MCH_PTRSSI下,MCH_PTRSSIM模块调用了TinyOS操作系统模块:
MainC、TimerMilliC、BusyWaitMicroC、ActiveMessageC、AMSenderC、ActiveMessageC、HAL_CC2430ControlC及SerialActiveMessageC等8个模块。
4.在源代码中,修改taskvoidRF_Configuration_Setting()任务中的代码切换RF功率及信道,写出以此执行的编译指令,并观察运行效果(附运行时接收的数据图)。
cd/opt/contrib/cc2431
cdMCH_PTRSSI
运行结果:
六、遇到的问题及解决办法
基本完成了预期的现象,了解了SHT11的工作原理及电气接口,熟悉控制SHT11的程序代码,基于TinyOS操作系统编译运行于CC2431节点模块上的温湿数据采集程序,并编译运行上位机程序,以图形化的方式观察了数据。
实验七多传感器数据测量
一、实验目的
了解如何依次采集、处理节点上安装的光敏传感器,温湿一体化传感器,红外线传感器的数值;基于前面实验中使用过的组件和接口,现实依次采集且串行传送节点上安装的4种传感器测量值。
二、实验内容
1.了解各传感器的组件和接口;
2.理解依次获得4种传感器的测量值的方法;
3.尝试通过SerialTest程序,直接确认串行传入的数据。
三、预备知识
了解TinyOS操作系统程序开发的原理;了解各类型传感器的控制。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7、GCC。
五、实验步骤
1.将路径切换至/opt/contrib/cc2431/Allsensors目录下,打开AllsensorsAppC源代码,查看AllsensorsC模块调用了哪些模块?
AllsensorsC,MainC,LedsC,TimerMilliC,SensirionSht11C,PhotoSensorC,UltraredSensorC,SerialActiveMessageC
2.编译Allsensors工程程序,安装至节点模块,运行程序,观察并记录采集的传感器数据(附图)。
运行cygwin
cd/opt/contrib/cc2431
cdAllsensors
编译makecc2431
首先将下载了Allsensors例题的HBE-Ubi-CC2431节点通过USB连接线与PC连接,使USBMCU开关指向RS232一侧。
运行文件,可以看到如右图所示画面。
在SerilTest上单击PortConfiguration,设定Port及Baud值。
Port是设备管理器中设定的节点的COM编号,Baud值为57600。
单击Ok按钮。
单击Ok按钮后,如果单击SerialTest程序的OpenPort按钮和BinaryTypeDisplay,可以得到如右图所示结果。
上面图中显示的数据是在Allsensors程序中存储的Seq,Temp,Humi,Photo,Ultrared值。
运行结果如下:
六、遇到的问题及解决办法
在SerilTest上单击PortConfiguration,设定Port及Baud值时。
Port是设备管理器中设定的节点的COM编号与PC不一致导致错误,进行重新设定后,再设定Baud值为57600。
单击Ok按钮,即出现预期结果。
实验八WSNs树形网络的多跳路由
一、实验目的
采集节点上的光敏传感器,温湿传感器以及红外线传感器的数值,之后,通过Tree路由构成的多跳网络,将采集的数据传给Sink节点,再由上位机程序显示。
通过该实践项目,熟悉利用节点的USN编程算法。
二、实验内容
1.按顺序调用节点的多个传感器的方法;
2.对Tree路由的理解及应用;
3.建立利用多个传感器节点的多跳路由网络。
三、预备知识
了解TinyOS操作系统程序开发的原理;了解各类型传感器的控制;了解路由算法。
四、实验设备
1.硬件环境配置
计算机:
Intel(R)Pentium(R)及以上;
内存:
1GB及以上;
实验设备:
CC2431无线传感器网络节点模块;
2.软件环境配置
操作系统:
MicrosoftWindows7ProfessionalServicePack1;
WSNs开发环境:
Cygwin、TinyOS、SDCC、SmartRFStudio7、GCC。
5、实验步骤
1.切换路径至\opt\\contrib\cc2431\Hanback_TestTree目录,打开应用程序源代码,查看Hanback_TestTreeAppM模块调用了哪些模块?
Boot,Timer,Leds,StdContr