CC1101的遠距離無線數據傳輸協議設計
摘要:本文設計了一種基于CC1101的遠距離無線傳輸協議,通過構筑網絡拓撲結構實現了對節點的分層管理,確保數據在多層節點間有序準確的傳輸,使傳輸距離最遠可達到100km以上,節點數量可以增加到6萬個,實現遠距離、多節點的數據傳輸。
本文引用地址:http://www.j9360.com/article/201610/307265.htm引言
隨著通信技術的不斷發展和完善,無線通信技術已經廣泛應用于很多領域。目前應用較為廣泛的是藍牙、ZigBee和WiFi等短距離無線傳輸技術,但是它們的傳輸距離短,無法滿足工農業與監控等領域對傳輸距離和覆蓋范圍的需求,因此本文設計一種基于CC1101芯片的遠距離無線傳輸協議。CC1101芯片,具有低成本、低功耗、小體積、使用簡單、操作靈活等特點,其傳輸距離一般為400~800 m,具有很好的數據包處理機制和充足的發射/接收緩沖區,適用于無線遠程數據傳輸系統。
物聯網細分為5層結構:感知層、接入層、網絡層、支撐層和應用層。本文基于CC1101無線收發芯片,設計一種無線傳輸協議,完成物聯網5層體系構架中從感知層到網絡層的數據交換,是相對遠距離的數據傳輸在接入層的一種新的傳輸方式。本文通過設計基于CC1101芯片的無線傳輸協議,擴大物聯網感知層到網絡層的傳輸距離,豐富接入層無線傳輸的方式,彌補了CC1101芯片針對遠距離無線傳輸協議的不足。
1 協議的整體架構
本文將物理節點劃分為3種類型:中心節點、路由節點和終端節點。中心節點是整個網絡協議的匯聚中心,負責形成和維護整個傳輸系統的路由結構,實現對終端節點的檢測與控制,完成對采集數據的處理和存儲。路由節點是整個網絡協議的傳輸系統,負責完成整個系統命令的下達和數據的傳輸,是整個協議數據傳輸的運輸樞紐。終端節點作為中心節點命令的執行者,是最底層節點,可與傳感器相連,負責數據的采集。3種節點間的關系如圖1所示。

從整體上看,中心節點負責維護所有路由節點,而路由節點管理其范圍內的終端節點,終端節點通過解析中心節點的命令,將執行命令后產生的數據通過路由節點上交給中心節點處理。因此,三者各司其職,共同完成整個系統的任務。
根據3種節點的關系可構建“一全多局”路由表,路由表負責記錄整個系統的網絡拓撲結構,控制數據幀傳輸的路線,并據此提出一種二次攜帶信息廣播協議,來提高回應節點的完整性。本文基于TCP/IP協議分層的設計思想,綜合CC1101無線收發芯片的特征,按照傳輸協議數據幀傳輸的流程,將傳輸協議結構細分為5層結構,完成一全多局”路由表的組建和數據在節點間的相互傳輸。
為了實現遠距離和多節點的數據采集,本文在8位地址濾波接收模式的CC1101無線收發芯片中添加接收/發送放大器,最遠可以傳輸800 m,最多可以帶255個節點,通過芯片節點的3種劃分方式,以CC1101發送和接收距離500 m為單位,傳輸距離最遠可達到100 km以上,節點數量可以增加到6萬個。
2 協議路由
2.1 路由表
本文設計一種“一全多局”的路由信息表。“一全”指中心節點擁有全局拓撲網絡路由節點的路徑信息,即所有路由節點與其相鄰節點的層次結構關系;“多局”指路由節點存儲與其相鄰的路由節點的信息。路由信息表結構如表1所列,該表有兩個優點:第一是占用空間小,第二是可快速檢索一條最短路徑。

2.2 路由表構建
本文基于路由表的結構,采用一從多主的方式構建路由表信息。即一個從節點(中心節點)用于隨時接收路由節點發送的路由信息,多個主節點(路由節點)用于定時向中心節點發送其相鄰的路由信息。所有的路由節點啟動一個隨機定時器,每隔隨機的時間就會發送一次廣播,獲得其相鄰節點的信息,然后發送給中心節點,中心節點收到信息幀之后,構建路由表。這種方法構建的路由表信息更新速度更快,應用更靈活。
2.3 數據傳輸路徑
根據“一全多局”路由表,以一種組網方式為例,截取部分全局路由表信息如表2所列。例如從中心節點傳遞數據給路由節點4(1到4),首先可以快速定位到 ID等于4的位置,并獲得其父鏈表中的一個父節點ID為2,再定位到ID等于2的位置,并獲得其父鏈表中一個父節點ID為6,然后定位到ID等于6的位置,得到其父節點1,1為中心節點,所以其路徑為1—6—2—4。由于定位在數組中,省略遍歷路由表的時間,加快路徑確定的速度。另外,從表2中可以看出,4節點所在的層次為3,說明1—6—2—4為最短跳變,從而證明全局路由表設計的準確性。
2.4 二次攜帶信息廣播協議
路由表負責記錄整個系統的網絡拓撲結構,控制數據幀傳輸的路線,因此路由表的完整性和準確性關系到數據傳輸速度和協議運行的效率。而廣播作為路由表的生成基礎,直接影響路由表的完整性和準確性。
本文提出一種二次攜帶信息廣播協議,來提高回應節點的完整性。
二次攜帶信息廣播:源節點首先發送一次廣播命令并啟動一個廣播定時器,收到廣播命令的節點,按照防碰撞算法進行廣播命令的回應源節點在廣播定時器超時之后,將收到的回應信息節點地址放入到第二次廣播命令幀中,進行第二次攜帶信息廣播,收到該廣播命令的目標節點首先在廣播命令幀中查找自己的地址,如果找到,則不進行廣播回應,否則按照防碰撞算法進行廣播回應。二次攜帶信息廣播的過程如圖2所示。

