久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

無線傳感網實驗報告

時間:2019-05-14 09:22:43下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《無線傳感網實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《無線傳感網實驗報告》。

第一篇:無線傳感網實驗報告

Central South University

無線傳感器網絡 實驗報告

學院:

班級: 學號: 姓名:

時間: 指導老師:

第一章 基礎實驗

了解環境

1.1 實驗目的

安裝 IAR 開發環境。CC2530 工程文件創建及配置。源代碼創建,編譯及下載。1.2 實驗設備及工具

硬件:ZX2530A 型底板及 CC2530 節點板一塊,USB 接口仿真器,PC 機

軟件:PC 機操作系統 WinXP,IAR 集成開發環境,TI 公司的燒寫軟件。

1.3 實驗內容

1、安裝 IAR 集成開發環境

IAR 集成開發環境安裝文件所在光盤目錄:物聯網光盤工具CD-EW8051-7601

2、ZIBGEE 硬件連接

安裝完 IAR 和 Smartrf Flash Programmer 之后,按照圖所示方式連接各種硬件,將仿真器的 20 芯 JTAG 口連接到 ZX2530A 型 CC2530 節點板上,USB 連接到 PC 機上,RS-232 串口線一端連接 ZX2530A 型 CC2530 節點板,另一端連接 PC 機串口。

3、創建并配置 CC2530 的工程文件 IAR 是一個強大的嵌入式開發平臺,支持非常多種類的芯片。IAR 中的每一個 Project,都可以擁有自己的配置,具體包括 Device 類型、堆/棧、Linker、Debugger 等。(1)新建 Workspace 和 Project 首先新建文件夾 ledtest。打開 IAR,選擇主菜單 File-> New-> Workspace 建立新的工作區域。

選擇 Project-> Create New Project-> Empty Project,點擊 OK,把此工程文件保存到文件夾 ledtest 中,命名為:ledtest.ewp(如下圖)。

(2)配置 Ledtest 工程

選擇菜單 Project->Options...打開如下工程配置對話框

選擇項 General Options,配置 Target 如下 Device:CC2530;

(3)Stack/Heap 設置:XDATA stack size:0x1FF

(4)Debugger 設置:

Driver:Texas Instruments(本實驗為真機調試,所以選擇 TI;若其他程序要使用 IAR仿真器,可選 Simulator)

至此,針對本實驗的 IAR 配置基本結束.4、編寫程序代碼并添加至工程

選擇菜單 File->New->File 創建一個文件,選擇 File->Save 保存為 main.c 將 main.c 加入到 ledtest 工程,將實驗代碼輸入

然后選擇 Project->Rebuild All 編譯工程

編譯好后,選擇 Project->Download and debug 下載并調試程序 下載完后,如果不想調試程序,可點工具欄上的按鈕終止調試。

到此,程序已經下載到了 cc2530 芯片的 flash 內,按下 ZX2530A 上的復位按鈕可看到程序的運行效果。

LED 實驗 2.1 實驗目的

通過 I/O 控制小燈閃爍的過程。

在 ZX2530A 型 CC2530 節點板上運行自己的程序。2.2 實驗設備及工具

硬件:ZX2530A 型底板及 CC2530 節點板一塊,USB 接口仿真器,PC 機

軟件:PC 機操作系統 WinXP,IAR 集成開發環境。2.3 實驗結果

1.正確連接下載線和 ZX2530A 型 CC2530 節點板,打開 ZX2530A 型 CC2530 節點板電源。

2.在文件夾“基礎實驗2 LED”下打開工程 led,編譯工程,并下載到 CC2530 節點板。3.觀察 LED 的閃爍情況。

4.修改延時函數,可以改變 LED 小燈的閃爍間隔時間。

5.重新編譯,并下載程序到 CC2530 節點板,觀察 LED 的閃爍情況。

答:增加延時就會發現小燈閃爍的頻率降低了。

串口實驗 3.1 實驗目的

本次實驗將會學習如果使用串口實現與 PC 機的通訊。(實驗中需要 PC 機與開發板之間使用RS232 交叉串口連接線)。

能正確配置 CC2530 的串口。3.2 實驗設備及工具

硬件:ZX2530A 型底板及 CC2530 節點板一塊,USB 接口仿真器,PC 機,交叉串口線一根。

軟件:PC 機操作系統 WinXP,IAR 集成開發環境、串口調試助手。3.3 實驗結果

CC2530 能與上位機通過串口正常通信

1.正確連接下載線和 ZX2530A 型 CC2530 節點板,用串口線正確連接上位機和 ZX2530A 型板,使能通過串口交換數據。

2.在文件夾“基礎實驗5 uart”下打開工程 uart,編譯工程,并下載到 CC2530 節點板。

3.通過上位機上的串口調試助手,發送數據到 cc2530,然后檢查 cc2530 回送給上位機的數據。

3.4 實驗總結

通過這次實驗,讓我對無線傳感器網絡有了進一步的了解。在無線的世界,感覺一切都是那么神奇,二一切又是那么理所當然,記得小時候常常想,那些無線好神秘,畫面,聲音等怎么可以從一方到達另一方而可以完全不接觸。雖然今天做的實驗都是很小很簡單的,比起顯示中那些絢麗的感覺沒什么值得贊揚的,但對于我來說,這個更有魅力,那些絢麗的我是以仰望的視角來對待,而這次我能深入它的原理去真正接觸它,以平視來看待它。

第二章 射頻實驗

點對點射頻通信實驗 1 實驗目的

在 ZX2530A 型 CC2530 節點板上運行相應實驗程序。熟悉通過射頻通信的基本方法。練習使用狀態機實現收發功能。2 實驗內容

接收節點上電后進行初始化,然后通過指令 ISRXON 開啟射頻接收器,等待接收數據,直到正確接收到數據為止,通過串口打印輸出。發送節點上電后和接收節點進行相同的初始化,然后將要發送的數據輸出到 TXFIFO 中,再調用指令 ISTXONCCA 通過射頻前端發送數據。3 實驗設備及工具

