无限传感网络实验报告_第1页
无限传感网络实验报告_第2页
无限传感网络实验报告_第3页
无限传感网络实验报告_第4页
无限传感网络实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无线传感器网络综合实验报告小组成员:陈相艺,陈思行,丁文俊,黄世杰,林泽伟实验名称:光照强度信息采集实验实验内容传感器节点采集光照强度信息(如果没有光传感器,则采集电压参数),采用静态路由(指定父节点),通过多跳传到基站节点,基站节点通过串口与PC连接,将采集到的光照强度、节点ID、采样时间存入数据库,用户可以按照节点、时间或逻辑条件查询该数据库。本小组实验稍作简化之后,将数据改为自动生成一个文本文档,然后记录在内。实验目的1、 了解如何运用节点上的传感器采集数据。2、 掌握Sense和Oscilloscope程序,实现数据采集。3、利用上课介绍的PC与节点之间的通信工具,把采集到的数据显示出来。4、了解TinyOS中的永久数据存储方法。实验原理1、基本介绍传感(Sensing)是传感器网络应用中不可或缺的部分。它涉及到两个任务:=1\*GB3①配置传感器:配置会因平台的不同而不同=2\*GB3②读传感器数据在TinyOS2.0平台上,独立的sensing应用程序不再使用像ADCControl这样的配置接口。取而代之地,它们使用标准的数据获取接口:Read,ReadStream或ReadNow,来收集传感器数据。2、Sense应用程序2.1.功能:周期性地对默认传感器采样并用LEDs显示低位2.2.Sense实现过程:=1\*GB3①Sense.nc用Boot启动周期性计时器=2\*GB3②计时器一到时间,Sense.nc就signal一个timer事件=3\*GB3③读数据是分相操作的=4\*GB3④读完用LEDs显示数据2.3.DemoSensorC组件=1\*GB3①DemoSensorC为Sense提供了Read<uint16_t>接口=2\*GB3②Sense.nc无法知道他所连接的传感器,甚至无法知道是否从传感器得到数据,因为它能导通到任何提供Read<uint16_t>接口的组件=3\*GB3③事实上DemoSensorC在不同的平台下是不一样的。平台依赖于DemoSensorC组件来定义应用程序从哪个传感器来采样。=4\*GB3④DemoSensorC组件:genericconfigurationDemoSensorC(){providesinterfaceRead<uint16_t>;}实现部分因平台不同而不同。=5\*GB3⑤DemoSensorC是一种间接获取传感器数据的方式,它会根据不同的平台实例化使用不同组件来获取传感器数据。运行Sense应用:maketelosbinstall3、Oscilloscope应用程序3.1. 功能:使传感器读来的数据在PC上可视化3.2. 运行javaGUI:typemake->./run实验环境JDK1.6forwindowsCygwinwithTinyOS2.xUltraEdit/EditPlus源程序代码importnet.tinyos.message.*;importnet.tinyos.util.*;importjava.io.*;importjava.util.*;publicclassOscilloscopeimplementsMessageListener{MoteIFmote;Datadata;Windowwindow;intinterval=Constants.DEFAULT_INTERVAL;intversion=-1;/*Mainentrypoint*/voidrun(){data=newData(this);window=newWindow(this);window.setup();mote=newMoteIF(PrintStreamMessenger.err);mote.registerListener(newOscilloscopeMsg(),this);}/*ThedataobjecthasinformedusthatnodeIdisapreviouslyunknownmote.UpdatetheGUI.*/voidnewNode(intnodeId){ if(nodeId==9){ window.newNode(nodeId); }}voidwritefile(OscilloscopeMsgomsg){ try{ intid=omsg.get_id(); if(id==9) { FileWriterf=newFileWriter("e:\\output.txt",true); BufferedWriterbuffer=newBufferedWriter(f); int[]a=omsg.get_readings(); buffer.write("id:"+id); buffer.write("数据:"); for(inti=0;i<10;i++) { buffer.write(a[i]+""); } buffer.write("时间:"); Calendartime=Calendar.getInstance(); intyear=time.get(Calendar.YEAR); intmonth=time.get(Calendar.MONTH)+1; intday=time.get(Calendar.DAY_OF_MONTH); intdayweek=time.get(Calendar.DAY_OF_WEEK); inthour=time.get(Calendar.HOUR_OF_DAY); intminute=time.get(Calendar.MINUTE); intsecond=time.get(Calendar.SECOND); buffer.write(year+"."+month+"."+day); buffer.write(""+hour+":"+minute+":"+second);buffer.newLine(); buffer.close(); } } catch(IOExceptione) { e.printStackTrace(); }}publicsynchronizedvoidmessageReceived(intdest_addr,Messagemsg){if(msginstanceofOscilloscopeMsg){OscilloscopeMsgomsg=(OscilloscopeMsg)msg;/*Updateintervalandmotedata*/periodUpdate(omsg.get_version(),omsg.get_interval());data.update(omsg.get_id(),omsg.get_count(),omsg.get_readings()); writefile(omsg);//修改的 /*InformtheGUIthatnewdatashowedup*/ window.newData();}}/*Apotentiallynewversionandintervalhasbeenreceivedfromthemote*/voidperiodUpdate(intmoteVersion,intmoteInterval){if(moteVersion>version){/*It'snew.Updateourvisionoftheinterval.*/version=moteVersion;interval=moteInterval;window.updateSamplePeriod();}elseif(moteVersion<version){/*It'sold.Updatethemote'svisionoftheinterval.*/sendInterval();}}/*TheuserwantstosettheintervaltonewPeriod.Refusebogusvaluesandreturnfalse,oracceptthechange,broadcastit,andreturntrue*/synchronizedbooleansetInterval(intnewPeriod){if(newPeriod<1||newPeriod>65535){returnfalse;}interval=newPeriod;version++;sendInterval();returntrue;}/*Broadcastaversion+intervalmessage.*/voidsendInterval(){OscilloscopeMsgomsg=newOscilloscopeMsg();omsg.set_version(version);omsg.set_interval(interval);try{mote.send(MoteIF.TOS_BCAST_ADDR,omsg);}catch(IOExceptione){window.error("Cannotsendmessagetomote");}}/*Userwantstoclearalldata.*/voidclear(){data=newData(this);}publicstaticvoidmain(String[]args){Oscilloscopeme=newOscilloscope();me.run();}}实验步骤及结果显示取两个节点,其中一个作基站,另一个作发送节点,分别将程序下载到节点。作基站节点作发送节点开始接收发送数据实验总结通过本学期的无限传感器网络的课程和实验的学习,我们对无线传感器网络有了初步的了解与认识,同时对于TinyOS系统与nesC语言也有了初步的了解。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论