概述
1. 無線傳感網主要特點:
(1)網絡規模大
(2)拓撲結構易變
(3)自組織性
通過多跳的方式傳遞信息
(4)以數據為中心
(5)結點資源受限
(6)應用相關性
2.無線傳感器節點的硬件一般由傳感器模塊、處理器模塊、無線通信模塊、存儲模塊和能量供應模塊
- 注意下面模塊包含的內容
![ima
傳感器模塊負責整個監測區域內信息的采集和數據轉換,它由傳感器和模數轉換器組成。
微控制器模塊負責控制和協調節點各部分的工作,存儲和處理自身采集的數據以及其他節點發送的數據
無線通信模塊負責與其他傳感器節點進行無線通信,交換控制消息和收發采集的數據。
能量供應模塊為傳感器節點提供運行所需能量
3.TinyOS采用基於組件的架構
4.NesC應用程序開發中,需要定義、使用兩種功能不同的組件,分別稱為模塊(module)和配置(configuration).
模塊主要用於描述組件的接口函數功能等的實現,而配置主要描述不同組件之間的接口關系。
6.NesC最大的特點是將組件化/模塊化思想與基於事件驅動的執行模型相結合
5.C51語言既有高級語言的特點,又具有匯編語言的特點
無線傳感網組織結構
總體結構
節點
-
各傳感器結點是一個微型嵌入式系統
-
傳感器節點具有數據采集、初步本地信息處理、無線數據傳輸及與其它節點協同工作的能力
-
前端現場節點可分類為:協調器節點(可以作為Sink節點)、路由節點和終端節點。(zigbee網絡術語)
-
協調器節點主要用於啟動和維護以自己為中心的感知網絡
-
路由節點除了具有感知和轉發數據功能外,還需要對其他節點轉發的數據進行一定的存儲、管理和融合等處理,以及同其他結點協作完成一些特定任務
-
終端節點攜帶的傳感器用於感知物理信息,不具有數據轉發能力,僅僅與其父節點進行通信。
-
匯聚節點(Sink Node)又稱為網關節點,實現網絡間的橋接功能,可完成兩種協議棧之間的通信協議轉換,發布任務管理節點的監測任務,實現數據融合功能(分析提取,去冗余)
-
任務管理節點位於整個系統的最高層,通過Internet等與匯聚節點通信,可根據需要進行數據挖掘方面的操作,以獲取更深層次的數據意義。
節點通信模塊
-
無線傳感器網絡的傳輸協議可分為物理層、鏈路層(MAC層)、網絡層、傳輸層和應用層。但是傳感器網絡節點的資源能力有限,通常情況下,其傳輸層的功能比較弱化
-
無線通信模塊在硬件層面主要涉及到無線通信協議中的物理層和MAC層技術
-
傳感器網絡是低功耗、低速率、長壽命的無線通信網絡
-
節點通信模塊的能耗在傳感器節點中占主要部分(重要),所以通信模塊必須是能耗可控,優先低功耗芯片
-
能耗依然是MAC層要重點關注的方面。為減少能耗,節點大部分時間里應該進入休眠狀態,要求鏈路層協議能夠解決節點通信的同步問題,即數據交換的節點雙方需要在通信時同時醒來。
-
所有節點在通信上的地位對等,也就是說沒有節點的優先級區分,所以為了網絡處在有效狀態,需要全網節點或一定范圍內的節點的同步,而不是簡單倆個節點間的同步。
-
射頻芯片最基本應具有信號調制和信道采樣功能
控制器模塊
- 功能
- 無線傳感器節點的核心部件,所有的節點控制、任務調度、通信協議、數據整合與數據轉儲等功能都在這個模塊的支持下完成
- 任務
- 讀取來自傳感器的感知數據,並按照要求進行一定的計算和處理
- 從通信模塊接收到其他節點的數據和控制信息,然后進行數據的處理,並對硬件平台相關模塊進行控制
- 通信協議的處理,完成對網絡通信過程中MAC和路由協議等的處理
- 特征
- 體積盡量小
- 集成度盡量高
- 低功耗
- 運行速度快
- 豐富的I/O接口
- 成本低
二維協議棧結構
-
無線傳感器網絡具有自組織、動態拓撲、分布式控制、以數據為中心和節點資源受限等特征
- 資源受限導致其協議設計與傳統網絡存在一定區別
- 無線傳感器網絡具有二維協議棧結構,即橫向的通信協議層(傳統)和縱向的傳感器網絡管理面
各層功能
- 橫向
- 應用層包括多種應用相關協議,提供面向用戶的不同傳感器網絡應用服務
- 傳輸層負責應用層所要求的可靠數據傳輸、端到端
- 網絡層則主要負責對來自傳輸層的數據提供路由功能
- 數據鏈路層負責數據幀的收發、介質訪問、差錯控制等
- 物理層負責數字信號在物理介質上的傳送,包括信道選擇、信號調制解調、發送與接收等
- 縱向
- 能量管理負責管理傳感器節點用於監測、處理、發送和接收所需的能量,可以通過在各協議層使用高效的能量控制機制來實現
- 拓撲管理:通過選擇部分骨干節點、而讓大量其它冗余節點進入睡眠狀態,以形成一個數據轉發的優化網絡組織結構;或者按照某種規則通過節點的功率控制來減少節點之間的通信沖突,以實現優化的網絡結構
- 安全管理:則是為傳感器網絡在不同層面提供安全機制,實現數據的安全傳輸和隱私數據不泄漏
網絡層
- 無線傳感器網絡的網絡層協議主要功能是:路由發現和路由維護
- 以多跳的方式進行數據轉發
- 從匯聚節點到傳感器節點的數據發送是一對多模式,通常采用洪泛(flooding)的數據傳輸機制;而從傳感器節點向匯聚節點發送數據的方式則是多對一(sinking/ converging),存在路由選擇問題
- 多跳,短距離通信不僅能夠大大降低節點的能耗,而且能夠有效減小長距離通信固有的信道衰落效應
- 主要的路由協議包括數據分發協議、數據匯聚協議、數據洪泛協議Flooding
- CTP協議由:鏈路估計器、路由引擎和轉發引擎三部分組成
數據鏈路層
- 數據鏈路層協議主要完成數據成幀(framing)、幀同步、媒體接入控制和差錯控制
- 媒體接入控制保證如何實現介質的高效訪問、減少沖突
- 差錯控制則是保證源節點發送的數據完整無誤地到達目的節點
- 重要功能
- 介質訪問控制
- MAC機制的主要目標:是在多個傳感器節點之間公平、高效地共享通信介質或信道資源,以獲得合理的網絡性能
- 傳統無線網絡中的MAC協議設計沒有考慮無線傳感器網絡的節點資源限制,無法直接應用於無線傳感器網絡
- 無線傳感器網絡的主要問題是如何節省能量,以延長網絡壽命
- 主要的鏈路層協議包括BMAC、SMAC、IEEE 802.15.4和ZMAC等
- 數據傳輸差錯控制
- 前向糾錯FEC(Forward Error Correction)
- 通過在數據傳輸中使用差錯控制碼ECC(Error Control Code)獲得鏈路可靠性,但由於引入額外的編、解碼復雜性,使得一般的傳感器節點難以使用。
- 自動重傳請求ARQ(Automatic Repeat reQuest)
- 通過重傳丟失的數據幀,以獲得可靠的數據傳輸,但是消耗會比較大
- 前向糾錯FEC(Forward Error Correction)
- 介質訪問控制
物理層
- 功能
- 信號的調制、解調和數據收發
- 頻段
- 433MHz和918MHz的ISM頻段被推薦分別在歐洲和北美使用
- 2.4GHz的頻段在全世界范圍內通用。
無線傳感器網絡的物理層
IEEE 802.15.4標准的物理層
- 2003版本一共定義了三種物理層基帶信號,其頻段分別是工作在868MHz、915MHz和2.4GHz范圍
- 物理層幀包括同步頭、物理層幀頭和凈荷三部分
- 同步頭SHR包括前導字段(Preamble)和幀起始符SFD(Start of Frame Delimiter)兩部分
怎么實現同步
- 幀起始符也可以用於進行幀同步,即找到物理層幀真正的起始位置。
- 接收方和發送方在進行同步的時候,接收方使用前導字段和幀起始符與收到的信號做相關運算,如果計算結果達到峰值則表明達到了同步;而如果計算結果沒有達到峰值,則說明接收的信號不是同步頭信號,可能是噪音、或者是同步頭信號但位置不對等等。因此,利用該方法可以得到幀頭的起始位置,也就實現了同步。
基帶信號處理
- 868Hz、915Hz
- 數據比特先進行差分編碼,然后進行比特到碼片的變換,最后經過二進制相移鍵控BPSK調制形成基帶輸出
- 差分編碼是指每個原始比特與前一個已編碼的比特進行異或運算而得到新的比特,因為第1個比特之前沒有比特,所以第1個比特與比特值0進行運算(比特值0是固定的)
- 比特到碼片的變換則是把比特值0變換為包含15個碼片的碼片序列1111 0101 1001 000(從左到右分別是碼片0到碼片14),比特值1則變換為取反的碼片序列0000 1010 0110 111,該變換實際是一個直接序列擴頻的過程,因為碼片變換之后的碼片速率為300k chip/s,擴頻因子是15。(15為碼片的總個數,轉換是一個取反的過程)
- 在得到碼片序列之后,再對碼片序列進行BPSK調制
- 數據比特先進行差分編碼,然后進行比特到碼片的變換,最后經過二進制相移鍵控BPSK調制形成基帶輸出
- 2.4GHz
- 首先,針對物理層數據比特進行比特到符號的變換,然后,每個符號又進行符號到碼片的變換,最后調制方法為O-QPSK
- 比特到符號的變換:每4個比特映射為1個符號
- 符號到碼片的變換,即進行直接序列擴頻操作,每個符號對應一個包含32個碼片的碼片序列
- 0-7:每四個為一位,交替循環 8-15中,8對應0,偶數位不變奇數位取反(從右往左看)
- 首先,針對物理層數據比特進行比特到符號的變換,然后,每個符號又進行符號到碼片的變換,最后調制方法為O-QPSK
簡單應用實例
- 雙線框表示配置組件;雙虛線框表示類,使用時需要new一下;單線框表示模塊組件
- 箭頭是由使用者指向提供者
- MainC組件中,booted()是用戶程序的入口
//配置文件
configuration BlinkTimer{//連接導通
}
implementation{
components MainC,BlinkTimerM,LedsC,new TimerMilliC();
//注意這里的TimerMilliC()是新new出來的
BlinkTimerM.Boot -> MainC.Boot;
BlinkTimerM.Leds -> LedsC;
BlinkTimerM.Timer -> TimerMilliC.Timer;
}
//模塊組件
module BlinkTimerM{
uses{//使用接口,表示用到的接口
interface Boot;
interface Leds;
interface Timer<TMilli>;
}
implementation{
exent void Booted.booted(){//booted為事件函數
call Timer.startPeriodic(1000);
}
event void Timer.fired(){
call Leds.led0Toggle();
}
}
}
- 其中call為向下調用,signal為向上調用
- 這里還有很多,暫時先不寫。。。