硬件:ZX2530A 型 CC2530 節點板 2 塊、USB 接口的仿真器,PC 機 Pentium100 以上。

軟件:PC 機操作系統 WinXP、IAR 集成開發環境、串口監控程序。4 實驗原理

發送節點通過串口接收用戶的輸入數據然后通過射頻模塊發送到指定的接收節點,接收節點通過射頻模塊收到數據后,通過串口發送到 pc 在串口調試助手中顯示出來。如果發送節點發送的數據目的地址與接收節點的地址不匹配,接收節點將接收不到數據。以下為發送節點程序流程圖:

以下為接收節點流程圖: 實驗步驟

1.打開光盤“無線射頻實驗2.點對點通信”雙擊 p2p.eww 打開本實驗工程文件。2.打開 main.c 文件下面對一些定義進行介紹 RF_CHANNEL 此宏定義了無線射頻通信時使用的信道,在多個小組同時進行實驗是建議每組選擇不同時信道。但同一組實驗中兩個節點需要保證在同一信道,才能正確通信。

PAN_ID 個域網 ID 標示,用來表示不同在網絡,在同一實驗中,接收和發送節點需要配置為相同的值,否則兩個節點將不能正常通信。SEND_ADDR 發送節點的地址 RECV_ADDR 接收節點的地址

NODE_TYPE 節點類型:0 接收節點,1:發送節點,在進行實驗時一個節點定義為發送節點用來發送數據,一個定義為接收節點用來接收數據。

3.修改 NODE_TYPE 的值為 0,并編譯下載到節點板。此節以下稱為接收節點。

4.修改 NODE_TYPE 的值為 1,并編譯下載到另外一個節點板。此節點板以下稱為發送節點。

5.將接收節點的串口與 pc 的串口相連,并在 pc 端打開串口調試助手,配置波特率為 115200。

6.先將接收節點上電,然后將發送節點上電。7.從串口調試助手觀察接收節點收到的數據。

8.修改發送數據的內容,然后編譯并下載程序到發送節點,然后從串口調試助手觀察收到的數據。9.修改接收節點的地址,然后重新編譯并下載程序到接收節點,然后從發送節點發送數據觀察接收節點能否正確接收數據。6 實驗數據分析及結論

發送節點將數據發送出去后,接收節點接收到數據,并通過串口調試助手打印輸出。發送數據的最大長度為 125(加上發送的據長度和校驗,實際發送的數據長度為 128 字節)。7 實驗心得

這次實驗在原來的短距離無線通信中有所涉獵,所以應該這個對于我們來說還是很簡單的,所以很快就做完實驗了,就和幾個同學好好研究了一下它的原理和一些它的展望,感覺這個學科以后有很大的發展前途,作為一個物聯網的學生,對無線射頻技術應該得很了解,指望它吃飯呢。這次實驗也很簡單,但是還是可以解除它的最底層的東西可以更加激發我們的興趣。第三章 ZStack組網實驗

多點自組織組網實驗 1 實驗目的

理解 zigbee 協議及相關知識。

在 ZX2530A 型 CC2530 節點板上實現自組織的組網。在 ZStack 協議棧中實現單播通信。2 實驗內容

先啟動協調器節點,協調器節點上電后進行組網操作,再啟動路由節點和終端節點,路由節點和終端節點上電后進行入網操作,成功入網后周期的將自己的短地址,父節點的短地址,自己的節點 ID 封裝成數據包發送給協調器節點,協調器節點接收到數據包后通過串口傳給 PC,從 PC 上的串口監控程序查看組網情況。發送數據格式為(16 進制): FF 源節點(16bit)父節點(16bit)節點編號 ID(8bit)例如 FF 4B 00 00 00 01,表示 01 號節點的網絡地址為 004B,發送數據到父節點,其網絡地址為 00 00(協調器)。3 實驗設備及工具

硬件:DZ2530 型 CC2530 節點板、USB 接口的仿真器,PC 機 Pentium100 以上。

軟件:PC 機操作系統 WinXP、IAR 集成開發環境、ZTOOL 程序。4 實驗原理

程序執行的流程圖如圖 5-4 所示,在進行一系列的初始化操作后程序就進入事件輪詢狀態。

對于終端節點,若沒有事件發生且定義了編譯選項 POWER_SAVING,則節點進入休眠狀態。

協調器是 Zigbee 三種設備中最重要的一種。它負責網絡的建立,包括信道選擇,確定唯一的PAN 地址并把信息向網絡中廣播,為加入網絡的路由器和終端設備分配地址,維護路由表等。Z-Stack 中打開編譯選項 ZDO_COORDINATOR,也就是在 IAR 開發環境中選擇協調器,然后編譯出的文件就能啟動協調器。具體工作流程是:操作系統初始化函數 osal_start_system 調用ZDAppInit 初 始 化 函 數,ZDAppInit 調 用 ZDOInitDevice 函 數,ZDOInitDevice 調 用