按照二次攜帶信息廣播的過程,其廣播命令幀的格式如下:

根據二次攜帶信息廣播的原理和過程,設計如圖3所示的流程。因為廣播處在協議層次中的鏈路層,因此,此圖的左半部分表示鏈路層程序流程,右半部分為二次攜帶信息廣播的程序流程。

3 協議層次結構
協議劃分的5層從底層到高層依次是物理層、鏈路層、網絡層、解析層和應用層。每層負責解析自身層次數據幀,對其他層的數據格式不可見。各層的層次說明如表3所列。

根據以上5層結構中各層不同的功能,協議數據傳輸的過程如圖4所示,可以得出,在源節點到目標節點數據流過5層,然而在中間路由節點,只需要經過協議的底3層,即中間路由節點對傳輸的數據是不可見的。

各個協議層的功能如下:
①物理層是協議層中的最底層,負責數據傳輸之前監測信道是否空閑,防止數據碰撞的發生,以便保證點對點數據傳輸的準確性。
②鏈路層主要在相鄰節點間實現數據準確無誤的傳輸,使上層不用擔心幀丟失、干擾和錯誤等問題,向上層提供準確的數據包。
③協議網絡層主要提供數據傳輸的路徑,使數據能夠按照最短路徑完成傳輸,并向上層提供簡單靈活、無連接、盡最大努力交付的數據服務。網絡層服務質量關系到數據包傳輸的速度和網絡的穩健性,是分層傳遞的關鍵技術。
當處理節點不可達信息回傳時,可能會出現死循環現象,因此本文規定:如果數據幀向下層節點傳輸的過程中出現不可達節點,則把節點不可達信息返回給中心節點,以便中心節點為完成數據幀傳輸做出進一步處理;但是,如果數據幀向上層節點傳輸的過程中出現不可達信息,則直接丟棄數據幀,等待中心節點超時,中心節點超時沒有收到回應信息,就會重傳,重傳超時會更新路由表或選擇其他線路完成數據的傳輸。
④解析層主要為應用層提供一個統一的接口,應用層可以通過該接口,完成命令幀的封裝和發送。除此之外,解析層將整個網絡拓撲結構放在Linux內核內存空間,為了快速響應應用層對拓撲網絡的請求命令,為應用層訪問路由表信息提供一組路由相關的命令接口。
⑤應用層相當于用戶在協議的基礎上,通過調用解析層提供的接口,完成對終端節點的檢測和控制。開發人員只要了解相關的接口和需要實現的功能,即使不懂協議,也可以完成程序開發。
4 系統測試
全局路由表是整個協議的核心內容,它的準確性是整個系統是否能夠正常、快速運行的關鍵。因此,可以通過部署不同網絡結構、比較網絡結構與路由表記錄的結構,進而驗證協議路由表映射的準確性。本文設計單層、雙層交叉網絡結構,對協議全局路由表進行層次性測試,通過開發板輸出的全局路由表結構與實際路由節點部署對比,驗證各種層次結構路由協議運行的準確性。
路由表單層測試結構設計如圖5(a)所示,單層模式下開發板輸出全局路由表測試結果如圖5(b)所示。從輸出結果可以看出,ID為01的節點層次為0,父節點為-1,說明該節點是中心節點,其余節點層次都為1且父節點都只有01,從而可以證明,全局拓撲網絡為以01節點為中心的單層結構。此結論與圖 5(a)中的單層結構圖相符,證明了協議單層結構中運行的準確性和全局路由表的完整性。

在實際環境部署節點的過程中,節點路徑不可能都是簡單的無交叉分支結構,其分支必定存在一定程度的交叉。因此,本文設計了雙父節點雙層結構測試模式,其整體節點部署如圖6(a)所示,圖6(b)為該模式下節點組網完成后的全局路由表。從輸出的結果可以看出,第二次路由節點包括09、0C和0D,09有兩個父節點0B和0E,0C和0D分別是0B和0E的子節點,0B和0E位于第一層,其父節點為01。其結果顯示與實際路由分布一致,從而證明,在雙父節點雙層結構模式下協議運行正確。

結語
本文通過設計一種遠距離無線傳輸協議,實現了基于CC1101無線芯片的遠距離、大面積范圍的數據傳輸。首先構建了協議的整體構架,然后設計了記錄網絡結構的路由信息表并根據數據傳輸過程對協議進行層次劃分,最后詳細分析了協議在各個協議層間的工作過程及協議原理。此協議彌補了CC1101芯片針對遠距離無線傳輸協議的不足,可應用于工農業現場數據的采集以及監控等領域。
評論