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

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

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

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

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

3 協(xié)議層次結構
協(xié)議劃分的5層從底層到高層依次是物理層、鏈路層、網(wǎng)絡(luò )層、解析層和應用層。每層負責解析自身層次數據幀,對其他層的數據格式不可見(jiàn)。各層的層次說(shuō)明如表3所列。

根據以上5層結構中各層不同的功能,協(xié)議數據傳輸的過(guò)程如圖4所示,可以得出,在源節點(diǎn)到目標節點(diǎn)數據流過(guò)5層,然而在中間路由節點(diǎn),只需要經(jīng)過(guò)協(xié)議的底3層,即中間路由節點(diǎn)對傳輸的數據是不可見(jiàn)的。

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

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

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