ZDApp_NetworkInit 函數,在此函數中設置 ZDO_NETWORK_INIT 事件,在 ZDApp_event_loop 任務中對其進行處理。由 第 一 步 先 調 用 ZDO_StartDevice 啟動網絡中的設備,再調用NLME_NetworkFormationRequest 函數進行組網,這一部分涉及網絡層細節,無法看到源代 碼,在庫中處理。ZDO_NetworkFormationConfirmCB 和 nwk_Status 函數有申請結果的處理。如果成功則 ZDO_NetworkFormationConfirmCB 先執行,不成功則 nwk_Status 先執行。接著,在ZDO_NetworkFormationConfirmCB 函數中會設置 ZDO_NETWORK_START 事件。由于第三步,ZDApp_event_loop 任務中會處理 ZDO_NETWORK_START 事件,調用 ZDApp_NetworkStartEvt 函數,此函數會返回申請的結果。如果不成功能量閾值會按ENERGY_SCAN_INCREMENT 增加,并將App_event_loop 任務中的事件 ID 置為 ZDO_NETWORK_INIT 然后跳回第二步執行;如果成功則設置 ZDO_STATE_CHANGE_EVT 事件讓 ZDApp_event_loop 任務處理。對 于 終 端 或 路 由 節 點,調 用 ZDO_StartDevice 后 將 調 用 函 數 NLME_NetworkDiscoveryRequest 進行信道掃描啟動發現網絡的過程,這一部分涉及網絡層 細節,無法看到源代碼,在庫中處理,NLME_NetworkDiscoveryRequest函數執行的結果將會返回到函數ZDO_NetworkDiscoveryConfirmCB 中,該 函 數 將 會 返 回 選 擇 的 網 絡,并 設 置 事 件ZDO_NWK_DISC_CNF,在 ZDApp_ProcessOSALMsg 中對該事件進行處理,調用 NLME_JoinRequest加入指定的網絡,若加入失敗,則重新初始化網絡,若加入成功則調用 ZDApp_ProcessNetworkJoin函數設置 ZDO_STATE_CHANGE_EVT,在對該事件的處理過程 中將調用ZDO_UpdateNwkStatus函數,此函數會向用戶自定義任務發送事件 ZDO_STATE_CHANGE。本實驗在 Zstack 的事例代碼 simpleApp 修改而來。首先介紹任務初始化的概念,由于自定義任務需要確定對應的端點和簇等信息,并且將這些信息在 AF 層中注冊,所以每個任務都要初始化然后才會進入 OSAL 系統循環。在 Z-Stack 流程圖中,上層的初始 化集中在 OSAL 初始化(osal_init_system)函數中。包括了存儲空間、定時器、電源管理和 各任務初始化。其中用戶任務初始化的流程如下:

用戶任務初始化流程圖

任務 ID(taskID)的分配是 OSAL 要求的,為后續調用事件函數、定時器函數提供了參數。網絡狀態在啟動的時候需要指定,之后才能觸發 ZDO_STATE_CHANGE 事件,確定設備的類型。目的地址分配包括尋址方式,端點號和地址的指定,本實驗中數據的發送使用單播方式。之后設置應 用 對 象 的 屬 性,這 是 非 常 關 鍵 的。由 于 涉 及 很 多 參 數,Z-Stack 專 門 設 計 SimpleDescriptionFormat_t 這一結構來方便設置,其中的成員如下: EndPoint,該節點應用的端點,值在 1-240 之間,用來接收數據。AppProfId,該域是確定這個端點支持的應用 profile 標識符,從 Zigbee 聯盟獲取具體的 標識符。AppNumInClusters,指示這個端點所支持的輸入簇的數目。pAppInClusterList,指向輸入簇標識符列表的指針。AppNumOutClusters,指示這個端點所支持的輸出簇的數目。pAppOutClusterList,指向輸出簇標識符列表的指針。

本實驗 profile 標識符采用默認設置,輸入輸出簇設置為相同 MY_PROFILE_ID,設 置完成后,調用 afRegister 函數將應用信息在 AF 層中注冊,使設備知曉該應用的存在,初 始化完畢。一旦初始化完成,在進入 OSAL 輪詢后 zb_HandleOsalEvent 一有事件被觸發,就會得到及時的處理。事件號是一個以宏定義描述的數字。系統事件(SYS_EVENT_MSG)是強制的,其中包括了幾個子事件的處理。ZDO_CB_MSG 事件是處理 ZDO 的響應,KEY_CHANGE 事件 處理按鍵(針對 TI 官方的開發板),AF_DATA_CONFIRM_CMD 則是作為發送一個數據包 后的確認,AF_INCOMING_MSG_CMD是接收到一個數據包會產生的事件,協調器在收到 該事件后調用函數 p2p_test_MessageMSGCB,將接收到的數據通過 HalUARTWrite 向串口 打印輸出。ZDO_STATE_CHANGE 和網絡狀態的改變相關在此事件中若為終端或路由節點 則發送用戶自定義的數據幀:FF 源節點短地址(16bit,調用 NLME_GetShortAddr()獲得)、父節點短地址(16bit,調用 NLME_GetCoordShortAddr())、節點編號 ID(8bit,為長地址的最低字節,調用 NLME_GetExtAddr()獲得,在啟動節點前應先用 RFProgrammer 將非 0XFFFFFFFFFFFFFFFF 的長地址寫到 CC2530 芯片存放長地址的寄存器中),協調器不做任何處理,只是等待數據的到來。終端和路由節點在用戶自定義的事件 MY_REPORT_EVT中 發 送 數 據 并 啟 動 定 時 器 來 觸 發 下 一 次 的 MY_REPORT_EVT 事件,實現周期性的發送數據(發送數據的周期由宏定義 REPORT_DELAY 確定)。5 實驗步驟

1.打開工程文件夾協議棧實驗2.多點自組網ProjectszstackSamplesSimpleAppCC2530DB下的工程文件 SimpleApp.eww。2.選擇工程

編譯,生成協調器代碼,并下載到 ZX2530A 開發板。此節點為協調器節點。3.選擇工程

編譯,生成終端節點代碼,并下載到 ZX2530 開發板。此節點為終端節點。4.選擇工程

編譯,生成路由器節點代碼,并下載到 ZX2530 開發板,此節點為路由器節點。5.用串口線將協調器節點與 pc 連接起來,在 pc 端打開 ZTOOL 程序。(ZTOOL 程序在 zstack 安裝后自動安裝)6.開啟 ZX2530A 型 CC2530 節點板電源。7.在 ZTOOL 程序中觀察組網結果。6 實驗數據分析及結論

