無限傳感網(wǎng)絡實驗報告_第1頁
無限傳感網(wǎng)絡實驗報告_第2頁
無限傳感網(wǎng)絡實驗報告_第3頁
無限傳感網(wǎng)絡實驗報告_第4頁
無限傳感網(wǎng)絡實驗報告_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

無線傳感器網(wǎng)絡綜合實驗報告小組成員:陳相藝,陳思行,丁文俊,黃世杰,林澤偉實驗名稱:光照強度信息采集實驗實驗內容傳感器節(jié)點采集光照強度信息(如果沒有光傳感器,則采集電壓參數(shù)),采用靜態(tài)路由(指定父節(jié)點),通過多跳傳到基站節(jié)點,基站節(jié)點通過串口與PC連接,將采集到的光照強度、節(jié)點ID、采樣時間存入數(shù)據(jù)庫,用戶可以按照節(jié)點、時間或邏輯條件查詢該數(shù)據(jù)庫。本小組實驗稍作簡化之后,將數(shù)據(jù)改為自動生成一個文本文檔,然后記錄在內。實驗目的1、 了解如何運用節(jié)點上的傳感器采集數(shù)據(jù)。2、 掌握Sense和Oscilloscope程序,實現(xiàn)數(shù)據(jù)采集。3、利用上課介紹的PC與節(jié)點之間的通信工具,把采集到的數(shù)據(jù)顯示出來。4、了解TinyOS中的永久數(shù)據(jù)存儲方法。實驗原理1、基本介紹傳感(Sensing)是傳感器網(wǎng)絡應用中不可或缺的部分。它涉及到兩個任務:=1\*GB3①配置傳感器:配置會因平臺的不同而不同=2\*GB3②讀傳感器數(shù)據(jù)在TinyOS2.0平臺上,獨立的sensing應用程序不再使用像ADCControl這樣的配置接口。取而代之地,它們使用標準的數(shù)據(jù)獲取接口:Read,ReadStream或ReadNow,來收集傳感器數(shù)據(jù)。2、Sense應用程序2.1.功能:周期性地對默認傳感器采樣并用LEDs顯示低位2.2.Sense實現(xiàn)過程:=1\*GB3①Sense.nc用Boot啟動周期性計時器=2\*GB3②計時器一到時間,Sense.nc就signal一個timer事件=3\*GB3③讀數(shù)據(jù)是分相操作的=4\*GB3④讀完用LEDs顯示數(shù)據(jù)2.3.DemoSensorC組件=1\*GB3①DemoSensorC為Sense提供了Read<uint16_t>接口=2\*GB3②Sense.nc無法知道他所連接的傳感器,甚至無法知道是否從傳感器得到數(shù)據(jù),因為它能導通到任何提供Read<uint16_t>接口的組件=3\*GB3③事實上DemoSensorC在不同的平臺下是不一樣的。平臺依賴于DemoSensorC組件來定義應用程序從哪個傳感器來采樣。=4\*GB3④DemoSensorC組件:genericconfigurationDemoSensorC(){providesinterfaceRead<uint16_t>;}實現(xiàn)部分因平臺不同而不同。=5\*GB3⑤DemoSensorC是一種間接獲取傳感器數(shù)據(jù)的方式,它會根據(jù)不同的平臺實例化使用不同組件來獲取傳感器數(shù)據(jù)。運行Sense應用:maketelosbinstall3、Oscilloscope應用程序3.1. 功能:使傳感器讀來的數(shù)據(jù)在PC上可視化3.2. 運行javaGUI:typemake->./run實驗環(huán)境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("數(shù)據(jù):"); 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();}}實驗步驟及結果顯示取兩個節(jié)點,其中一個作基站,另一個作發(fā)送節(jié)點,分別將程序下載到節(jié)點。作基站節(jié)點作發(fā)送節(jié)點開始接收發(fā)送數(shù)據(jù)實驗總結通過本學期的無限傳感器網(wǎng)絡的課程和實驗的學習,我們對無線傳感器網(wǎng)絡有了初步的了解與認識,同時對于TinyOS系統(tǒng)與nesC語言也有了初步的了解。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論