CC1101的遠距離無線數(shù)據(jù)傳輸協(xié)議設計
掃描二維碼
隨時隨地手機看文章
摘要:本文設計了一種基于CC1101的遠距離無線傳輸協(xié)議,通過構(gòu)筑網(wǎng)絡拓撲結(jié)構(gòu)實現(xiàn)了對節(jié)點的分層管理,確保數(shù)據(jù)在多層節(jié)點間有序準確的傳輸,使傳輸距離最遠可達到100km以上,節(jié)點數(shù)量可以增加到6萬個,實現(xiàn)遠距離、多節(jié)點的數(shù)據(jù)傳輸。
關(guān)鍵詞:CC1101芯片;無線傳輸協(xié)議;網(wǎng)絡拓撲
引言
隨著通信技術(shù)的不斷發(fā)展和完善,無線通信技術(shù)已經(jīng)廣泛應用于很多領(lǐng)域。目前應用較為廣泛的是藍牙、ZigBee和WiFi等短距離無線傳輸技術(shù),但是它們的傳輸距離短,無法滿足工農(nóng)業(yè)與監(jiān)控等領(lǐng)域?qū)鬏斁嚯x和覆蓋范圍的需求,因此本文設計一種基于CC1101芯片的遠距離無線傳輸協(xié)議。CC1101芯片,具有低成本、低功耗、小體積、使用簡單、操作靈活等特點,其傳輸距離一般為400~800 m,具有很好的數(shù)據(jù)包處理機制和充足的發(fā)射/接收緩沖區(qū),適用于無線遠程數(shù)據(jù)傳輸系統(tǒng)。
物聯(lián)網(wǎng)細分為5層結(jié)構(gòu):感知層、接入層、網(wǎng)絡層、支撐層和應用層。本文基于CC1101無線收發(fā)芯片,設計一種無線傳輸協(xié)議,完成物聯(lián)網(wǎng)5層體系構(gòu)架中從感知層到網(wǎng)絡層的數(shù)據(jù)交換,是相對遠距離的數(shù)據(jù)傳輸在接入層的一種新的傳輸方式。本文通過設計基于CC1101芯片的無線傳輸協(xié)議,擴大物聯(lián)網(wǎng)感知層到網(wǎng)絡層的傳輸距離,豐富接入層無線傳輸?shù)姆绞?,彌補了CC1101芯片針對遠距離無線傳輸協(xié)議的不足。
1 協(xié)議的整體架構(gòu)
本文將物理節(jié)點劃分為3種類型:中心節(jié)點、路由節(jié)點和終端節(jié)點。中心節(jié)點是整個網(wǎng)絡協(xié)議的匯聚中心,負責形成和維護整個傳輸系統(tǒng)的路由結(jié)構(gòu),實現(xiàn)對終端節(jié)點的檢測與控制,完成對采集數(shù)據(jù)的處理和存儲。路由節(jié)點是整個網(wǎng)絡協(xié)議的傳輸系統(tǒng),負責完成整個系統(tǒng)命令的下達和數(shù)據(jù)的傳輸,是整個協(xié)議數(shù)據(jù)傳輸?shù)倪\輸樞紐。終端節(jié)點作為中心節(jié)點命令的執(zhí)行者,是最底層節(jié)點,可與傳感器相連,負責數(shù)據(jù)的采集。3種節(jié)點間的關(guān)系如圖1所示。
從整體上看,中心節(jié)點負責維護所有路由節(jié)點,而路由節(jié)點管理其范圍內(nèi)的終端節(jié)點,終端節(jié)點通過解析中心節(jié)點的命令,將執(zhí)行命令后產(chǎn)生的數(shù)據(jù)通過路由節(jié)點上交給中心節(jié)點處理。因此,三者各司其職,共同完成整個系統(tǒng)的任務。
根據(jù)3種節(jié)點的關(guān)系可構(gòu)建“一全多局”路由表,路由表負責記錄整個系統(tǒng)的網(wǎng)絡拓撲結(jié)構(gòu),控制數(shù)據(jù)幀傳輸?shù)穆肪€,并據(jù)此提出一種二次攜帶信息廣播協(xié)議,來提高回應節(jié)點的完整性。本文基于TCP/IP協(xié)議分層的設計思想,綜合CC1101無線收發(fā)芯片的特征,按照傳輸協(xié)議數(shù)據(jù)幀傳輸?shù)牧鞒蹋瑢鬏攨f(xié)議結(jié)構(gòu)細分為5層結(jié)構(gòu),完成一全多局”路由表的組建和數(shù)據(jù)在節(jié)點間的相互傳輸。
為了實現(xiàn)遠距離和多節(jié)點的數(shù)據(jù)采集,本文在8位地址濾波接收模式的CC1101無線收發(fā)芯片中添加接收/發(fā)送放大器,最遠可以傳輸800 m,最多可以帶255個節(jié)點,通過芯片節(jié)點的3種劃分方式,以CC1101發(fā)送和接收距離500 m為單位,傳輸距離最遠可達到100 km以上,節(jié)點數(shù)量可以增加到6萬個。
2 協(xié)議路由
2.1 路由表
本文設計一種“一全多局”的路由信息表。“一全”指中心節(jié)點擁有全局拓撲網(wǎng)絡路由節(jié)點的路徑信息,即所有路由節(jié)點與其相鄰節(jié)點的層次結(jié)構(gòu)關(guān)系;“多局”指路由節(jié)點存儲與其相鄰的路由節(jié)點的信息。路由信息表結(jié)構(gòu)如表1所列,該表有兩個優(yōu)點:第一是占用空間小,第二是可快速檢索一條最短路徑。
2.2 路由表構(gòu)建
本文基于路由表的結(jié)構(gòu),采用一從多主的方式構(gòu)建路由表信息。即一個從節(jié)點(中心節(jié)點)用于隨時接收路由節(jié)點發(fā)送的路由信息,多個主節(jié)點(路由節(jié)點)用于定時向中心節(jié)點發(fā)送其相鄰的路由信息。所有的路由節(jié)點啟動一個隨機定時器,每隔隨機的時間就會發(fā)送一次廣播,獲得其相鄰節(jié)點的信息,然后發(fā)送給中心節(jié)點,中心節(jié)點收到信息幀之后,構(gòu)建路由表。這種方法構(gòu)建的路由表信息更新速度更快,應用更靈活。
2.3 數(shù)據(jù)傳輸路徑
根據(jù)“一全多局”路由表,以一種組網(wǎng)方式為例,截取部分全局路由表信息如表2所列。例如從中心節(jié)點傳遞數(shù)據(jù)給路由節(jié)點4(1到4),首先可以快速定位到 ID等于4的位置,并獲得其父鏈表中的一個父節(jié)點ID為2,再定位到ID等于2的位置,并獲得其父鏈表中一個父節(jié)點ID為6,然后定位到ID等于6的位置,得到其父節(jié)點1,1為中心節(jié)點,所以其路徑為1—6—2—4。由于定位在數(shù)組中,省略遍歷路由表的時間,加快路徑確定的速度。另外,從表2中可以看出,4節(jié)點所在的層次為3,說明1—6—2—4為最短跳變,從而證明全局路由表設計的準確性。
2.4 二次攜帶信息廣播協(xié)議
路由表負責記錄整個系統(tǒng)的網(wǎng)絡拓撲結(jié)構(gòu),控制數(shù)據(jù)幀傳輸?shù)穆肪€,因此路由表的完整性和準確性關(guān)系到數(shù)據(jù)傳輸速度和協(xié)議運行的效率。而廣播作為路由表的生成基礎(chǔ),直接影響路由表的完整性和準確性。
本文提出一種二次攜帶信息廣播協(xié)議,來提高回應節(jié)點的完整性。
二次攜帶信息廣播:源節(jié)點首先發(fā)送一次廣播命令并啟動一個廣播定時器,收到廣播命令的節(jié)點,按照防碰撞算法進行廣播命令的回應源節(jié)點在廣播定時器超時之后,將收到的回應信息節(jié)點地址放入到第二次廣播命令幀中,進行第二次攜帶信息廣播,收到該廣播命令的目標節(jié)點首先在廣播命令幀中查找自己的地址,如果找到,則不進行廣播回應,否則按照防碰撞算法進行廣播回應。二次攜帶信息廣播的過程如圖2所示。
按照二次攜帶信息廣播的過程,其廣播命令幀的格式如下:
根據(jù)二次攜帶信息廣播的原理和過程,設計如圖3所示的流程。因為廣播處在協(xié)議層次中的鏈路層,因此,此圖的左半部分表示鏈路層程序流程,右半部分為二次攜帶信息廣播的程序流程。
3 協(xié)議層次結(jié)構(gòu)
協(xié)議劃分的5層從底層到高層依次是物理層、鏈路層、網(wǎng)絡層、解析層和應用層。每層負責解析自身層次數(shù)據(jù)幀,對其他層的數(shù)據(jù)格式不可見。各層的層次說明如表3所列。
根據(jù)以上5層結(jié)構(gòu)中各層不同的功能,協(xié)議數(shù)據(jù)傳輸?shù)倪^程如圖4所示,可以得出,在源節(jié)點到目標節(jié)點數(shù)據(jù)流過5層,然而在中間路由節(jié)點,只需要經(jīng)過協(xié)議的底3層,即中間路由節(jié)點對傳輸?shù)臄?shù)據(jù)是不可見的。
各個協(xié)議層的功能如下:
①物理層是協(xié)議層中的最底層,負責數(shù)據(jù)傳輸之前監(jiān)測信道是否空閑,防止數(shù)據(jù)碰撞的發(fā)生,以便保證點對點數(shù)據(jù)傳輸?shù)臏蚀_性。
②鏈路層主要在相鄰節(jié)點間實現(xiàn)數(shù)據(jù)準確無誤的傳輸,使上層不用擔心幀丟失、干擾和錯誤等問題,向上層提供準確的數(shù)據(jù)包。
③協(xié)議網(wǎng)絡層主要提供數(shù)據(jù)傳輸?shù)穆窂?,使?shù)據(jù)能夠按照最短路徑完成傳輸,并向上層提供簡單靈活、無連接、盡最大努力交付的數(shù)據(jù)服務。網(wǎng)絡層服務質(zhì)量關(guān)系到數(shù)據(jù)包傳輸?shù)乃俣群途W(wǎng)絡的穩(wěn)健性,是分層傳遞的關(guān)鍵技術(shù)。
當處理節(jié)點不可達信息回傳時,可能會出現(xiàn)死循環(huán)現(xiàn)象,因此本文規(guī)定:如果數(shù)據(jù)幀向下層節(jié)點傳輸?shù)倪^程中出現(xiàn)不可達節(jié)點,則把節(jié)點不可達信息返回給中心節(jié)點,以便中心節(jié)點為完成數(shù)據(jù)幀傳輸做出進一步處理;但是,如果數(shù)據(jù)幀向上層節(jié)點傳輸?shù)倪^程中出現(xiàn)不可達信息,則直接丟棄數(shù)據(jù)幀,等待中心節(jié)點超時,中心節(jié)點超時沒有收到回應信息,就會重傳,重傳超時會更新路由表或選擇其他線路完成數(shù)據(jù)的傳輸。
④解析層主要為應用層提供一個統(tǒng)一的接口,應用層可以通過該接口,完成命令幀的封裝和發(fā)送。除此之外,解析層將整個網(wǎng)絡拓撲結(jié)構(gòu)放在Linux內(nèi)核內(nèi)存空間,為了快速響應應用層對拓撲網(wǎng)絡的請求命令,為應用層訪問路由表信息提供一組路由相關(guān)的命令接口。
⑤應用層相當于用戶在協(xié)議的基礎(chǔ)上,通過調(diào)用解析層提供的接口,完成對終端節(jié)點的檢測和控制。開發(fā)人員只要了解相關(guān)的接口和需要實現(xiàn)的功能,即使不懂協(xié)議,也可以完成程序開發(fā)。
4 系統(tǒng)測試
全局路由表是整個協(xié)議的核心內(nèi)容,它的準確性是整個系統(tǒng)是否能夠正常、快速運行的關(guān)鍵。因此,可以通過部署不同網(wǎng)絡結(jié)構(gòu)、比較網(wǎng)絡結(jié)構(gòu)與路由表記錄的結(jié)構(gòu),進而驗證協(xié)議路由表映射的準確性。本文設計單層、雙層交叉網(wǎng)絡結(jié)構(gòu),對協(xié)議全局路由表進行層次性測試,通過開發(fā)板輸出的全局路由表結(jié)構(gòu)與實際路由節(jié)點部署對比,驗證各種層次結(jié)構(gòu)路由協(xié)議運行的準確性。
路由表單層測試結(jié)構(gòu)設計如圖5(a)所示,單層模式下開發(fā)板輸出全局路由表測試結(jié)果如圖5(b)所示。從輸出結(jié)果可以看出,ID為01的節(jié)點層次為0,父節(jié)點為-1,說明該節(jié)點是中心節(jié)點,其余節(jié)點層次都為1且父節(jié)點都只有01,從而可以證明,全局拓撲網(wǎng)絡為以01節(jié)點為中心的單層結(jié)構(gòu)。此結(jié)論與圖 5(a)中的單層結(jié)構(gòu)圖相符,證明了協(xié)議單層結(jié)構(gòu)中運行的準確性和全局路由表的完整性。
在實際環(huán)境部署節(jié)點的過程中,節(jié)點路徑不可能都是簡單的無交叉分支結(jié)構(gòu),其分支必定存在一定程度的交叉。因此,本文設計了雙父節(jié)點雙層結(jié)構(gòu)測試模式,其整體節(jié)點部署如圖6(a)所示,圖6(b)為該模式下節(jié)點組網(wǎng)完成后的全局路由表。從輸出的結(jié)果可以看出,第二次路由節(jié)點包括09、0C和0D,09有兩個父節(jié)點0B和0E,0C和0D分別是0B和0E的子節(jié)點,0B和0E位于第一層,其父節(jié)點為01。其結(jié)果顯示與實際路由分布一致,從而證明,在雙父節(jié)點雙層結(jié)構(gòu)模式下協(xié)議運行正確。
結(jié)語
本文通過設計一種遠距離無線傳輸協(xié)議,實現(xiàn)了基于CC1101無線芯片的遠距離、大面積范圍的數(shù)據(jù)傳輸。首先構(gòu)建了協(xié)議的整體構(gòu)架,然后設計了記錄網(wǎng)絡結(jié)構(gòu)的路由信息表并根據(jù)數(shù)據(jù)傳輸過程對協(xié)議進行層次劃分,最后詳細分析了協(xié)議在各個協(xié)議層間的工作過程及協(xié)議原理。此協(xié)議彌補了CC1101芯片針對遠距離無線傳輸協(xié)議的不足,可應用于工農(nóng)業(yè)現(xiàn)場數(shù)據(jù)的采集以及監(jiān)控等領(lǐng)域。