由接收數據的 DebugString 可以看出圖中有兩個節點加入了網了,其中一個節點的 DEVID 是21,網絡地址:4f07,父節點地址是 0 即協調器。另外一個節點的 DEVID 是 11,網絡地址:A6F7,父節點地址是 4f07 即上一節點。實驗中可以試著改變不同節點的位置,然后通過 ZTOOL 看看組網結果有什么不同。7 實驗心得

這次實驗感覺比原來的更有趣,可以在手機上看到無線連接的組網,所以和同學們很有興趣,雖然只有幾個分支,但是幾個的通信還是可以清晰可見的。同時也讓我們看到了大型android手機的模樣,以前都是看成品,這次看的是半成品,感覺很有意思。在組網的過程中,遇到了一些問題,剛開始不知道如何解決,就問同學和老師,有的是線的問題,由于實驗器材本身的問題,導致一些松動之類的,但最后實驗總算是順利的完成了。在這感謝幫助我的同學和老師。第四章 傳感器網絡綜合實驗

Zigbee 節點控制程序設計 1.1 協調器節點工程

SimpleCoordinator 即協調器工程,如下圖

協調器的應用功能代碼實現文件是 SimpleCoordinator.c 在工程文件夾 App 目錄下具體實現可參考源碼。按下鍵盤上的 F7 即個編譯協調器工程,編譯好之后可將代碼下載到協調器節點板。1.2 人體紅外傳感器節點工程

SimpleInfrared 即人體紅外傳感器工程,如下圖

人體紅外傳感器節點應用控制代碼可參考工程目錄 App 下 SimpleInfrared.c 1.3 超聲波距離傳感器節點工程 SimpleDistanceSensor 即超聲波距離傳感器工程,如下圖

超聲波距離傳感器節點實現代碼可參考工程目錄 App 下

SimpleDistanceSensor.c。超聲波測距驅動代碼請參考 ys-srf05.c 文件。

1.4 濕度傳感器節點工程

SimpleHumiditySensor 即濕度傳感器節點工程,如下圖

濕度傳感器應用控制代碼可參考工程目錄 App 下SimpleHumiditySensor.c 文件,其濕度的測量驅動可參考溫濕度傳感器驅動 dht11.c 文件

平臺控制操作 2.1 啟動程序

1)安裝好程序后,打開 android 應用程序面板,找到圖標 點擊進入程序。

2)直接點擊登錄按鈕,進入到系統主界面。第一次進入是系統會自動連接到 zigbee 網關然后去搜索 zigbee 網絡,默認的 zigbee 網關地址為本機 IP 地址,即 127.0.0.1。

3)如果你的 zigbee 網關地址不是本機,則需要修改默認網關地址。通過按下系統‘菜單’按鍵,會出現如下菜單,選擇‘設置’菜單,可以設置默認的 zigbee 網關。如下圖:

4)設置好網關后,下次啟動程序就不用再次設置了。2.2 搜索網絡

如果 zigbee 網關設置好,通過菜單選擇‘搜索網絡’就可以搜索 zigbee 網絡了,正常情況下至少會有一個協調器節點,如果程序提示搜索不到網絡,請檢查你的網絡連接和協調器是否正確連接。如果 zigbee 網絡上還有其它節點,可以在網絡 TOP 圖上一起顯示出來。如下,是一個zigbee 網絡 TOP 圖:

圖中共有 7 個節點,其中最上面那個是協調器節點,其它為傳感器節點,其中地址為 58229的燈光設備帶有路由功能,屬路由器節點,它下面有兩個子節點,分別為人體傳感器和溫度傳感器。2.3 傳感器節點操作

通過搜索到的 zigbee 網絡 TOP 圖,可以了解整個 zigbee 網絡的節點分布情況。通過點擊屏幕上相應節點的圖標可以進入相關節點的控制和監控操作。

下圖為溫度傳感器的監控界面:

其它界面讀者可以自行實驗,并且去了解。

實驗心得

四次實驗完成了,雖然不能說自己學到了很多吧,至少對這里面的一些操作有了一定的了解,本科生本來就是為了讓我們擴充視角,知道更多的東西。無線傳感網絡真的感覺很神奇,也很有發展前景,這些高尖端的技術,現在存在一些瓶頸,如果能夠突破,對物聯天下這個目標將前進了一大步,如果能夠把傳感器節點造的更節能,更低廉,更小巧,將會實現全球各個地方的實時數據采集,就可以得到更多的信息,為以后生產生活帶來巨大的改變。在收集的數據肯定是海量的,將需要其他學科的支撐,一起結合起來,實現真的物物相聯。

第二篇:無線傳感網外文翻譯

無線傳感網絡?

1、簡介

無線傳感器網絡是由一些節點組織成的一個相互協作的網絡。每個節點都具有處理能力(有一個或多個微控制器,CPU或DSP芯片),還可包括多種類類型的存儲器(程序,數據和閃存),一個射頻收發器(能常是用一個全方位的定向天線),電源(如電池和太陽能電池),和各種傳感器、執行器。這些節點被部署在一個特定的環境中后,它們通常通過自組織的形式,實現無線通信。可以預見,由數千個甚至上萬個這樣的節點組成的系統將會出現,并將改變我們的生活和工作方式。

當前,無線傳感器網絡的部署步伐正在加快。這是很合理的期望:10-15年內,能夠通過互聯網訪問的無線傳感器網絡將覆蓋整個世界。這可以被視為互聯網變成了一個物理網絡。這一新技術令人興奮,在許多領域都具有無限潛力,包括醫療,軍事,交通,娛樂,危機管理,國土防御和智能空間等。

