版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
無線傳感器網(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版保溫材料行業(yè)人才培訓與引進合同模板3篇
- 第二章 學前兒童科學教育活動的目標課件
- 2024年度定制服裝售后服務合同范本2篇
- 2024全新學校物業(yè)管理與校園環(huán)境監(jiān)測服務合同下載3篇
- 2024年度家居用品售后服務及退換貨協(xié)議范本3篇
- 浸潤式美育體驗的跨學科融合與創(chuàng)新
- 扁平足康復治療
- 2024年外資電子元器件制造股權收購與技術合作合同3篇
- 城市防汛應急預案
- 內蒙古財經大學《物流管理》2023-2024學年第一學期期末試卷
- 送貨單(三聯(lián)針式打印)
- pdca循環(huán)在護理教學中的應用學習教案
- 鄭修1011美沙酮社區(qū)維持治療工作情
- 月之故鄉(xiāng)F調 五線譜正譜 鋼琴伴奏譜 高清晰
- 青島版一年級上冊數(shù)學知識點以及考點匯總總復習
- 第4章組合體視圖尺寸標注
- 壓裝時壓入力的計算公式(整理)
- 論文熱連軋主傳動控制系統(tǒng)常見故
- 內科護理學_肺炎
- 派爾科化工材料(啟東)有限公司年產75500噸年合成材料搬遷改造項目環(huán)境影響評價
- 匹茨堡睡眠質量指數(shù)量表(PSQI)與評分方法
評論
0/150
提交評論