第一篇:無(wú)線傳感網(wǎng)實(shí)驗(yàn)報(bào)告
Central South University
無(wú)線傳感器網(wǎng)絡(luò) 實(shí)驗(yàn)報(bào)告
學(xué)院:
班級(jí): 學(xué)號(hào): 姓名:
時(shí)間: 指導(dǎo)老師:
第一章 基礎(chǔ)實(shí)驗(yàn)
了解環(huán)境
1.1 實(shí)驗(yàn)?zāi)康?/p>
安裝 IAR 開(kāi)發(fā)環(huán)境。CC2530 工程文件創(chuàng)建及配置。源代碼創(chuàng)建,編譯及下載。1.2 實(shí)驗(yàn)設(shè)備及工具
硬件:ZX2530A 型底板及 CC2530 節(jié)點(diǎn)板一塊,USB 接口仿真器,PC 機(jī)
軟件:PC 機(jī)操作系統(tǒng) WinXP,IAR 集成開(kāi)發(fā)環(huán)境,TI 公司的燒寫軟件。
1.3 實(shí)驗(yàn)內(nèi)容
1、安裝 IAR 集成開(kāi)發(fā)環(huán)境
IAR 集成開(kāi)發(fā)環(huán)境安裝文件所在光盤目錄:物聯(lián)網(wǎng)光盤工具CD-EW8051-7601
2、ZIBGEE 硬件連接
安裝完 IAR 和 Smartrf Flash Programmer 之后,按照?qǐng)D所示方式連接各種硬件,將仿真器的 20 芯 JTAG 口連接到 ZX2530A 型 CC2530 節(jié)點(diǎn)板上,USB 連接到 PC 機(jī)上,RS-232 串口線一端連接 ZX2530A 型 CC2530 節(jié)點(diǎn)板,另一端連接 PC 機(jī)串口。
3、創(chuàng)建并配置 CC2530 的工程文件 IAR 是一個(gè)強(qiáng)大的嵌入式開(kāi)發(fā)平臺(tái),支持非常多種類的芯片。IAR 中的每一個(gè) Project,都可以擁有自己的配置,具體包括 Device 類型、堆/棧、Linker、Debugger 等。(1)新建 Workspace 和 Project 首先新建文件夾 ledtest。打開(kāi) IAR,選擇主菜單 File-> New-> Workspace 建立新的工作區(qū)域。
選擇 Project-> Create New Project-> Empty Project,點(diǎn)擊 OK,把此工程文件保存到文件夾 ledtest 中,命名為:ledtest.ewp(如下圖)。
(2)配置 Ledtest 工程
選擇菜單 Project->Options...打開(kāi)如下工程配置對(duì)話框
選擇項(xiàng) General Options,配置 Target 如下 Device:CC2530;
(3)Stack/Heap 設(shè)置:XDATA stack size:0x1FF
(4)Debugger 設(shè)置:
Driver:Texas Instruments(本實(shí)驗(yàn)為真機(jī)調(diào)試,所以選擇 TI;若其他程序要使用 IAR仿真器,可選 Simulator)
至此,針對(duì)本實(shí)驗(yàn)的 IAR 配置基本結(jié)束.4、編寫程序代碼并添加至工程
選擇菜單 File->New->File 創(chuàng)建一個(gè)文件,選擇 File->Save 保存為 main.c 將 main.c 加入到 ledtest 工程,將實(shí)驗(yàn)代碼輸入
然后選擇 Project->Rebuild All 編譯工程
編譯好后,選擇 Project->Download and debug 下載并調(diào)試程序 下載完后,如果不想調(diào)試程序,可點(diǎn)工具欄上的按鈕終止調(diào)試。
到此,程序已經(jīng)下載到了 cc2530 芯片的 flash 內(nèi),按下 ZX2530A 上的復(fù)位按鈕可看到程序的運(yùn)行效果。
LED 實(shí)驗(yàn) 2.1 實(shí)驗(yàn)?zāi)康?/p>
通過(guò) I/O 控制小燈閃爍的過(guò)程。
在 ZX2530A 型 CC2530 節(jié)點(diǎn)板上運(yùn)行自己的程序。2.2 實(shí)驗(yàn)設(shè)備及工具
硬件:ZX2530A 型底板及 CC2530 節(jié)點(diǎn)板一塊,USB 接口仿真器,PC 機(jī)
軟件:PC 機(jī)操作系統(tǒng) WinXP,IAR 集成開(kāi)發(fā)環(huán)境。2.3 實(shí)驗(yàn)結(jié)果
1.正確連接下載線和 ZX2530A 型 CC2530 節(jié)點(diǎn)板,打開(kāi) ZX2530A 型 CC2530 節(jié)點(diǎn)板電源。
2.在文件夾“基礎(chǔ)實(shí)驗(yàn)2 LED”下打開(kāi)工程 led,編譯工程,并下載到 CC2530 節(jié)點(diǎn)板。3.觀察 LED 的閃爍情況。
4.修改延時(shí)函數(shù),可以改變 LED 小燈的閃爍間隔時(shí)間。
5.重新編譯,并下載程序到 CC2530 節(jié)點(diǎn)板,觀察 LED 的閃爍情況。
答:增加延時(shí)就會(huì)發(fā)現(xiàn)小燈閃爍的頻率降低了。
串口實(shí)驗(yàn) 3.1 實(shí)驗(yàn)?zāi)康?/p>
本次實(shí)驗(yàn)將會(huì)學(xué)習(xí)如果使用串口實(shí)現(xiàn)與 PC 機(jī)的通訊。(實(shí)驗(yàn)中需要 PC 機(jī)與開(kāi)發(fā)板之間使用RS232 交叉串口連接線)。
能正確配置 CC2530 的串口。3.2 實(shí)驗(yàn)設(shè)備及工具
硬件:ZX2530A 型底板及 CC2530 節(jié)點(diǎn)板一塊,USB 接口仿真器,PC 機(jī),交叉串口線一根。
軟件:PC 機(jī)操作系統(tǒng) WinXP,IAR 集成開(kāi)發(fā)環(huán)境、串口調(diào)試助手。3.3 實(shí)驗(yàn)結(jié)果
CC2530 能與上位機(jī)通過(guò)串口正常通信
1.正確連接下載線和 ZX2530A 型 CC2530 節(jié)點(diǎn)板,用串口線正確連接上位機(jī)和 ZX2530A 型板,使能通過(guò)串口交換數(shù)據(jù)。
2.在文件夾“基礎(chǔ)實(shí)驗(yàn)5 uart”下打開(kāi)工程 uart,編譯工程,并下載到 CC2530 節(jié)點(diǎn)板。
3.通過(guò)上位機(jī)上的串口調(diào)試助手,發(fā)送數(shù)據(jù)到 cc2530,然后檢查 cc2530 回送給上位機(jī)的數(shù)據(jù)。
3.4 實(shí)驗(yàn)總結(jié)
通過(guò)這次實(shí)驗(yàn),讓我對(duì)無(wú)線傳感器網(wǎng)絡(luò)有了進(jìn)一步的了解。在無(wú)線的世界,感覺(jué)一切都是那么神奇,二一切又是那么理所當(dāng)然,記得小時(shí)候常常想,那些無(wú)線好神秘,畫面,聲音等怎么可以從一方到達(dá)另一方而可以完全不接觸。雖然今天做的實(shí)驗(yàn)都是很小很簡(jiǎn)單的,比起顯示中那些絢麗的感覺(jué)沒(méi)什么值得贊揚(yáng)的,但對(duì)于我來(lái)說(shuō),這個(gè)更有魅力,那些絢麗的我是以仰望的視角來(lái)對(duì)待,而這次我能深入它的原理去真正接觸它,以平視來(lái)看待它。
第二章 射頻實(shí)驗(yàn)
點(diǎn)對(duì)點(diǎn)射頻通信實(shí)驗(yàn) 1 實(shí)驗(yàn)?zāi)康?/p>
在 ZX2530A 型 CC2530 節(jié)點(diǎn)板上運(yùn)行相應(yīng)實(shí)驗(yàn)程序。熟悉通過(guò)射頻通信的基本方法。練習(xí)使用狀態(tài)機(jī)實(shí)現(xiàn)收發(fā)功能。2 實(shí)驗(yàn)內(nèi)容
接收節(jié)點(diǎn)上電后進(jìn)行初始化,然后通過(guò)指令 ISRXON 開(kāi)啟射頻接收器,等待接收數(shù)據(jù),直到正確接收到數(shù)據(jù)為止,通過(guò)串口打印輸出。發(fā)送節(jié)點(diǎn)上電后和接收節(jié)點(diǎn)進(jìn)行相同的初始化,然后將要發(fā)送的數(shù)據(jù)輸出到 TXFIFO 中,再調(diào)用指令 ISTXONCCA 通過(guò)射頻前端發(fā)送數(shù)據(jù)。3 實(shí)驗(yàn)設(shè)備及工具
硬件:ZX2530A 型 CC2530 節(jié)點(diǎn)板 2 塊、USB 接口的仿真器,PC 機(jī) Pentium100 以上。
軟件:PC 機(jī)操作系統(tǒng) WinXP、IAR 集成開(kāi)發(fā)環(huán)境、串口監(jiān)控程序。4 實(shí)驗(yàn)原理
發(fā)送節(jié)點(diǎn)通過(guò)串口接收用戶的輸入數(shù)據(jù)然后通過(guò)射頻模塊發(fā)送到指定的接收節(jié)點(diǎn),接收節(jié)點(diǎn)通過(guò)射頻模塊收到數(shù)據(jù)后,通過(guò)串口發(fā)送到 pc 在串口調(diào)試助手中顯示出來(lái)。如果發(fā)送節(jié)點(diǎn)發(fā)送的數(shù)據(jù)目的地址與接收節(jié)點(diǎn)的地址不匹配,接收節(jié)點(diǎn)將接收不到數(shù)據(jù)。以下為發(fā)送節(jié)點(diǎn)程序流程圖:
以下為接收節(jié)點(diǎn)流程圖: 實(shí)驗(yàn)步驟
1.打開(kāi)光盤“無(wú)線射頻實(shí)驗(yàn)2.點(diǎn)對(duì)點(diǎn)通信”雙擊 p2p.eww 打開(kāi)本實(shí)驗(yàn)工程文件。2.打開(kāi) main.c 文件下面對(duì)一些定義進(jìn)行介紹 RF_CHANNEL 此宏定義了無(wú)線射頻通信時(shí)使用的信道,在多個(gè)小組同時(shí)進(jìn)行實(shí)驗(yàn)是建議每組選擇不同時(shí)信道。但同一組實(shí)驗(yàn)中兩個(gè)節(jié)點(diǎn)需要保證在同一信道,才能正確通信。
PAN_ID 個(gè)域網(wǎng) ID 標(biāo)示,用來(lái)表示不同在網(wǎng)絡(luò),在同一實(shí)驗(yàn)中,接收和發(fā)送節(jié)點(diǎn)需要配置為相同的值,否則兩個(gè)節(jié)點(diǎn)將不能正常通信。SEND_ADDR 發(fā)送節(jié)點(diǎn)的地址 RECV_ADDR 接收節(jié)點(diǎn)的地址
NODE_TYPE 節(jié)點(diǎn)類型:0 接收節(jié)點(diǎn),1:發(fā)送節(jié)點(diǎn),在進(jìn)行實(shí)驗(yàn)時(shí)一個(gè)節(jié)點(diǎn)定義為發(fā)送節(jié)點(diǎn)用來(lái)發(fā)送數(shù)據(jù),一個(gè)定義為接收節(jié)點(diǎn)用來(lái)接收數(shù)據(jù)。
3.修改 NODE_TYPE 的值為 0,并編譯下載到節(jié)點(diǎn)板。此節(jié)以下稱為接收節(jié)點(diǎn)。
4.修改 NODE_TYPE 的值為 1,并編譯下載到另外一個(gè)節(jié)點(diǎn)板。此節(jié)點(diǎn)板以下稱為發(fā)送節(jié)點(diǎn)。
5.將接收節(jié)點(diǎn)的串口與 pc 的串口相連,并在 pc 端打開(kāi)串口調(diào)試助手,配置波特率為 115200。
6.先將接收節(jié)點(diǎn)上電,然后將發(fā)送節(jié)點(diǎn)上電。7.從串口調(diào)試助手觀察接收節(jié)點(diǎn)收到的數(shù)據(jù)。
8.修改發(fā)送數(shù)據(jù)的內(nèi)容,然后編譯并下載程序到發(fā)送節(jié)點(diǎn),然后從串口調(diào)試助手觀察收到的數(shù)據(jù)。9.修改接收節(jié)點(diǎn)的地址,然后重新編譯并下載程序到接收節(jié)點(diǎn),然后從發(fā)送節(jié)點(diǎn)發(fā)送數(shù)據(jù)觀察接收節(jié)點(diǎn)能否正確接收數(shù)據(jù)。6 實(shí)驗(yàn)數(shù)據(jù)分析及結(jié)論
發(fā)送節(jié)點(diǎn)將數(shù)據(jù)發(fā)送出去后,接收節(jié)點(diǎn)接收到數(shù)據(jù),并通過(guò)串口調(diào)試助手打印輸出。發(fā)送數(shù)據(jù)的最大長(zhǎng)度為 125(加上發(fā)送的據(jù)長(zhǎng)度和校驗(yàn),實(shí)際發(fā)送的數(shù)據(jù)長(zhǎng)度為 128 字節(jié))。7 實(shí)驗(yàn)心得
這次實(shí)驗(yàn)在原來(lái)的短距離無(wú)線通信中有所涉獵,所以應(yīng)該這個(gè)對(duì)于我們來(lái)說(shuō)還是很簡(jiǎn)單的,所以很快就做完實(shí)驗(yàn)了,就和幾個(gè)同學(xué)好好研究了一下它的原理和一些它的展望,感覺(jué)這個(gè)學(xué)科以后有很大的發(fā)展前途,作為一個(gè)物聯(lián)網(wǎng)的學(xué)生,對(duì)無(wú)線射頻技術(shù)應(yīng)該得很了解,指望它吃飯呢。這次實(shí)驗(yàn)也很簡(jiǎn)單,但是還是可以解除它的最底層的東西可以更加激發(fā)我們的興趣。第三章 ZStack組網(wǎng)實(shí)驗(yàn)
多點(diǎn)自組織組網(wǎng)實(shí)驗(yàn) 1 實(shí)驗(yàn)?zāi)康?/p>
理解 zigbee 協(xié)議及相關(guān)知識(shí)。
在 ZX2530A 型 CC2530 節(jié)點(diǎn)板上實(shí)現(xiàn)自組織的組網(wǎng)。在 ZStack 協(xié)議棧中實(shí)現(xiàn)單播通信。2 實(shí)驗(yàn)內(nèi)容
先啟動(dòng)協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器節(jié)點(diǎn)上電后進(jìn)行組網(wǎng)操作,再啟動(dòng)路由節(jié)點(diǎn)和終端節(jié)點(diǎn),路由節(jié)點(diǎn)和終端節(jié)點(diǎn)上電后進(jìn)行入網(wǎng)操作,成功入網(wǎng)后周期的將自己的短地址,父節(jié)點(diǎn)的短地址,自己的節(jié)點(diǎn) ID 封裝成數(shù)據(jù)包發(fā)送給協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器節(jié)點(diǎn)接收到數(shù)據(jù)包后通過(guò)串口傳給 PC,從 PC 上的串口監(jiān)控程序查看組網(wǎng)情況。發(fā)送數(shù)據(jù)格式為(16 進(jìn)制): FF 源節(jié)點(diǎn)(16bit)父節(jié)點(diǎn)(16bit)節(jié)點(diǎn)編號(hào) ID(8bit)例如 FF 4B 00 00 00 01,表示 01 號(hào)節(jié)點(diǎn)的網(wǎng)絡(luò)地址為 004B,發(fā)送數(shù)據(jù)到父節(jié)點(diǎn),其網(wǎng)絡(luò)地址為 00 00(協(xié)調(diào)器)。3 實(shí)驗(yàn)設(shè)備及工具
硬件:DZ2530 型 CC2530 節(jié)點(diǎn)板、USB 接口的仿真器,PC 機(jī) Pentium100 以上。
軟件:PC 機(jī)操作系統(tǒng) WinXP、IAR 集成開(kāi)發(fā)環(huán)境、ZTOOL 程序。4 實(shí)驗(yàn)原理
程序執(zhí)行的流程圖如圖 5-4 所示,在進(jìn)行一系列的初始化操作后程序就進(jìn)入事件輪詢狀態(tài)。
對(duì)于終端節(jié)點(diǎn),若沒(méi)有事件發(fā)生且定義了編譯選項(xiàng) POWER_SAVING,則節(jié)點(diǎn)進(jìn)入休眠狀態(tài)。
協(xié)調(diào)器是 Zigbee 三種設(shè)備中最重要的一種。它負(fù)責(zé)網(wǎng)絡(luò)的建立,包括信道選擇,確定唯一的PAN 地址并把信息向網(wǎng)絡(luò)中廣播,為加入網(wǎng)絡(luò)的路由器和終端設(shè)備分配地址,維護(hù)路由表等。Z-Stack 中打開(kāi)編譯選項(xiàng) ZDO_COORDINATOR,也就是在 IAR 開(kāi)發(fā)環(huán)境中選擇協(xié)調(diào)器,然后編譯出的文件就能啟動(dòng)協(xié)調(diào)器。具體工作流程是:操作系統(tǒng)初始化函數(shù) osal_start_system 調(diào)用ZDAppInit 初 始 化 函 數(shù),ZDAppInit 調(diào) 用 ZDOInitDevice 函 數(shù),ZDOInitDevice 調(diào) 用
ZDApp_NetworkInit 函數(shù),在此函數(shù)中設(shè)置 ZDO_NETWORK_INIT 事件,在 ZDApp_event_loop 任務(wù)中對(duì)其進(jìn)行處理。由 第 一 步 先 調(diào) 用 ZDO_StartDevice 啟動(dòng)網(wǎng)絡(luò)中的設(shè)備,再調(diào)用NLME_NetworkFormationRequest 函數(shù)進(jìn)行組網(wǎng),這一部分涉及網(wǎng)絡(luò)層細(xì)節(jié),無(wú)法看到源代 碼,在庫(kù)中處理。ZDO_NetworkFormationConfirmCB 和 nwk_Status 函數(shù)有申請(qǐng)結(jié)果的處理。如果成功則 ZDO_NetworkFormationConfirmCB 先執(zhí)行,不成功則 nwk_Status 先執(zhí)行。接著,在ZDO_NetworkFormationConfirmCB 函數(shù)中會(huì)設(shè)置 ZDO_NETWORK_START 事件。由于第三步,ZDApp_event_loop 任務(wù)中會(huì)處理 ZDO_NETWORK_START 事件,調(diào)用 ZDApp_NetworkStartEvt 函數(shù),此函數(shù)會(huì)返回申請(qǐng)的結(jié)果。如果不成功能量閾值會(huì)按ENERGY_SCAN_INCREMENT 增加,并將App_event_loop 任務(wù)中的事件 ID 置為 ZDO_NETWORK_INIT 然后跳回第二步執(zhí)行;如果成功則設(shè)置 ZDO_STATE_CHANGE_EVT 事件讓 ZDApp_event_loop 任務(wù)處理。對(duì) 于 終 端 或 路 由 節(jié) 點(diǎn),調(diào) 用 ZDO_StartDevice 后 將 調(diào) 用 函 數(shù) NLME_NetworkDiscoveryRequest 進(jìn)行信道掃描啟動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)的過(guò)程,這一部分涉及網(wǎng)絡(luò)層 細(xì)節(jié),無(wú)法看到源代碼,在庫(kù)中處理,NLME_NetworkDiscoveryRequest函數(shù)執(zhí)行的結(jié)果將會(huì)返回到函數(shù)ZDO_NetworkDiscoveryConfirmCB 中,該 函 數(shù) 將 會(huì) 返 回 選 擇 的 網(wǎng) 絡(luò),并 設(shè) 置 事 件ZDO_NWK_DISC_CNF,在 ZDApp_ProcessOSALMsg 中對(duì)該事件進(jìn)行處理,調(diào)用 NLME_JoinRequest加入指定的網(wǎng)絡(luò),若加入失敗,則重新初始化網(wǎng)絡(luò),若加入成功則調(diào)用 ZDApp_ProcessNetworkJoin函數(shù)設(shè)置 ZDO_STATE_CHANGE_EVT,在對(duì)該事件的處理過(guò)程 中將調(diào)用ZDO_UpdateNwkStatus函數(shù),此函數(shù)會(huì)向用戶自定義任務(wù)發(fā)送事件 ZDO_STATE_CHANGE。本實(shí)驗(yàn)在 Zstack 的事例代碼 simpleApp 修改而來(lái)。首先介紹任務(wù)初始化的概念,由于自定義任務(wù)需要確定對(duì)應(yīng)的端點(diǎn)和簇等信息,并且將這些信息在 AF 層中注冊(cè),所以每個(gè)任務(wù)都要初始化然后才會(huì)進(jìn)入 OSAL 系統(tǒng)循環(huán)。在 Z-Stack 流程圖中,上層的初始 化集中在 OSAL 初始化(osal_init_system)函數(shù)中。包括了存儲(chǔ)空間、定時(shí)器、電源管理和 各任務(wù)初始化。其中用戶任務(wù)初始化的流程如下:
用戶任務(wù)初始化流程圖
任務(wù) ID(taskID)的分配是 OSAL 要求的,為后續(xù)調(diào)用事件函數(shù)、定時(shí)器函數(shù)提供了參數(shù)。網(wǎng)絡(luò)狀態(tài)在啟動(dòng)的時(shí)候需要指定,之后才能觸發(fā) ZDO_STATE_CHANGE 事件,確定設(shè)備的類型。目的地址分配包括尋址方式,端點(diǎn)號(hào)和地址的指定,本實(shí)驗(yàn)中數(shù)據(jù)的發(fā)送使用單播方式。之后設(shè)置應(yīng) 用 對(duì) 象 的 屬 性,這 是 非 常 關(guān) 鍵 的。由 于 涉 及 很 多 參 數(shù),Z-Stack 專 門 設(shè) 計(jì) SimpleDescriptionFormat_t 這一結(jié)構(gòu)來(lái)方便設(shè)置,其中的成員如下: EndPoint,該節(jié)點(diǎn)應(yīng)用的端點(diǎn),值在 1-240 之間,用來(lái)接收數(shù)據(jù)。AppProfId,該域是確定這個(gè)端點(diǎn)支持的應(yīng)用 profile 標(biāo)識(shí)符,從 Zigbee 聯(lián)盟獲取具體的 標(biāo)識(shí)符。AppNumInClusters,指示這個(gè)端點(diǎn)所支持的輸入簇的數(shù)目。pAppInClusterList,指向輸入簇標(biāo)識(shí)符列表的指針。AppNumOutClusters,指示這個(gè)端點(diǎn)所支持的輸出簇的數(shù)目。pAppOutClusterList,指向輸出簇標(biāo)識(shí)符列表的指針。
本實(shí)驗(yàn) profile 標(biāo)識(shí)符采用默認(rèn)設(shè)置,輸入輸出簇設(shè)置為相同 MY_PROFILE_ID,設(shè) 置完成后,調(diào)用 afRegister 函數(shù)將應(yīng)用信息在 AF 層中注冊(cè),使設(shè)備知曉該應(yīng)用的存在,初 始化完畢。一旦初始化完成,在進(jìn)入 OSAL 輪詢后 zb_HandleOsalEvent 一有事件被觸發(fā),就會(huì)得到及時(shí)的處理。事件號(hào)是一個(gè)以宏定義描述的數(shù)字。系統(tǒng)事件(SYS_EVENT_MSG)是強(qiáng)制的,其中包括了幾個(gè)子事件的處理。ZDO_CB_MSG 事件是處理 ZDO 的響應(yīng),KEY_CHANGE 事件 處理按鍵(針對(duì) TI 官方的開(kāi)發(fā)板),AF_DATA_CONFIRM_CMD 則是作為發(fā)送一個(gè)數(shù)據(jù)包 后的確認(rèn),AF_INCOMING_MSG_CMD是接收到一個(gè)數(shù)據(jù)包會(huì)產(chǎn)生的事件,協(xié)調(diào)器在收到 該事件后調(diào)用函數(shù) p2p_test_MessageMSGCB,將接收到的數(shù)據(jù)通過(guò) HalUARTWrite 向串口 打印輸出。ZDO_STATE_CHANGE 和網(wǎng)絡(luò)狀態(tài)的改變相關(guān)在此事件中若為終端或路由節(jié)點(diǎn) 則發(fā)送用戶自定義的數(shù)據(jù)幀:FF 源節(jié)點(diǎn)短地址(16bit,調(diào)用 NLME_GetShortAddr()獲得)、父節(jié)點(diǎn)短地址(16bit,調(diào)用 NLME_GetCoordShortAddr())、節(jié)點(diǎn)編號(hào) ID(8bit,為長(zhǎng)地址的最低字節(jié),調(diào)用 NLME_GetExtAddr()獲得,在啟動(dòng)節(jié)點(diǎn)前應(yīng)先用 RFProgrammer 將非 0XFFFFFFFFFFFFFFFF 的長(zhǎng)地址寫到 CC2530 芯片存放長(zhǎng)地址的寄存器中),協(xié)調(diào)器不做任何處理,只是等待數(shù)據(jù)的到來(lái)。終端和路由節(jié)點(diǎn)在用戶自定義的事件 MY_REPORT_EVT中 發(fā) 送 數(shù) 據(jù) 并 啟 動(dòng) 定 時(shí) 器 來(lái) 觸 發(fā) 下 一 次 的 MY_REPORT_EVT 事件,實(shí)現(xiàn)周期性的發(fā)送數(shù)據(jù)(發(fā)送數(shù)據(jù)的周期由宏定義 REPORT_DELAY 確定)。5 實(shí)驗(yàn)步驟
1.打開(kāi)工程文件夾協(xié)議棧實(shí)驗(yàn)2.多點(diǎn)自組網(wǎng)ProjectszstackSamplesSimpleAppCC2530DB下的工程文件 SimpleApp.eww。2.選擇工程
編譯,生成協(xié)調(diào)器代碼,并下載到 ZX2530A 開(kāi)發(fā)板。此節(jié)點(diǎn)為協(xié)調(diào)器節(jié)點(diǎn)。3.選擇工程
編譯,生成終端節(jié)點(diǎn)代碼,并下載到 ZX2530 開(kāi)發(fā)板。此節(jié)點(diǎn)為終端節(jié)點(diǎn)。4.選擇工程
編譯,生成路由器節(jié)點(diǎn)代碼,并下載到 ZX2530 開(kāi)發(fā)板,此節(jié)點(diǎn)為路由器節(jié)點(diǎn)。5.用串口線將協(xié)調(diào)器節(jié)點(diǎn)與 pc 連接起來(lái),在 pc 端打開(kāi) ZTOOL 程序。(ZTOOL 程序在 zstack 安裝后自動(dòng)安裝)6.開(kāi)啟 ZX2530A 型 CC2530 節(jié)點(diǎn)板電源。7.在 ZTOOL 程序中觀察組網(wǎng)結(jié)果。6 實(shí)驗(yàn)數(shù)據(jù)分析及結(jié)論
由接收數(shù)據(jù)的 DebugString 可以看出圖中有兩個(gè)節(jié)點(diǎn)加入了網(wǎng)了,其中一個(gè)節(jié)點(diǎn)的 DEVID 是21,網(wǎng)絡(luò)地址:4f07,父節(jié)點(diǎn)地址是 0 即協(xié)調(diào)器。另外一個(gè)節(jié)點(diǎn)的 DEVID 是 11,網(wǎng)絡(luò)地址:A6F7,父節(jié)點(diǎn)地址是 4f07 即上一節(jié)點(diǎn)。實(shí)驗(yàn)中可以試著改變不同節(jié)點(diǎn)的位置,然后通過(guò) ZTOOL 看看組網(wǎng)結(jié)果有什么不同。7 實(shí)驗(yàn)心得
這次實(shí)驗(yàn)感覺(jué)比原來(lái)的更有趣,可以在手機(jī)上看到無(wú)線連接的組網(wǎng),所以和同學(xué)們很有興趣,雖然只有幾個(gè)分支,但是幾個(gè)的通信還是可以清晰可見(jiàn)的。同時(shí)也讓我們看到了大型android手機(jī)的模樣,以前都是看成品,這次看的是半成品,感覺(jué)很有意思。在組網(wǎng)的過(guò)程中,遇到了一些問(wèn)題,剛開(kāi)始不知道如何解決,就問(wèn)同學(xué)和老師,有的是線的問(wèn)題,由于實(shí)驗(yàn)器材本身的問(wèn)題,導(dǎo)致一些松動(dòng)之類的,但最后實(shí)驗(yàn)總算是順利的完成了。在這感謝幫助我的同學(xué)和老師。第四章 傳感器網(wǎng)絡(luò)綜合實(shí)驗(yàn)
Zigbee 節(jié)點(diǎn)控制程序設(shè)計(jì) 1.1 協(xié)調(diào)器節(jié)點(diǎn)工程
SimpleCoordinator 即協(xié)調(diào)器工程,如下圖
協(xié)調(diào)器的應(yīng)用功能代碼實(shí)現(xiàn)文件是 SimpleCoordinator.c 在工程文件夾 App 目錄下具體實(shí)現(xiàn)可參考源碼。按下鍵盤上的 F7 即個(gè)編譯協(xié)調(diào)器工程,編譯好之后可將代碼下載到協(xié)調(diào)器節(jié)點(diǎn)板。1.2 人體紅外傳感器節(jié)點(diǎn)工程
SimpleInfrared 即人體紅外傳感器工程,如下圖
人體紅外傳感器節(jié)點(diǎn)應(yīng)用控制代碼可參考工程目錄 App 下 SimpleInfrared.c 1.3 超聲波距離傳感器節(jié)點(diǎn)工程 SimpleDistanceSensor 即超聲波距離傳感器工程,如下圖
超聲波距離傳感器節(jié)點(diǎn)實(shí)現(xiàn)代碼可參考工程目錄 App 下
SimpleDistanceSensor.c。超聲波測(cè)距驅(qū)動(dòng)代碼請(qǐng)參考 ys-srf05.c 文件。
1.4 濕度傳感器節(jié)點(diǎn)工程
SimpleHumiditySensor 即濕度傳感器節(jié)點(diǎn)工程,如下圖
濕度傳感器應(yīng)用控制代碼可參考工程目錄 App 下SimpleHumiditySensor.c 文件,其濕度的測(cè)量驅(qū)動(dòng)可參考溫濕度傳感器驅(qū)動(dòng) dht11.c 文件
平臺(tái)控制操作 2.1 啟動(dòng)程序
1)安裝好程序后,打開(kāi) android 應(yīng)用程序面板,找到圖標(biāo) 點(diǎn)擊進(jìn)入程序。
2)直接點(diǎn)擊登錄按鈕,進(jìn)入到系統(tǒng)主界面。第一次進(jìn)入是系統(tǒng)會(huì)自動(dòng)連接到 zigbee 網(wǎng)關(guān)然后去搜索 zigbee 網(wǎng)絡(luò),默認(rèn)的 zigbee 網(wǎng)關(guān)地址為本機(jī) IP 地址,即 127.0.0.1。
3)如果你的 zigbee 網(wǎng)關(guān)地址不是本機(jī),則需要修改默認(rèn)網(wǎng)關(guān)地址。通過(guò)按下系統(tǒng)‘菜單’按鍵,會(huì)出現(xiàn)如下菜單,選擇‘設(shè)置’菜單,可以設(shè)置默認(rèn)的 zigbee 網(wǎng)關(guān)。如下圖:
4)設(shè)置好網(wǎng)關(guān)后,下次啟動(dòng)程序就不用再次設(shè)置了。2.2 搜索網(wǎng)絡(luò)
如果 zigbee 網(wǎng)關(guān)設(shè)置好,通過(guò)菜單選擇‘搜索網(wǎng)絡(luò)’就可以搜索 zigbee 網(wǎng)絡(luò)了,正常情況下至少會(huì)有一個(gè)協(xié)調(diào)器節(jié)點(diǎn),如果程序提示搜索不到網(wǎng)絡(luò),請(qǐng)檢查你的網(wǎng)絡(luò)連接和協(xié)調(diào)器是否正確連接。如果 zigbee 網(wǎng)絡(luò)上還有其它節(jié)點(diǎn),可以在網(wǎng)絡(luò) TOP 圖上一起顯示出來(lái)。如下,是一個(gè)zigbee 網(wǎng)絡(luò) TOP 圖:
圖中共有 7 個(gè)節(jié)點(diǎn),其中最上面那個(gè)是協(xié)調(diào)器節(jié)點(diǎn),其它為傳感器節(jié)點(diǎn),其中地址為 58229的燈光設(shè)備帶有路由功能,屬路由器節(jié)點(diǎn),它下面有兩個(gè)子節(jié)點(diǎn),分別為人體傳感器和溫度傳感器。2.3 傳感器節(jié)點(diǎn)操作
通過(guò)搜索到的 zigbee 網(wǎng)絡(luò) TOP 圖,可以了解整個(gè) zigbee 網(wǎng)絡(luò)的節(jié)點(diǎn)分布情況。通過(guò)點(diǎn)擊屏幕上相應(yīng)節(jié)點(diǎn)的圖標(biāo)可以進(jìn)入相關(guān)節(jié)點(diǎn)的控制和監(jiān)控操作。
下圖為溫度傳感器的監(jiān)控界面:
其它界面讀者可以自行實(shí)驗(yàn),并且去了解。
實(shí)驗(yàn)心得
四次實(shí)驗(yàn)完成了,雖然不能說(shuō)自己學(xué)到了很多吧,至少對(duì)這里面的一些操作有了一定的了解,本科生本來(lái)就是為了讓我們擴(kuò)充視角,知道更多的東西。無(wú)線傳感網(wǎng)絡(luò)真的感覺(jué)很神奇,也很有發(fā)展前景,這些高尖端的技術(shù),現(xiàn)在存在一些瓶頸,如果能夠突破,對(duì)物聯(lián)天下這個(gè)目標(biāo)將前進(jìn)了一大步,如果能夠把傳感器節(jié)點(diǎn)造的更節(jié)能,更低廉,更小巧,將會(huì)實(shí)現(xiàn)全球各個(gè)地方的實(shí)時(shí)數(shù)據(jù)采集,就可以得到更多的信息,為以后生產(chǎn)生活帶來(lái)巨大的改變。在收集的數(shù)據(jù)肯定是海量的,將需要其他學(xué)科的支撐,一起結(jié)合起來(lái),實(shí)現(xiàn)真的物物相聯(lián)。
第二篇:無(wú)線傳感網(wǎng)外文翻譯
無(wú)線傳感網(wǎng)絡(luò)?
1、簡(jiǎn)介
無(wú)線傳感器網(wǎng)絡(luò)是由一些節(jié)點(diǎn)組織成的一個(gè)相互協(xié)作的網(wǎng)絡(luò)。每個(gè)節(jié)點(diǎn)都具有處理能力(有一個(gè)或多個(gè)微控制器,CPU或DSP芯片),還可包括多種類類型的存儲(chǔ)器(程序,數(shù)據(jù)和閃存),一個(gè)射頻收發(fā)器(能常是用一個(gè)全方位的定向天線),電源(如電池和太陽(yáng)能電池),和各種傳感器、執(zhí)行器。這些節(jié)點(diǎn)被部署在一個(gè)特定的環(huán)境中后,它們通常通過(guò)自組織的形式,實(shí)現(xiàn)無(wú)線通信??梢灶A(yù)見(jiàn),由數(shù)千個(gè)甚至上萬(wàn)個(gè)這樣的節(jié)點(diǎn)組成的系統(tǒng)將會(huì)出現(xiàn),并將改變我們的生活和工作方式。
當(dāng)前,無(wú)線傳感器網(wǎng)絡(luò)的部署步伐正在加快。這是很合理的期望:10-15年內(nèi),能夠通過(guò)互聯(lián)網(wǎng)訪問(wèn)的無(wú)線傳感器網(wǎng)絡(luò)將覆蓋整個(gè)世界。這可以被視為互聯(lián)網(wǎng)變成了一個(gè)物理網(wǎng)絡(luò)。這一新技術(shù)令人興奮,在許多領(lǐng)域都具有無(wú)限潛力,包括醫(yī)療,軍事,交通,娛樂(lè),危機(jī)管理,國(guó)土防御和智能空間等。
由于無(wú)線傳感器網(wǎng)絡(luò)是一種分布式實(shí)時(shí)系統(tǒng),一個(gè)自然的問(wèn)題是,有多少已有的分布式和實(shí)時(shí)系統(tǒng)解決方案可用于這一些新的系統(tǒng)?不幸的是,很少先前的成果可以應(yīng)用,因此在系統(tǒng)的所有領(lǐng)域都需要新的解決方案,主要的原因是,以先前的工作為基礎(chǔ)的假設(shè)發(fā)生了巨大變化。過(guò)去的分布式系統(tǒng)研究的假設(shè)是:系統(tǒng)是有線的,電源是無(wú)限的,非實(shí)時(shí)的,有用戶界面(如屏幕和鼠標(biāo)),有一組固定的資源,將系統(tǒng)中的節(jié)點(diǎn)看得很重要,并且是與位置無(wú)關(guān)的。相比之下,無(wú)線傳感系統(tǒng)是有線的,電源也比較稀缺,實(shí)時(shí)的,使用傳感器和執(zhí)行器作為接口,擁有的資源也會(huì)動(dòng)態(tài)改變,總體行為很重要,位置信息也很關(guān)鍵。許多無(wú)線傳感器網(wǎng)絡(luò)還使用了最低端的設(shè)備,這進(jìn)一步的限制了對(duì)過(guò)去方案的重用。
本章概述了無(wú)線傳感器網(wǎng)絡(luò)的一些關(guān)鍵領(lǐng)域和無(wú)線傳感網(wǎng)絡(luò)的研究情況。在介紹過(guò)程中,我們使用工作中的具體例子來(lái)展示發(fā)展的狀態(tài)并顯示這些解決方案與分布式系統(tǒng)的解決方案的不同之處。特別地,我們討論了MAC層(第2節(jié)),路由(第3節(jié)),節(jié)點(diǎn)定位(第4節(jié)),時(shí)鐘同步(第5節(jié)),和電源管理(第6節(jié))。為了展示這一技術(shù)的整體狀況,我們又簡(jiǎn)單的討論了兩個(gè)當(dāng)前的系統(tǒng)。在第8節(jié)中,我們做了總結(jié)。
2、MAC 介質(zhì)訪問(wèn)控制協(xié)議(MAC)通過(guò)共用信道協(xié)調(diào)行動(dòng)。最常見(jiàn)的解決方案是基于沖突的。一個(gè)普通的基于沖突的策略是,讓一個(gè)節(jié)點(diǎn)傳輸信息來(lái)探測(cè)信道是否忙,如果不忙則傳輸該信息,忙則等待并且稍后再次嘗試。發(fā)生沖突后,節(jié)點(diǎn)會(huì)等待一段隨機(jī)的時(shí)間,避免再次沖突。許多無(wú)線介質(zhì)訪問(wèn)控制協(xié)議也有休眠模式,進(jìn)入休眠模式后,在一個(gè)給定的時(shí)間內(nèi),節(jié)點(diǎn)不再傳輸和接收數(shù)據(jù)包,以節(jié)省能源。還有許多以些此機(jī)制為基礎(chǔ)的變化形式。? 作者:John A.Stankovic Department of Computer Science University of Vaginal.出處:WDS'08 Proceedings of Contributed Papers, Part III, 19–23, 2008.一般來(lái)說(shuō),大多數(shù)MAC協(xié)議都是對(duì)一般情況,或者特殊通信模式和工作負(fù)荷,而進(jìn)行的優(yōu)化。然而,一個(gè)無(wú)線傳輸網(wǎng)絡(luò)具有更多的集中的要求,包括:本地的單播和廣播,通信通常是從節(jié)點(diǎn)到基站(sink)的(大多數(shù)通信因此是朝一個(gè)方向的),通信具有周期性和間歇性,并且作為一個(gè)主要因素必須考慮能量的消耗。一個(gè)有效的無(wú)線傳感網(wǎng)絡(luò)的MAC協(xié)議必須消耗的能量少,避免沖突,實(shí)現(xiàn)所需代碼和內(nèi)存少,能有效的為一應(yīng)用程序所用,能適應(yīng)不斷變化的無(wú)線電頻率和網(wǎng)絡(luò)條件。
基中一個(gè)比較好的無(wú)線傳感網(wǎng)絡(luò)的MAC的例子是 B-MAC,它是高度可配置的,并且能用很少的代碼量和內(nèi)存量實(shí)現(xiàn)。它還有一個(gè)接口,允許你選擇各種功能,僅當(dāng)那些功能為某一應(yīng)用程序特需的時(shí)候。B-MAC協(xié)議包括四個(gè)主要部部分:空閑信道評(píng)估(CCA),包重傳,鏈路層的確認(rèn),低功耗的監(jiān)聽(tīng)。當(dāng)信道空閑時(shí),B-MAC的CCA用一個(gè)加權(quán)的變化的樣本平均值來(lái)評(píng)估背景噪音,以能更好檢測(cè)有有效數(shù)據(jù)包和沖突。包重傳時(shí)間是可配置的,通常從一個(gè)線性范圍值中選取,而典型的其他分布式系統(tǒng)使用的是一個(gè)指數(shù)重傳策略。對(duì)于典型的在無(wú)線傳感器網(wǎng)絡(luò)中發(fā)現(xiàn)的通信模式而言,這將減少延遲和工作量。B-MAC也支持一個(gè)包一個(gè)包的鏈路層確認(rèn)機(jī)制。這樣僅僅重要的包需要消耗額外的代價(jià)。低功耗監(jiān)聽(tīng)機(jī)制用于周期性蘇醒和休眠的節(jié)點(diǎn)中。當(dāng)蘇醒時(shí),它監(jiān)聽(tīng)一段足夠長(zhǎng)的時(shí)間來(lái)評(píng)估是否需要繼續(xù)保持醒的狀態(tài),或者轉(zhuǎn)回到休眠模式。該方案節(jié)約了大量的能量。許多MAC協(xié)議使用請(qǐng)求發(fā)送(RTS)和清除發(fā)送(CTS)的交互方式。在選定的數(shù)據(jù)包數(shù)量級(jí)比較大的網(wǎng)狀網(wǎng)絡(luò)中(1000字節(jié)),這個(gè)效果很好。然而,當(dāng)包的大小很小時(shí),為建立一個(gè)包的傳輸所需RTS-CTS開(kāi)銷將變得不可接受,因此,不能用RTS-CTS 策略。
最近,已出現(xiàn)一些支持多信道無(wú)線傳感網(wǎng)絡(luò)的的研究工作。在這些系統(tǒng)中,擴(kuò)展MAC協(xié)議為多信道MAC協(xié)議是必要的。其中的一個(gè)協(xié)議就是MMSN[36]。這些協(xié)議必須支持像B-MAC協(xié)議樣的協(xié)議的所有特征,但是也必須為每一次傳輸確定頻率。因此,多頻MAC協(xié)議分為兩個(gè)階段:信道分配和訪問(wèn)控制。MMSN的細(xì)節(jié)是相當(dāng)復(fù)雜的,在此沒(méi)有做過(guò)多的描述。另一方面,我們期望未來(lái)有更多的無(wú)線傳感器網(wǎng)絡(luò)采用多信道(頻率)。MAC協(xié)議的優(yōu)點(diǎn)包括提供了更大的包吞吐量,甚至在由競(jìng)爭(zhēng)網(wǎng)絡(luò)和商業(yè)設(shè)備像移動(dòng)電話和微波爐引起的頻譜擁擠的情況下也能傳輸。
3、路由
多跳路由是無(wú)線傳感網(wǎng)絡(luò)所需的關(guān)鍵服務(wù)。下因?yàn)槿绱?,出現(xiàn)了大量的這方面原工作。互聯(lián)網(wǎng)和移動(dòng)自組網(wǎng)(MANET)路由技術(shù),在無(wú)線傳感器網(wǎng)絡(luò)中,不能出色發(fā)揮。互聯(lián)網(wǎng)路由假定具有高可靠的有線連接,因此包錯(cuò)誤是很少的;在無(wú)線傳感器網(wǎng)絡(luò)中這點(diǎn)不成立。許多MANET路由解決方案依賴于相鄰點(diǎn)間的對(duì)稱的聯(lián)系(例如,如果節(jié)點(diǎn)A可以可靠的到達(dá)節(jié)點(diǎn)B,則B可以到達(dá)A。這些差異使得新的解決方案的發(fā)明和部署很必要。
對(duì)于以自組形式部署的無(wú)線傳感器網(wǎng)絡(luò),路由策略往往從發(fā)現(xiàn)鄰居節(jié)點(diǎn)開(kāi)始。節(jié)
點(diǎn)巡回發(fā)送信息(包)并且建立本立路由表。這些表包括了相鄰節(jié)點(diǎn)的ID和位置的最少信息。這意味著節(jié)點(diǎn)必須先于節(jié)點(diǎn)發(fā)現(xiàn)之前,知道它們的地理信息。在這些表中的其他典型信息包括節(jié)點(diǎn)的剩余能量,能過(guò)這個(gè)節(jié)點(diǎn)的延遲,鏈路的質(zhì)量評(píng)介。
一旦表在在,在大多數(shù)路由算法中,信息從源位置傳導(dǎo)到目標(biāo)地址,都是基于幾何坐標(biāo),而不是ID。一個(gè)典型的像這樣工作的路由算法就是GF(Geograpic Forwarding)。
在GF中,一個(gè)節(jié)點(diǎn)知曉它的位置,并且正在被路由的信息包含了目標(biāo)地址。此節(jié)點(diǎn)然后,通過(guò)幾何的距離公式,計(jì)算哪一個(gè)相鄰節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)最靠近。它就將這信息傳輸?shù)较乱惶?。在各種GF的變體中,節(jié)點(diǎn)也可以考慮延遲,鏈接的可靠性和剩余的能量。
其他重要的無(wú)線傳感網(wǎng)絡(luò)的路由范例是定向擴(kuò)散[11]。該路由方案集成了路由,查詢和數(shù)據(jù)匯總。此處,散發(fā)一個(gè)查詢來(lái)詢問(wèn)對(duì)遠(yuǎn)程節(jié)點(diǎn)來(lái)的數(shù)據(jù)的興趣。擁用適合于被請(qǐng)求的數(shù)據(jù)的節(jié)點(diǎn)就回復(fù)以一屬性值對(duì)。此屬性值對(duì),基于梯度,向著請(qǐng)求者的方向延伸,它隨著請(qǐng)求的發(fā)送和回應(yīng)而建立和更新。沿著從源到目標(biāo)的路徑,數(shù)據(jù)可以被聚合,以減少通信量。數(shù)據(jù)也可以經(jīng)過(guò)多條路徑以增加路由的穩(wěn)健性。
除了剛才展示的的無(wú)線傳感網(wǎng)絡(luò)路由的基本的特性外,還有許多關(guān)鍵問(wèn)題包括: ? 可靠性
? 與喚醒/睡眠計(jì)劃的整合 ? 單播,組播和任播語(yǔ)義 ? 實(shí)時(shí) ? 移動(dòng)性 ? 空洞 ? 安全性和 ? 擁塞
可靠性:由于信息要的傳輸要經(jīng)過(guò)多跳,各個(gè)鏈接的高可靠性就顯得得重要,否則信息傳過(guò)整個(gè)網(wǎng)絡(luò)的可能性將令人無(wú)法接受的低。為了確保鏈接的可靠性,使用一些指標(biāo)做了許多重要的工作,像接收信號(hào)強(qiáng)度,基于錯(cuò)誤的鏈接質(zhì)量指標(biāo),包投遞率等。重要的經(jīng)驗(yàn)證據(jù)表明,包投遞率是最好的度量,但是獲取這一數(shù)據(jù)代價(jià)是昂貴的。實(shí)證數(shù)據(jù)也表明許多在無(wú)線傳感器網(wǎng)絡(luò)中的鏈接是不對(duì)稱的,也就是說(shuō),節(jié)點(diǎn)A可以成功傳遞一條信息到節(jié)點(diǎn)B,反向的從B到A的鏈接可能不可用。非對(duì)稱的鏈接是導(dǎo)致MANET路由算法像DSR和AODV不能很好的用于WSN的原因,因?yàn)檫@些協(xié)議從源向目的地發(fā)送一條詢問(wèn)信息,然后利用反向的路徑獲取確認(rèn)信息。反向路徑,由于WSN中的不對(duì)稱性發(fā)生率很高,不太可靠。
與喚醒/睡眠的整合:為了節(jié)約能量,許多WSN將點(diǎn)置入睡眠狀態(tài)。顯然,一個(gè)醒著的節(jié)點(diǎn)里應(yīng)當(dāng)選擇一個(gè)睡眠狀態(tài)的節(jié)點(diǎn)作為它的下一跳(除非它先喚醒該節(jié)點(diǎn))。
單播,組播和任播語(yǔ)義:正如上面提到的,在大多數(shù)情況下一個(gè)WSN將一條信息路由到一個(gè)地理的目的地。當(dāng)它到達(dá)目的的,會(huì)發(fā)生什么呢?有幾種可能性。首先,此信息也包括一個(gè)特定單播節(jié)點(diǎn)作為目標(biāo),或者語(yǔ)義也可能是一個(gè)最接近地理終點(diǎn)的節(jié)點(diǎn)會(huì)成為單播節(jié)點(diǎn)。第二,語(yǔ)義可能是,在一個(gè)目標(biāo)地址周圍區(qū)域中的所有節(jié)點(diǎn)都接受到這一信息,這是一區(qū)域多播。第三,在目標(biāo)區(qū)域中的任何節(jié)點(diǎn)都接受信息,稱為任播。SPEED[5]協(xié)議就支持這三種語(yǔ)義。也常有洪泛(多播)到整個(gè)網(wǎng)絡(luò)的需要。存在許多高效的洪泛路由策略。
時(shí)實(shí)性:對(duì)于一些應(yīng)用程序,信息必須在一定期限到達(dá)目的地。由于在WSN中存在高度不穩(wěn)定性,要開(kāi)發(fā)一個(gè)總是有保證的路由算法很困難。許多協(xié)議如SPEED和RAP用了一個(gè)速度的概念來(lái)將包傳輸進(jìn)行優(yōu)先次序的化分。速度是一個(gè)很好的度量標(biāo)準(zhǔn),它聯(lián)合了時(shí)間期限和一條信息必須傳輸?shù)木嚯x。
移動(dòng)性:路由將會(huì)變得復(fù)雜,如果信息源和目的都在移動(dòng)的話。解決方法包括更新本地相鄰路由表或者確定代理接點(diǎn),由它負(fù)責(zé)跟蹤節(jié)點(diǎn)所在位置。一給定節(jié)點(diǎn)的代理節(jié)點(diǎn)也可能改變,當(dāng)一個(gè)節(jié)點(diǎn)越來(lái)越遠(yuǎn)離它的初如位置時(shí)。
空洞:因?yàn)閃SN節(jié)點(diǎn)傳輸范圍有限,對(duì)于一些節(jié)點(diǎn),在路由路徑上,在一條信息應(yīng)該經(jīng)過(guò)的方向上,沒(méi)有轉(zhuǎn)發(fā)節(jié)點(diǎn)。像GPSR這樣的協(xié)議,通過(guò)選擇一些不在正確方向的節(jié)點(diǎn),以圖找到一條繞過(guò)空洞的路徑,解決了這一問(wèn)題。
安全性:如果對(duì)手存在,他們可以干各種各樣的對(duì)路由算法的攻擊,包括選擇性轉(zhuǎn)發(fā),黑洞,重播,蟲(chóng)洞和拒絕服務(wù)攻擊。不幸的是,幾乎所有的路由算法都忽略了安全性并且很容易 受到這些攻擊。像SPINS這樣的協(xié)議開(kāi)始解決安全路由的問(wèn)題。
擁塞:今天,許多WSN通信具有周期性或很少通信。擁塞似乎不是一個(gè)問(wèn)題對(duì)于這樣的網(wǎng)絡(luò)來(lái)說(shuō)。然而,擁塞對(duì)于有更多要求的WSN來(lái)說(shuō)將會(huì)成為問(wèn)題,對(duì)于一些處理音頻,視頻和處理多個(gè)基站的大系統(tǒng)來(lái)說(shuō),這一問(wèn)題更加突出。甚至在只有一個(gè)基站的系統(tǒng)中,在基站附近的擁塞也會(huì)是一個(gè)嚴(yán)重的問(wèn)題,因?yàn)樗缘耐ㄐ啪奂诨?。解決方案使用背壓力,減少源節(jié)點(diǎn)傳輸率,扔掉不太重要的信息,并能過(guò)調(diào)度避免盡可能多的沖突,它們只會(huì)加劇擁塞問(wèn)題。
4、節(jié)點(diǎn)定位
節(jié)定定位是確定在系統(tǒng)中的每個(gè)節(jié)點(diǎn)的地理位置的問(wèn)題。定位問(wèn)題對(duì)于WSN來(lái)說(shuō)是必須解決的,最基本、最困難的問(wèn)題之一。區(qū)域是許多參數(shù)和要求的函數(shù),使得它非常的復(fù)雜。例如,要考慮的問(wèn)題包括:額外的定位硬件的成本,信標(biāo)(自己自己位置的節(jié)點(diǎn))存在嗎,如果在在的話,有多少個(gè),它他的通信范圍是多大,需要的定位精度是多少,系統(tǒng)是室內(nèi)的還是室外的,節(jié)點(diǎn)之間是否有視線,它是一個(gè)二維的、還是三位的定位問(wèn)題,能量預(yù)算是怎樣的(信息數(shù)量),需要多長(zhǎng)時(shí)間來(lái)定位,時(shí)鐘是同步的嗎,系統(tǒng)處在友好還是敵對(duì)區(qū)域,有什么錯(cuò)誤的假設(shè)正在作出,系統(tǒng)對(duì)象是否受到安全攻擊。
針對(duì)某些要求和問(wèn)題的難題可輕易的解決。如果成本和外形尺寸不是主要的問(wèn)題并且米級(jí)別的精度是可接受的,那么對(duì)于戶外系統(tǒng),節(jié)點(diǎn)裝備上GPS就可以解決問(wèn)題。如果系統(tǒng)需要一次一個(gè)節(jié)點(diǎn)的手動(dòng)方式部署,那么一個(gè)由部署者攜帶的簡(jiǎn)單GPS節(jié)點(diǎn)能夠定位每一個(gè)節(jié)點(diǎn),依次地,能過(guò)一被叫做步行GPS的方案(Walking GPS)。盡管簡(jiǎn)單,這一方案很精巧,在對(duì)每一個(gè)節(jié)點(diǎn)的定位中避免了手動(dòng)操作。
許多其他的在WSN中的定位方案要么是基于范圍,要么與范圍無(wú)關(guān)?;诜秶臋C(jī)制利用各種技術(shù)首先確定節(jié)點(diǎn)之間的距離(范圍),然后利用幾何定理計(jì)算位置。為了測(cè)定距離,需要采用額外的硬件,比如用來(lái)偵測(cè)聲波和無(wú)線電波到達(dá)的時(shí)間差異。此差異可以被轉(zhuǎn)換為距離的度量。在范圍無(wú)關(guān)的機(jī)制中,距離不是直接測(cè)定的,但是我們使用跳數(shù)。一旦跳數(shù)被確定了,節(jié)點(diǎn)之間的距離可通過(guò)每跳平均距離來(lái)估計(jì),然后利用幾何定律被來(lái)計(jì)算位置。范圍無(wú)關(guān)的方案沒(méi)有基于范圍的方案精確,并且常需要更多的信息。然而它們不要求每個(gè)節(jié)點(diǎn)具備額外的硬件。
幾個(gè)早期的定位方法包括Centroid[1]和APIT[6]。每一個(gè)這類方法解決了基于特定建設(shè)的某一定位問(wèn)題。兩個(gè)最近有趣的方法是SpotLight和Radio Interferometric Geolocation [20]。聚光燈將許多的定位代碼和開(kāi)銷移到中心的一個(gè)激光設(shè)備上。Spotlight需要光線和時(shí)鐘同步不。Radio interferometric geolocation 使用一種新奇的網(wǎng)內(nèi)處理技術(shù),它依靠節(jié)點(diǎn)同時(shí)發(fā)出頻率稍微不同的無(wú)線電波來(lái)完成。這一方案是針對(duì)一些部署中的多路問(wèn)題的,要求許多信息。當(dāng)前這兩種方法都提供了高達(dá)厘米級(jí)的精度。
5時(shí)鐘同步
在一個(gè)WSN中,每個(gè)節(jié)點(diǎn)的時(shí)鐘在一個(gè)小的量?jī)?nèi)應(yīng)當(dāng)相同,并且保持下去。由于時(shí)鐘隨著時(shí)間漂移,他們必須周期性地重新財(cái)步,并且在某些情況下,需要非常高的精確度時(shí),在同步期間對(duì)時(shí)鐘漂移的計(jì)數(shù)很重要。
時(shí)鐘同步由于很多原因是很重要的。當(dāng)一個(gè)事件在WSN中發(fā)生時(shí),知道它在哪里,什么時(shí)間發(fā)生是很必要的。時(shí)鐘也常用于許多系統(tǒng)和應(yīng)用程序任務(wù)。例如,睡眠/蘇醒的安排,一些定位算法,傳感器融合就是一些需要依靠時(shí)鐘同步的服務(wù)。應(yīng)用程序像追蹤和計(jì)算速度也要依靠同步時(shí)鐘。
用于時(shí)鐘同步和互聯(lián)網(wǎng)的的NTP協(xié)議對(duì)于WSN來(lái)說(shuō)開(kāi)銷太大了。每個(gè)節(jié)點(diǎn)內(nèi)置GPS成本又太昂貴了。已經(jīng)開(kāi)發(fā)的用于WSN的典型時(shí)鐘同步協(xié)議有RBS和FTSP[19]。
在RBS中,一個(gè)參考的時(shí)間消息被廣播到相鄰節(jié)點(diǎn)。當(dāng)消息接受到時(shí),接受器記錄下這一時(shí)間。節(jié)點(diǎn)之間交換它們記錄的時(shí)間并且調(diào)整它們的時(shí)鐘以達(dá)到同步。此協(xié)議遭受非發(fā)射端非確定性,因?yàn)闀r(shí)間戳僅在接受端。精確度大約只有30微秒一跳。它不適用于多跳系統(tǒng),但是可以被擴(kuò)展。
在TPSN中,為整個(gè)網(wǎng)絡(luò)生成了一棵生成樹(shù)。該方案假設(shè)生成樹(shù)中的所有鏈接是對(duì)稱的。然后從樹(shù)根開(kāi)始,沿著樹(shù)的邊進(jìn)行成對(duì)的同步。因?yàn)椴幌裨赗BS中有廣播存
在,TPSN是代價(jià)昂貴的。此協(xié)議一個(gè)關(guān)鍵屬性是時(shí)間戳被插入到MAC層的傳出訊息中,因此減少了非確定性。精確度可達(dá)17微秒的范圍。
在FTSP中,有無(wú)線電層的時(shí)間戳,傾斜補(bǔ)償,線性回歸,定期洪泛,來(lái)確保這一協(xié)議的穩(wěn)健性,適應(yīng)拓?fù)浣Y(jié)構(gòu)的變化。傳輸和接收信息都在無(wú)線電層帶上了時(shí)間戳,差距用于計(jì)算和調(diào)整時(shí)鐘偏移。精確度在1-2微秒范圍。
在使用時(shí)鐘同步協(xié)議時(shí),需要注意的是:選擇同步的頻率,確定在時(shí)鐘同步期間,時(shí)鐘漂移是否必須。如何處理多跳/網(wǎng)絡(luò)問(wèn)題,并盡量減少能源開(kāi)銷和增加的網(wǎng)絡(luò)擁塞。
6、電源管理
許多用于WSN的設(shè)備像Mica2和MicaZ要兩節(jié)AA電池帶動(dòng)。根據(jù)節(jié)點(diǎn)的不同活動(dòng)級(jí)別,如果沒(méi)有電源管理策略,它的壽命可能只有幾天。由于大多數(shù)系統(tǒng)需要更長(zhǎng)的壽命,許多重大的研究可以保證,在滿足基本需求的情況下,使用時(shí)間。
在硬件層面上,可以增加太陽(yáng)能電池或者使用清潔的動(dòng)能和風(fēng)能。電池能力也在不斷提高。如果外形大小不成為問(wèn)題,則可以增加更多的電池。低電源電路和微控制器也在逐漸進(jìn)步。許多硬件平臺(tái)讓設(shè)備的各個(gè)部分(每個(gè)傳感器,發(fā)送器,微處理器)具有多個(gè)省電狀態(tài)(關(guān)閉,閑置,開(kāi)啟)。通過(guò)這種方法,僅在某個(gè)時(shí)間需要的組件才開(kāi)啟。
在軟件層面上,電源管理解決方案的目標(biāo):(1)由于傳輸信息和監(jiān)聽(tīng)信息很耗能量,盡量減少通信(2)對(duì)節(jié)點(diǎn)或節(jié)點(diǎn)的組成部分建立睡眠/喚醒機(jī)制
最小化通信信息量是一個(gè)綜合問(wèn)題。例如,有一個(gè)好的MAC協(xié)議,就會(huì)減少?zèng)_突和重發(fā)。有一個(gè)好的路由算法,短路徑和擁塞的避免或減少就可以實(shí)現(xiàn),并且也可最小化發(fā)送信息的量。若能高效的找到相鄰節(jié)點(diǎn),則時(shí)間同步,定位,廣播的查詢和洪泛都能減少信息量,從而增加使用壽命。
對(duì)于如何安排睡眠/喚醒模式的方法,存在很大的差異。許多解決方案試圖讓醒著的節(jié)點(diǎn)(被稱為哨兵)數(shù)量最少,為了阻止所有節(jié)點(diǎn)睡眠,必須確保所需的感知覆蓋范圍。為了平衡各節(jié)點(diǎn)能量消耗,周期性地執(zhí)行一個(gè)論換機(jī)制,選出新的哨兵參加下一個(gè)時(shí)間段。另一個(gè)常用技術(shù)是讓各節(jié)點(diǎn)以一定占空比的形式工作。例如,讓一個(gè)節(jié)點(diǎn)一秒內(nèi)保持清醒狀態(tài)200微秒,則它的占空比為20%。占空比的選擇取決于應(yīng)用程序的要求,但最終的結(jié)果通常是極大地節(jié)省了能源。請(qǐng)注意,占空比法和哨兵法可能聯(lián)全起來(lái)應(yīng)用,如在軍事偵察系統(tǒng)VigilNet[7][9]中,就是這樣。
7、應(yīng)用程序和系統(tǒng)
為了展示W(wǎng)SN的能力,我們舉了兩個(gè)應(yīng)用程序和與此相關(guān)的系統(tǒng)的例子。7.1監(jiān)視和跟蹤
VigiNet系統(tǒng)是一個(gè)用于軍事偵察的長(zhǎng)期實(shí)時(shí)無(wú)線傳感器網(wǎng)絡(luò)。它的主要目標(biāo)是:在敵對(duì)區(qū),當(dāng)感興趣的事件發(fā)生時(shí),警告軍事指揮部和控制單元。感興趣的事件包括:
人的出現(xiàn),帶武器的人員出現(xiàn),大型和小型交通工具經(jīng)過(guò)。成功的探測(cè),跟蹤和分類要求應(yīng)用程序以可接受的精度和準(zhǔn)確度,獲取目標(biāo)的位置。當(dāng)信息被成功獲取后,在一個(gè)可接受的延遲期內(nèi),將它報(bào)告給無(wú)遠(yuǎn)程的基站。VigilNet是一個(gè)自我組織運(yùn)行的傳感器網(wǎng)絡(luò)(有超過(guò)200個(gè)XSM微塵節(jié)點(diǎn)),它提供了以絆線為基礎(chǔ)的監(jiān)視功能,通過(guò)以哨兵為基礎(chǔ)的電源管理機(jī)制來(lái)達(dá)到3到6個(gè)月的壽命長(zhǎng)度。絆線也是僅在需要時(shí)才激活外部的傳感器(在正常Vigilnet系統(tǒng)之外),如紅外攝像機(jī),這也增加了壽命。
圖1.1提供了該系統(tǒng)的架構(gòu)概況,基中有三種組件:1)應(yīng)用程序組件,2)中間件組件,和3)TinyOS系統(tǒng)組件。應(yīng)用程序組件為監(jiān)視目的而設(shè)計(jì),包換1)一個(gè)基于實(shí)體的跟蹤組件,2)分類組件,它提供了四種目標(biāo)的區(qū)分,3)速度計(jì)算,它人提供目標(biāo)速度和方向的估計(jì),4)錯(cuò)誤警報(bào)過(guò)濾,它可區(qū)分真、假目標(biāo)。
中間件組件被設(shè)計(jì)來(lái)使獨(dú)立于應(yīng)用程序。時(shí)間同步,定位和路由組成了低級(jí)組件,它們形成了實(shí)現(xiàn)更高級(jí)中級(jí)間服務(wù),像聚合和電源管理的基礎(chǔ)。時(shí)間同步和定位對(duì)于一個(gè)監(jiān)視系統(tǒng)是很重要的,因?yàn)閰f(xié)同檢測(cè)和追蹤進(jìn)程依賴于多個(gè)節(jié)點(diǎn)發(fā)送的追蹤報(bào)道之間的時(shí)空聯(lián)系。
時(shí)間同步模塊負(fù)責(zé)本地節(jié)點(diǎn)時(shí)鐘和基站時(shí)鐘的同步。定位模塊負(fù)責(zé)確保每個(gè)節(jié)點(diǎn)能找到它自己的位置。配置模塊負(fù)責(zé)動(dòng)態(tài)配置系統(tǒng),當(dāng)系統(tǒng)要求改變時(shí)。非對(duì)稱測(cè)試模塊設(shè)計(jì)來(lái)協(xié)助路由模塊來(lái)選擇高質(zhì)量的通信鏈路。無(wú)線電喚醒模塊用于警告非哨兵節(jié)點(diǎn),當(dāng)重大事件發(fā)生時(shí)。電源管理和協(xié)作檢測(cè)是由VigilNet提供的兩個(gè)關(guān)鍵的高級(jí)別服務(wù)。哨兵服務(wù)和絆線管理負(fù)責(zé)電源管理,而組管理模塊負(fù)責(zé)事件的聯(lián)合探測(cè)和追蹤。哨兵和絆線服務(wù)通過(guò)選擇節(jié)點(diǎn)的一部分(它們被定義為哨兵)來(lái)監(jiān)視事件,從而達(dá)到省電的目的。其他剩余的節(jié)點(diǎn)可以處于低耗電狀態(tài),至到一個(gè)事件發(fā)生。當(dāng)一個(gè)事件發(fā)生時(shí),哨兵喚醒事件區(qū)域中的其它節(jié)點(diǎn),同時(shí)組管理組件動(dòng)態(tài)地將節(jié)點(diǎn)組織成組,以實(shí)現(xiàn)協(xié)同跟蹤。這兩要組件也一起負(fù)責(zé)跟蹤能量消耗相關(guān)的事件。
VigiNet系統(tǒng)的架構(gòu)建立在TinyOS基礎(chǔ)上。TinyOs是一個(gè)事件驅(qū)動(dòng)的計(jì)算模塊。針對(duì)特定節(jié)點(diǎn)平臺(tái),用NesC寫成的。TinyOs提供了一個(gè)必要的組件集合,像硬件驅(qū)動(dòng),一個(gè)調(diào)度機(jī)制和基本的通信協(xié)議。這些組件為VigiNet模塊提供了低層支持,它們也是用NesC語(yǔ)言寫的。TinyOS的組件和VigiNet的應(yīng)用程序先被NESC編譯器處理成一個(gè)可執(zhí)行程序,它可以在XSM(和MICA2)節(jié)點(diǎn)平臺(tái)上運(yùn)行(在VigelNett系統(tǒng)中)。
圖1.1 VigilNet系統(tǒng)架構(gòu)
8、總結(jié)
這一章討論了WSN的相關(guān)問(wèn)題和MAC層、路由、定位、時(shí)鐘同步、電源管理的實(shí)際例子。為什么這些解決方案與過(guò)去的網(wǎng)絡(luò)解決方案如此的不同。還對(duì)當(dāng)前的兩個(gè)WSN系統(tǒng)進(jìn)行了簡(jiǎn)單的描述:一個(gè)軍事監(jiān)視、跟蹤和分類系統(tǒng),一個(gè)輔助生活設(shè)施系統(tǒng)。
盡管這些問(wèn)題是WSN的關(guān)鍵問(wèn)題,還有許多重要的話題在本章中無(wú)談到。例如安全和隱私對(duì)這些系統(tǒng)來(lái)說(shuō)是很關(guān)鍵的功能。編程抽象和WSN的語(yǔ)言也是一個(gè)很活躍的研究領(lǐng)域。一些重大的研究在收集關(guān)于WSN性能的實(shí)證數(shù)據(jù)。這些數(shù)據(jù)對(duì)于提高模塊和解決方案很關(guān)鍵。調(diào)試工具和WSN管理工具也開(kāi)始出現(xiàn)。
傳感器網(wǎng)絡(luò)研究產(chǎn)生的新技術(shù)正在應(yīng)用到許多實(shí)際項(xiàng)目中。未來(lái)將會(huì)看到這些技術(shù)的加速應(yīng)用。
參考文獻(xiàn)
[1] N.Bulusu, J.Heidemann, and D.Estrin, GPS-less Low Cost Outdoor Localization for Very Small Devices, IEEE Personal Communications Magazine, October 2000.[2] A.Cerpa, J.Wong, L.Kuang, M.Potkonjak, and D.Estrin, Statistical Model of Lossy Links in Wireless Sensor Networks, IPSN, April 2005.[3] J.Elson, L.Girod, and D.Estrin, Fine-Grained Network Time Synchronization Using Reference Broad-casts, OSDI, December 2002.[4] S.Ganeriwal, R.Kumar, and M.Srivastava, Timing-sync Protocol for Sensor Networks, ACM SenSys, November 2003.[5] T.He, J.Stankovic, C.Lu and T.Abdelzaher, A Spatiotemporal Communication Protocol for Wireless Sensor Networks, IEEE Transactions on Parallel and Distributed Systems, to appear.[7] T.He, S.Krishnamurthy, J.Stankovic, T.Abdelzaher, L.Luo, T.Yan, R.Stoleru, L.Gu, G.Zhou, J.Hui and B.Krogh, VigilNet: An Integrated Sensor Network System for Energy Ecient Surveillance, ACM Transactions on Sensor Networks, to appear.[8] T.He, P.Vicaire, T.Yan, L.Luo, L.Gu, G.Zhou, R.Stoleru, Q.Cao, J.Stankovic, and T.Abdelzaher,Real-Time Analysis of Tracking Performance inWireless Sensor Networks, IEEE Real-Time Applications Symposium, May 2006.[9] T.He, P.Vicaire, T.Yan, Q.Cao, L.Luo, L.Gu, G.Zhou, J.Stankovic, and T.Abdelzaher, Achieving Long Term Surveillance in VigilNet, Infocom, April 2006.[10] J.Hill, R.Szewczyk, A, Woo, S.Hollar, D.Culler, and K.Pister, System Architecture Directions for Networked Sensors, ASPLOS, November 2000.[11] C.Intanagonwiwat, R.Govindan, and D.Estrin, Directed Diusion: A Scalable Routing and Robust Communication Paradigm for Sensor Networks, Mobicom, August 2000.[12] B.Karp, Geographic Routing for Wireless Networks, PhD Dissertation, Harvard University, October 2000.[14] P.Levis and D.Culler, Mate: A Tiny Virtual Machine for Sensor Networks, Int.Conf.on Architectural Support for Programming Languages and Operating Systems, October 2002.[15] J.Liu, M.Chu, J.J.Liu, J.Reich and F.Zhao, State-centric Programming for Sensor and Actuator Network Systems, IEEE Pervasive Computing, October 2003.[16] C.Lu, B.Blum, T.Abdelzaher, J.Stankovic, and T.He, RAP: A Real-Time Communication Ar-chitecture for Large-Scale Wireless Sensor Networks, IEEE Real-Time Applications Symposium, June 2002.[17] L.Luo, T.Abdelzaher, T.He, and J.Stankovic, EnviroSuite: An Environmentally Immersive Pro-gramming Framework for Sensor Networks, ACM Transactions on Embedded Computing Systems, to appear.[18] L.Luo, T.He, T.Abdelzaher, J.Stankovic, G.Zhou and L.Gu, Achieving Repeatability of Asyn-chronous Events in Wireless Sensor Networks with EnviroLog, Infocom, April 2006.[19] M.Maroti, B.Kusy, G.Simon, and A.Ledeczi, The Flooding Time Synchronization Protocol, ACMSenSys, November 2004.[20] M.Maroti, et.al., Radio Interferometric Geolocation, ACM SenSys, November 2005.[21] D.Mills, Internet Time Synchronization: The Network Time Protocol, In Z.Yang and T.Marsland, editors, Global States and Time in Distributed Systems, IEEE Computer Society Press, 1994.[22] A.Perrig, J.Stankovic, and D.Wagner, Security in Wireless Sensor Networks, invited paper, CACM, Vol.47, No.6, June 2004, pp.53-57, rated Top 5 Most Popular Magazine and Computing Surveys Articles Downloaded in August 2004, translated into Japanese.[23] A.Perrig, R.Szewczyk, J.Tygar, V.Wen, and D.Culler, SPINS: Security Protocols for Sensor Networks,ACM Journal of Wireless Networks, September 2002.[24] J.Polastre, J.Hill and D.Culler, Versatile Low Power Media Access for Wireless Sensor Networks,ACM SenSys, November 2004.[25] N.Ramanathan, K.Chang, R, Kapur, L.Girod, E.Kohler, and D.Estrin, Sympathy for the SensorNetwork Debugger, ACM SenSys, November 2005.[26] R.Stoleru, T.He, J.Stankovic, Spotlight: A High Accuracy, Low-Cost Localization System for WirelessSensor Networks, ACM Sensys, November 2005.[27] R.Stoleru, T.He, and J.Stankovic, Walking GPS: A Practical Localization System for ManuallyDeployed Wireless Sensor Networks, IEEE EmNets, 2004.[28] G.Virone, A.Wood, L.Selavo, Q.Cao, L.Fang, T.Doan, Z.He, R.Stoleru, S.Lin, and J.Stankovic,An Assisted Living Oriented Information System Based on a Residential Wireless Sensor Network,Proceedings D2H2, May 2006.[29] M.Welsh and G.Mainland, Programming Sensor Networks with Abstract Regions, USENIX/ACMNSDI, 2004.[30] K.Whitehouse, C.Karlof, A.Woo, F.Jiang, and D.Culler, The E?ects of Ranging Noise on MultihopLocalization: An Empirical Study, IPSN, April 2005.[31] A.Wood and J.Stankovic, Denial of Service in Sensor Networks, IEEE Computer, Vol.35, No.10,October 2002, pp.54-62.[32] A.Wood, G.Virone, T.Doan, Q.Cao, L.Selavo, Y.Wu, L.Fang, Z.He, S.Lin, J.Stankovic, AlarmNet,ACM SenSys, April 2005.[33] T.Yan, T.He and J.Stankovic, Di?erentiated Surveillance for Sensor Networks, ACM Sensys, November 2003.[34] G.Zhou, T.He, J.Stankovic and T.Abdelzaher, RID: Radio Interference Detection in Wireless SensorNetworks, Infocom, 2005.[35] G.Zhou, T.He, S.Krishnamurthy, J.Stankovic, Impact of Radio Asymmetry on Wireless Sensor Networks, Mobisys, June 2004.[36] G.Zhou, C.Huang, T.Yan, T.He and J.Stankovic, MMSN: Multi-Frequency Media Access Controlfor Wireless Sensor Networks, Infocom, April 2006.
第三篇:無(wú)線傳感網(wǎng)絡(luò)課程設(shè)計(jì)
無(wú)線傳感網(wǎng)絡(luò) 課程設(shè)計(jì)報(bào)告
姓名:胡韶輝 胡衎
2017
學(xué)號(hào):139074377 139074376 班級(jí):物131班 指導(dǎo)教師:衛(wèi)琳娜
年1月1日
無(wú)線傳感網(wǎng)絡(luò)課程設(shè)計(jì)
實(shí)驗(yàn)
一、無(wú)線傳感網(wǎng)絡(luò)點(diǎn)對(duì)點(diǎn)通信實(shí)驗(yàn)
1.實(shí)驗(yàn)內(nèi)容
此實(shí)驗(yàn)為驗(yàn)證實(shí)驗(yàn),根據(jù)實(shí)驗(yàn)步驟進(jìn)行實(shí)驗(yàn),觀察結(jié)果是否與預(yù)期相符
2.實(shí)驗(yàn)步驟
用IAR8.1打開(kāi)路徑:C:UsersxsDesktop無(wú)線傳感器網(wǎng)絡(luò)課程設(shè)計(jì)無(wú)線傳感網(wǎng)實(shí)驗(yàn)資料201604感知RF2-2530WSNV1.2代碼和例子程序Light_SwitchIDELight_Switchsrf05_cc2530IarLight_Switch.eww分別編譯并下載至兩個(gè)節(jié)點(diǎn)上,打開(kāi)節(jié)點(diǎn),左右鍵選擇
/* 功 能:查找字符在索引中的哪一個(gè)位置 */ /**************************************************************************************************/ static u16 lookforChar(u8 ch){ uint16 i;for(i = 0;i < FONTLISTCOUNT;i ++){
if(fontList[i] == ch)
return i;} return i;}
//查中文
static u16 lookforChar16(u16 ch){ uint16 i,j;u16 temp16;for(i = 0;i < fontChar16ListCount;i ++){
j = i*2;
temp16 = fontChar16List[j + 1];
temp16 <<= 8;
temp16 |= fontChar16List[j];
if(temp16 == ch)
return i;} return i;}
/**************************************************************************************************/ /* 功 能:在指定位置輸出8*8 */ /**************************************************************************************************/ static void LcdPutChar8(u8 x,u8 y,u8 ch){ LcdBuf[y][x] = ch;} /**************************************************************************************************/ /* 功 能:在指定位置輸出16*16 */ /**************************************************************************************************/
/*static void LcdPutChar16(u8 x,u8 y,u16 ch){ LcdBuf[y][x] =(u8)ch;
//低前高后
LcdBuf[y+1][x] =(u8)(ch>>8);}
void LcdPutString8(u8 x,u8 y,u8 *ptr u8 len,u8 op){
u8 i,*tptr = ptr,xx = x,yy = y;u16 m;if(x > 95)
return;if(y > 1)
return;for(i = 0;i < len;i ++){
m = lookforChar(*tptr ++);
if(m!= FONTLISTCOUNT)
{
m = m * 8;
}
else
return;
xx += 8;
if(xx > 88)
return;} } */
void LcdClearRam(void){ u8 i;for(i = 0;i < 96;i ++){
LcdBuf[0][i] = 0;} for(i = 0;i < 96;i ++){
LcdBuf[1][i] = 0;} } void LcdClearScrean(void){ LcdClearRam();PutPic((void *)LcdBuf);}
void LcdPutString16_8(u8 x,u8 y,u8 *ptr,u8 len,u8 op){ u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if(xx > 95)
return;if(yy)
return;
for(i = 0;i < len;i ++){
m = lookforChar(*tptr ++);
if(m!= FONTLISTCOUNT)
{
m = m * 16;
for(j = 0;j < 8;j ++)
{
if(op)
{
LcdPutChar8((xx + j),yy,font[m+j]);
LcdPutChar8((xx + j),yy+1,font[m+j+8]);
}
else
{
LcdPutChar8((xx + j),yy,~font[m+j]);
LcdPutChar8((xx + j),yy+1,~font[m+j+8]);
}
}
}
else
break;
xx += 8;
if(xx > 96)
return;} PutPic((void *)LcdBuf);} //顯示16*16字符
void LcdPutString16_16(u8 x,u8 y,u8 *ptr,u8 len,u8 op){ u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if(xx > 95)
return;if(yy)
return;
for(i = 0;i < len;i ++){
m = lookforChar(*tptr ++);
if(m!= FONTLISTCOUNT)
{
m = m * 32;
for(j = 0;j < 16;j ++)
{
if(op)
{
LcdPutChar8((xx + j),yy,font[m+j]);
LcdPutChar8((xx + j),yy+1,font[m+j+16]);
}
else
{
LcdPutChar8((xx + j),yy,~font[m+j]);
LcdPutChar8((xx + j),yy+1,~font[m+j+16]);
}
}
}
else
break;
xx += 16;
if(xx > 80)
return;} PutPic((void *)LcdBuf);}
static void LcdPrint8(u8 x,u8 y,u8 vl,u8 op){ u8 j;u16 m;m = lookforChar(vl);if(m!= FONTLISTCOUNT){
m = m * 16;
for(j = 0;j < 8;j ++)
{
if(op)
{
LcdPutChar8((x + j),y,font[m+j]);
LcdPutChar8((x + j),y+1,font[m+j+8]);
}
else
{
LcdPutChar8((x + j),y,~font[m+j]);
LcdPutChar8((x + j),y+1,~font[m+j+8]);
}
} } } static void LcdPrint16(u8 x, u8 y, u16 val, u8 op){ u8 j;u16 m;m = lookforChar16(val);if(m!= fontChar16ListCount)
{
m = m * 32;
for(j = 0;j < 16;j ++)
{
if(op)
{
LcdPutChar8((x + j),y,fontChar16[m+j]);
LcdPutChar8((x + j),y+1,fontChar16[m+j+16]);
}
else
{
LcdPutChar8((x + j),y,~fontChar16[m+j]);
LcdPutChar8((x + j),y+1,~fontChar16[m+j+16]);
}
}
} }
void LcdPutDispBuf(u8 x,u8 y,OledCodeDataType *ptr,u8 op){ u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if(x > 88)
return;if(y > 1)
return;while((*tptr!= '