由于無線傳感器網絡是一種分布式實時系統,一個自然的問題是,有多少已有的分布式和實時系統解決方案可用于這一些新的系統?不幸的是,很少先前的成果可以應用,因此在系統的所有領域都需要新的解決方案,主要的原因是,以先前的工作為基礎的假設發生了巨大變化。過去的分布式系統研究的假設是:系統是有線的,電源是無限的,非實時的,有用戶界面(如屏幕和鼠標),有一組固定的資源,將系統中的節點看得很重要,并且是與位置無關的。相比之下,無線傳感系統是有線的,電源也比較稀缺,實時的,使用傳感器和執行器作為接口,擁有的資源也會動態改變,總體行為很重要,位置信息也很關鍵。許多無線傳感器網絡還使用了最低端的設備,這進一步的限制了對過去方案的重用。

本章概述了無線傳感器網絡的一些關鍵領域和無線傳感網絡的研究情況。在介紹過程中,我們使用工作中的具體例子來展示發展的狀態并顯示這些解決方案與分布式系統的解決方案的不同之處。特別地,我們討論了MAC層(第2節),路由(第3節),節點定位(第4節),時鐘同步(第5節),和電源管理(第6節)。為了展示這一技術的整體狀況,我們又簡單的討論了兩個當前的系統。在第8節中,我們做了總結。

2、MAC 介質訪問控制協議(MAC)通過共用信道協調行動。最常見的解決方案是基于沖突的。一個普通的基于沖突的策略是,讓一個節點傳輸信息來探測信道是否忙,如果不忙則傳輸該信息,忙則等待并且稍后再次嘗試。發生沖突后,節點會等待一段隨機的時間,避免再次沖突。許多無線介質訪問控制協議也有休眠模式,進入休眠模式后,在一個給定的時間內,節點不再傳輸和接收數據包,以節省能源。還有許多以些此機制為基礎的變化形式。? 作者:John A.Stankovic Department of Computer Science University of Vaginal.出處:WDS'08 Proceedings of Contributed Papers, Part III, 19–23, 2008.一般來說,大多數MAC協議都是對一般情況,或者特殊通信模式和工作負荷,而進行的優化。然而,一個無線傳輸網絡具有更多的集中的要求,包括:本地的單播和廣播,通信通常是從節點到基站(sink)的(大多數通信因此是朝一個方向的),通信具有周期性和間歇性,并且作為一個主要因素必須考慮能量的消耗。一個有效的無線傳感網絡的MAC協議必須消耗的能量少,避免沖突,實現所需代碼和內存少,能有效的為一應用程序所用,能適應不斷變化的無線電頻率和網絡條件。

基中一個比較好的無線傳感網絡的MAC的例子是 B-MAC,它是高度可配置的,并且能用很少的代碼量和內存量實現。它還有一個接口,允許你選擇各種功能,僅當那些功能為某一應用程序特需的時候。B-MAC協議包括四個主要部部分:空閑信道評估(CCA),包重傳,鏈路層的確認,低功耗的監聽。當信道空閑時,B-MAC的CCA用一個加權的變化的樣本平均值來評估背景噪音,以能更好檢測有有效數據包和沖突。包重傳時間是可配置的,通常從一個線性范圍值中選取,而典型的其他分布式系統使用的是一個指數重傳策略。對于典型的在無線傳感器網絡中發現的通信模式而言,這將減少延遲和工作量。B-MAC也支持一個包一個包的鏈路層確認機制。這樣僅僅重要的包需要消耗額外的代價。低功耗監聽機制用于周期性蘇醒和休眠的節點中。當蘇醒時,它監聽一段足夠長的時間來評估是否需要繼續保持醒的狀態,或者轉回到休眠模式。該方案節約了大量的能量。許多MAC協議使用請求發送(RTS)和清除發送(CTS)的交互方式。在選定的數據包數量級比較大的網狀網絡中(1000字節),這個效果很好。然而,當包的大小很小時,為建立一個包的傳輸所需RTS-CTS開銷將變得不可接受,因此,不能用RTS-CTS 策略。

最近,已出現一些支持多信道無線傳感網絡的的研究工作。在這些系統中,擴展MAC協議為多信道MAC協議是必要的。其中的一個協議就是MMSN[36]。這些協議必須支持像B-MAC協議樣的協議的所有特征,但是也必須為每一次傳輸確定頻率。因此,多頻MAC協議分為兩個階段:信道分配和訪問控制。MMSN的細節是相當復雜的,在此沒有做過多的描述。另一方面,我們期望未來有更多的無線傳感器網絡采用多信道(頻率)。MAC協議的優點包括提供了更大的包吞吐量,甚至在由競爭網絡和商業設備像移動電話和微波爐引起的頻譜擁擠的情況下也能傳輸。

3、路由

多跳路由是無線傳感網絡所需的關鍵服務。下因為如此,出現了大量的這方面原工作。互聯網和移動自組網(MANET)路由技術,在無線傳感器網絡中,不能出色發揮。互聯網路由假定具有高可靠的有線連接,因此包錯誤是很少的;在無線傳感器網絡中這點不成立。許多MANET路由解決方案依賴于相鄰點間的對稱的聯系(例如,如果節點A可以可靠的到達節點B,則B可以到達A。這些差異使得新的解決方案的發明和部署很必要。

對于以自組形式部署的無線傳感器網絡,路由策略往往從發現鄰居節點開始。節

點巡回發送信息(包)并且建立本立路由表。這些表包括了相鄰節點的ID和位置的最少信息。這意味著節點必須先于節點發現之前,知道它們的地理信息。在這些表中的其他典型信息包括節點的剩余能量,能過這個節點的延遲,鏈路的質量評介。

一旦表在在,在大多數路由算法中,信息從源位置傳導到目標地址,都是基于幾何坐標,而不是ID。一個典型的像這樣工作的路由算法就是GF(Geograpic Forwarding)。

在GF中,一個節點知曉它的位置,并且正在被路由的信息包含了目標地址。此節點然后,通過幾何的距離公式,計算哪一個相鄰節點與目標節點最靠近。它就將這信息傳輸到下一跳。在各種GF的變體中,節點也可以考慮延遲,鏈接的可靠性和剩余的能量。

其他重要的無線傳感網絡的路由范例是定向擴散[11]。該路由方案集成了路由,查詢和數據匯總。此處,散發一個查詢來詢問對遠程節點來的數據的興趣。擁用適合于被請求的數據的節點就回復以一屬性值對。此屬性值對,基于梯度,向著請求者的方向延伸,它隨著請求的發送和回應而建立和更新。沿著從源到目標的路徑,數據可以被聚合,以減少通信量。數據也可以經過多條路徑以增加路由的穩健性。

除了剛才展示的的無線傳感網絡路由的基本的特性外,還有許多關鍵問題包括: ? 可靠性

? 與喚醒/睡眠計劃的整合 ? 單播,組播和任播語義 ? 實時 ? 移動性 ? 空洞 ? 安全性和 ? 擁塞

可靠性:由于信息要的傳輸要經過多跳,各個鏈接的高可靠性就顯得得重要,否則信息傳過整個網絡的可能性將令人無法接受的低。為了確保鏈接的可靠性,使用一些指標做了許多重要的工作,像接收信號強度,基于錯誤的鏈接質量指標,包投遞率等。重要的經驗證據表明,包投遞率是最好的度量,但是獲取這一數據代價是昂貴的。實證數據也表明許多在無線傳感器網絡中的鏈接是不對稱的,也就是說,節點A可以成功傳遞一條信息到節點B,反向的從B到A的鏈接可能不可用。非對稱的鏈接是導致MANET路由算法像DSR和AODV不能很好的用于WSN的原因,因為這些協議從源向目的地發送一條詢問信息,然后利用反向的路徑獲取確認信息。反向路徑,由于WSN中的不對稱性發生率很高,不太可靠。

與喚醒/睡眠的整合:為了節約能量,許多WSN將點置入睡眠狀態。顯然,一個醒著的節點里應當選擇一個睡眠狀態的節點作為它的下一跳(除非它先喚醒該節點)。

單播,組播和任播語義:正如上面提到的,在大多數情況下一個WSN將一條信息路由到一個地理的目的地。當它到達目的的,會發生什么呢?有幾種可能性。首先,此信息也包括一個特定單播節點作為目標,或者語義也可能是一個最接近地理終點的節點會成為單播節點。第二,語義可能是,在一個目標地址周圍區域中的所有節點都接受到這一信息,這是一區域多播。第三,在目標區域中的任何節點都接受信息,稱為任播。SPEED[5]協議就支持這三種語義。也常有洪泛(多播)到整個網絡的需要。存在許多高效的洪泛路由策略。

時實性:對于一些應用程序,信息必須在一定期限到達目的地。由于在WSN中存在高度不穩定性,要開發一個總是有保證的路由算法很困難。許多協議如SPEED和RAP用了一個速度的概念來將包傳輸進行優先次序的化分。速度是一個很好的度量標準,它聯合了時間期限和一條信息必須傳輸的距離。

移動性:路由將會變得復雜,如果信息源和目的都在移動的話。解決方法包括更新本地相鄰路由表或者確定代理接點,由它負責跟蹤節點所在位置。一給定節點的代理節點也可能改變,當一個節點越來越遠離它的初如位置時。

空洞:因為WSN節點傳輸范圍有限,對于一些節點,在路由路徑上,在一條信息應該經過的方向上,沒有轉發節點。像GPSR這樣的協議,通過選擇一些不在正確方向的節點,以圖找到一條繞過空洞的路徑,解決了這一問題。

安全性:如果對手存在,他們可以干各種各樣的對路由算法的攻擊,包括選擇性轉發,黑洞,重播,蟲洞和拒絕服務攻擊。不幸的是,幾乎所有的路由算法都忽略了安全性并且很容易 受到這些攻擊。像SPINS這樣的協議開始解決安全路由的問題。

擁塞:今天,許多WSN通信具有周期性或很少通信。擁塞似乎不是一個問題對于這樣的網絡來說。然而,擁塞對于有更多要求的WSN來說將會成為問題,對于一些處理音頻,視頻和處理多個基站的大系統來說,這一問題更加突出。甚至在只有一個基站的系統中,在基站附近的擁塞也會是一個嚴重的問題,因為所以的通信聚集于基站。解決方案使用背壓力,減少源節點傳輸率,扔掉不太重要的信息,并能過調度避免盡可能多的沖突,它們只會加劇擁塞問題。

4、節點定位

節定定位是確定在系統中的每個節點的地理位置的問題。定位問題對于WSN來說是必須解決的,最基本、最困難的問題之一。區域是許多參數和要求的函數,使得它非常的復雜。例如,要考慮的問題包括:額外的定位硬件的成本,信標(自己自己位置的節點)存在嗎,如果在在的話,有多少個,它他的通信范圍是多大,需要的定位精度是多少,系統是室內的還是室外的,節點之間是否有視線,它是一個二維的、還是三位的定位問題,能量預算是怎樣的(信息數量),需要多長時間來定位,時鐘是同步的嗎,系統處在友好還是敵對區域,有什么錯誤的假設正在作出,系統對象是否受到安全攻擊。

針對某些要求和問題的難題可輕易的解決。如果成本和外形尺寸不是主要的問題并且米級別的精度是可接受的,那么對于戶外系統,節點裝備上GPS就可以解決問題。如果系統需要一次一個節點的手動方式部署,那么一個由部署者攜帶的簡單GPS節點能夠定位每一個節點,依次地,能過一被叫做步行GPS的方案(Walking GPS)。盡管簡單,這一方案很精巧,在對每一個節點的定位中避免了手動操作。

許多其他的在WSN中的定位方案要么是基于范圍,要么與范圍無關。基于范圍的機制利用各種技術首先確定節點之間的距離(范圍),然后利用幾何定理計算位置。為了測定距離,需要采用額外的硬件,比如用來偵測聲波和無線電波到達的時間差異。此差異可以被轉換為距離的度量。在范圍無關的機制中,距離不是直接測定的,但是我們使用跳數。一旦跳數被確定了,節點之間的距離可通過每跳平均距離來估計,然后利用幾何定律被來計算位置。范圍無關的方案沒有基于范圍的方案精確,并且常需要更多的信息。然而它們不要求每個節點具備額外的硬件。

幾個早期的定位方法包括Centroid[1]和APIT[6]。每一個這類方法解決了基于特定建設的某一定位問題。兩個最近有趣的方法是SpotLight和Radio Interferometric Geolocation [20]。聚光燈將許多的定位代碼和開銷移到中心的一個激光設備上。Spotlight需要光線和時鐘同步不。Radio interferometric geolocation 使用一種新奇的網內處理技術,它依靠節點同時發出頻率稍微不同的無線電波來完成。這一方案是針對一些部署中的多路問題的,要求許多信息。當前這兩種方法都提供了高達厘米級的精度。

5時鐘同步

在一個WSN中,每個節點的時鐘在一個小的量內應當相同,并且保持下去。由于時鐘隨著時間漂移,他們必須周期性地重新財步,并且在某些情況下,需要非常高的精確度時,在同步期間對時鐘漂移的計數很重要。

時鐘同步由于很多原因是很重要的。當一個事件在WSN中發生時,知道它在哪里,什么時間發生是很必要的。時鐘也常用于許多系統和應用程序任務。例如,睡眠/蘇醒的安排,一些定位算法,傳感器融合就是一些需要依靠時鐘同步的服務。應用程序像追蹤和計算速度也要依靠同步時鐘。

用于時鐘同步和互聯網的的NTP協議對于WSN來說開銷太大了。每個節點內置GPS成本又太昂貴了。已經開發的用于WSN的典型時鐘同步協議有RBS和FTSP[19]。

在RBS中,一個參考的時間消息被廣播到相鄰節點。當消息接受到時,接受器記錄下這一時間。節點之間交換它們記錄的時間并且調整它們的時鐘以達到同步。此協議遭受非發射端非確定性,因為時間戳僅在接受端。精確度大約只有30微秒一跳。它不適用于多跳系統,但是可以被擴展。

在TPSN中,為整個網絡生成了一棵生成樹。該方案假設生成樹中的所有鏈接是對稱的。然后從樹根開始,沿著樹的邊進行成對的同步。因為不像在RBS中有廣播存

在,TPSN是代價昂貴的。此協議一個關鍵屬性是時間戳被插入到MAC層的傳出訊息中,因此減少了非確定性。精確度可達17微秒的范圍。

在FTSP中,有無線電層的時間戳,傾斜補償,線性回歸,定期洪泛,來確保這一協議的穩健性,適應拓撲結構的變化。傳輸和接收信息都在無線電層帶上了時間戳,差距用于計算和調整時鐘偏移。精確度在1-2微秒范圍。

在使用時鐘同步協議時,需要注意的是:選擇同步的頻率,確定在時鐘同步期間,時鐘漂移是否必須。如何處理多跳/網絡問題,并盡量減少能源開銷和增加的網絡擁塞。

6、電源管理

許多用于WSN的設備像Mica2和MicaZ要兩節AA電池帶動。根據節點的不同活動級別,如果沒有電源管理策略,它的壽命可能只有幾天。由于大多數系統需要更長的壽命,許多重大的研究可以保證,在滿足基本需求的情況下,使用時間。

在硬件層面上,可以增加太陽能電池或者使用清潔的動能和風能。電池能力也在不斷提高。如果外形大小不成為問題,則可以增加更多的電池。低電源電路和微控制器也在逐漸進步。許多硬件平臺讓設備的各個部分(每個傳感器,發送器,微處理器)具有多個省電狀態(關閉,閑置,開啟)。通過這種方法,僅在某個時間需要的組件才開啟。

在軟件層面上,電源管理解決方案的目標:(1)由于傳輸信息和監聽信息很耗能量,盡量減少通信(2)對節點或節點的組成部分建立睡眠/喚醒機制

最小化通信信息量是一個綜合問題。例如,有一個好的MAC協議,就會減少沖突和重發。有一個好的路由算法,短路徑和擁塞的避免或減少就可以實現,并且也可最小化發送信息的量。若能高效的找到相鄰節點,則時間同步,定位,廣播的查詢和洪泛都能減少信息量,從而增加使用壽命。

對于如何安排睡眠/喚醒模式的方法,存在很大的差異。許多解決方案試圖讓醒著的節點(被稱為哨兵)數量最少,為了阻止所有節點睡眠,必須確保所需的感知覆蓋范圍。為了平衡各節點能量消耗,周期性地執行一個論換機制,選出新的哨兵參加下一個時間段。另一個常用技術是讓各節點以一定占空比的形式工作。例如,讓一個節點一秒內保持清醒狀態200微秒,則它的占空比為20%。占空比的選擇取決于應用程序的要求,但最終的結果通常是極大地節省了能源。請注意,占空比法和哨兵法可能聯全起來應用,如在軍事偵察系統VigilNet[7][9]中,就是這樣。

7、應用程序和系統

為了展示WSN的能力,我們舉了兩個應用程序和與此相關的系統的例子。7.1監視和跟蹤

VigiNet系統是一個用于軍事偵察的長期實時無線傳感器網絡。它的主要目標是:在敵對區,當感興趣的事件發生時,警告軍事指揮部和控制單元。感興趣的事件包括:

人的出現,帶武器的人員出現,大型和小型交通工具經過。成功的探測,跟蹤和分類要求應用程序以可接受的精度和準確度,獲取目標的位置。當信息被成功獲取后,在一個可接受的延遲期內,將它報告給無遠程的基站。VigilNet是一個自我組織運行的傳感器網絡(有超過200個XSM微塵節點),它提供了以絆線為基礎的監視功能,通過以哨兵為基礎的電源管理機制來達到3到6個月的壽命長度。絆線也是僅在需要時才激活外部的傳感器(在正常Vigilnet系統之外),如紅外攝像機,這也增加了壽命。

圖1.1提供了該系統的架構概況,基中有三種組件:1)應用程序組件,2)中間件組件,和3)TinyOS系統組件。應用程序組件為監視目的而設計,包換1)一個基于實體的跟蹤組件,2)分類組件,它提供了四種目標的區分,3)速度計算,它人提供目標速度和方向的估計,4)錯誤警報過濾,它可區分真、假目標。

中間件組件被設計來使獨立于應用程序。時間同步,定位和路由組成了低級組件,它們形成了實現更高級中級間服務,像聚合和電源管理的基礎。時間同步和定位對于一個監視系統是很重要的,因為協同檢測和追蹤進程依賴于多個節點發送的追蹤報道之間的時空聯系。

時間同步模塊負責本地節點時鐘和基站時鐘的同步。定位模塊負責確保每個節點能找到它自己的位置。配置模塊負責動態配置系統,當系統要求改變時。非對稱測試模塊設計來協助路由模塊來選擇高質量的通信鏈路。無線電喚醒模塊用于警告非哨兵節點,當重大事件發生時。電源管理和協作檢測是由VigilNet提供的兩個關鍵的高級別服務。哨兵服務和絆線管理負責電源管理,而組管理模塊負責事件的聯合探測和追蹤。哨兵和絆線服務通過選擇節點的一部分(它們被定義為哨兵)來監視事件,從而達到省電的目的。其他剩余的節點可以處于低耗電狀態,至到一個事件發生。當一個事件發生時,哨兵喚醒事件區域中的其它節點,同時組管理組件動態地將節點組織成組,以實現協同跟蹤。這兩要組件也一起負責跟蹤能量消耗相關的事件。

VigiNet系統的架構建立在TinyOS基礎上。TinyOs是一個事件驅動的計算模塊。針對特定節點平臺,用NesC寫成的。TinyOs提供了一個必要的組件集合,像硬件驅動,一個調度機制和基本的通信協議。這些組件為VigiNet模塊提供了低層支持,它們也是用NesC語言寫的。TinyOS的組件和VigiNet的應用程序先被NESC編譯器處理成一個可執行程序,它可以在XSM(和MICA2)節點平臺上運行(在VigelNett系統中)。

圖1.1 VigilNet系統架構

8、總結

這一章討論了WSN的相關問題和MAC層、路由、定位、時鐘同步、電源管理的實際例子。為什么這些解決方案與過去的網絡解決方案如此的不同。還對當前的兩個WSN系統進行了簡單的描述:一個軍事監視、跟蹤和分類系統,一個輔助生活設施系統。

盡管這些問題是WSN的關鍵問題,還有許多重要的話題在本章中無談到。例如安全和隱私對這些系統來說是很關鍵的功能。編程抽象和WSN的語言也是一個很活躍的研究領域。一些重大的研究在收集關于WSN性能的實證數據。這些數據對于提高模塊和解決方案很關鍵。調試工具和WSN管理工具也開始出現。

傳感器網絡研究產生的新技術正在應用到許多實際項目中。未來將會看到這些技術的加速應用。

參考文獻

[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.

第三篇:無線傳感網絡課程設計

無線傳感網絡 課程設計報告

姓名:胡韶輝 胡衎

2017

學號:139074377 139074376 班級:物131班 指導教師:衛琳娜

年1月1日

無線傳感網絡課程設計

實驗

一、無線傳感網絡點對點通信實驗

1.實驗內容

此實驗為驗證實驗,根據實驗步驟進行實驗,觀察結果是否與預期相符

2.實驗步驟

用IAR8.1打開路徑:C:UsersxsDesktop無線傳感器網絡課程設計無線傳感網實驗資料201604感知RF2-2530WSNV1.2代碼和例子程序Light_SwitchIDELight_Switchsrf05_cc2530IarLight_Switch.eww分別編譯并下載至兩個節點上,打開節點,左右鍵選擇/,選擇完成后按中間鍵確認,觀察LED燈顯示情況。3.實驗代碼及分析

/* 功 能:查找字符在索引中的哪一個位置 */ /**************************************************************************************************/ 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!= '

主站蜘蛛池模板: 狠狠躁18三区二区一区| 国产免费视频| 天天澡夜夜澡人人澡| 女人被爽到呻吟gif动态图视看| 韩国19禁无遮挡啪啪无码网站| 色狠狠久久av五月综合| 天天爱天天做天天做天天吃中文| 国产精品久久久久影院色| 亚洲乱码精品久久久久..| 久久精品国产首页027007| 久久精品国产一区二区三区不卡| 国产亚洲精aa在线观看| 国产成人理论无码电影网| 亚洲人成人无码网www国产| 久久精品国产一区二区三区| 国产欧美日韩一区二区图片| 国产婷婷在线精品综合| 国产在线精品成人一区二区| 亚洲午夜久久久影院| 久久99国产精品久久| 亚洲a无码综合a国产av中文| 亚洲 欧洲 日韩 综合二区| 99久热国产精品视频尤物| 日本高清视频网站www| 粗大猛烈进出高潮视频免费看| 激情综合色五月丁香六月欧美| 4399理论片午午伦夜理片| 亚洲在av极品无码天堂手机版| 亚洲综合在线另类色区奇米| 中文字幕资源网| 中国娇小与黑人巨大交| 国产绳艺sm调教室论坛| 国产亚洲精品久久一区二区三区| 热re99久久精品国产66热| 亚洲精品久久久久成人2007| 无码av中文字幕久久专区| 亚洲 欧美 日韩 国产综合 在线| 人与嘼交av免费| 性色av一区二区三区夜夜嗨| 中文字幕亚洲乱码熟女一区二区| 丝袜 中出 制服 人妻 美腿|