康芳于,李允俊,金華
(延邊大學(xué) 工學(xué)院,延吉133002)
隨著通信技術(shù)的不斷發(fā)展和完善,無線通信技術(shù)已經(jīng)廣泛應(yīng)用于很多領(lǐng)域。目前應(yīng)用較為廣泛的是藍牙、Zig-Bee和WiFi等短距離無線傳輸技術(shù),但是它們的傳輸距離短,無法滿足工農(nóng)業(yè)與監(jiān)控等領(lǐng)域?qū)鬏斁嚯x和覆蓋范圍的需求,因此本文設(shè)計一種基于CC1101芯片的遠距離無線傳輸協(xié)議。CC1101芯片,具有低成本、低功耗、小體積、使用簡單、操作靈活等特點,其傳輸距離一般為400~800 m,具有很好的數(shù)據(jù)包處理機制和充足的發(fā)射/接收緩沖區(qū),適用于無線遠程數(shù)據(jù)傳輸系統(tǒng)[1-2]。
物聯(lián)網(wǎng)細分為5層結(jié)構(gòu):感知層、接入層、網(wǎng)絡(luò)層、支撐層和應(yīng)用層。本文基于CC1101無線收發(fā)芯片,設(shè)計一種無線傳輸協(xié)議,完成物聯(lián)網(wǎng)5層體系構(gòu)架中從感知層到網(wǎng)絡(luò)層的數(shù)據(jù)交換,是相對遠距離的數(shù)據(jù)傳輸在接入層的一種新的傳輸方式[3]。本文通過設(shè)計基于CC1101芯片的無線傳輸協(xié)議,擴大物聯(lián)網(wǎng)感知層到網(wǎng)絡(luò)層的傳輸距離,豐富接入層無線傳輸?shù)姆绞?,彌補了CC1101芯片針對遠距離無線傳輸協(xié)議的不足。
本文將物理節(jié)點劃分為3種類型:中心節(jié)點、路由節(jié)點和終端節(jié)點。中心節(jié)點是整個網(wǎng)絡(luò)協(xié)議的匯聚中心,負責(zé)形成和維護整個傳輸系統(tǒng)的路由結(jié)構(gòu),實現(xiàn)對終端節(jié)點的檢測與控制,完成對采集數(shù)據(jù)的處理和存儲。路由節(jié)點是整個網(wǎng)絡(luò)協(xié)議的傳輸系統(tǒng),負責(zé)完成整個系統(tǒng)命令的下達和數(shù)據(jù)的傳輸,是整個協(xié)議數(shù)據(jù)傳輸?shù)倪\輸樞紐。終端節(jié)點作為中心節(jié)點命令的執(zhí)行者,是最底層節(jié)點,可與傳感器相連,負責(zé)數(shù)據(jù)的采集。3種節(jié)點間的關(guān)系如圖1所示。
從整體上看,中心節(jié)點負責(zé)維護所有路由節(jié)點,而路由節(jié)點管理其范圍內(nèi)的終端節(jié)點,終端節(jié)點通過解析中心節(jié)點的命令,將執(zhí)行命令后產(chǎn)生的數(shù)據(jù)通過路由節(jié)點上交給中心節(jié)點處理。因此,三者各司其職,共同完成整個系統(tǒng)的任務(wù)[4-5]。
圖1 3種節(jié)點間的關(guān)系
根據(jù)3種節(jié)點的關(guān)系可構(gòu)建“一全多局”路由表,路由表負責(zé)記錄整個系統(tǒng)的網(wǎng)絡(luò)拓撲結(jié)構(gòu),控制數(shù)據(jù)幀傳輸?shù)穆肪€,并據(jù)此提出一種二次攜帶信息廣播協(xié)議,來提高回應(yīng)節(jié)點的完整性。本文基于TCP/IP協(xié)議分層的設(shè)計思想,綜合CC1101無線收發(fā)芯片的特征,按照傳輸協(xié)議數(shù)據(jù)幀傳輸?shù)牧鞒?,將傳輸協(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萬個。
本文設(shè)計一種“一全多局”的路由信息表?!耙蝗敝钢行墓?jié)點擁有全局拓撲網(wǎng)絡(luò)路由節(jié)點的路徑信息,即所有路由節(jié)點與其相鄰節(jié)點的層次結(jié)構(gòu)關(guān)系;“多局”指路由節(jié)點存儲與其相鄰的路由節(jié)點的信息。路由信息表結(jié)構(gòu)如表1所列,該表有兩個優(yōu)點:第一是占用空間小,第二是可快速檢索一條最短路徑。
表1 路由信息表結(jié)構(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)建的路由表信息更新速度更快,應(yīng)用更靈活。
根據(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為最短跳變,從而證明全局路由表設(shè)計的準確性。
路由表負責(zé)記錄整個系統(tǒng)的網(wǎng)絡(luò)拓撲結(jié)構(gòu),控制數(shù)據(jù)幀傳輸?shù)穆肪€,因此路由表的完整性和準確性關(guān)系到數(shù)據(jù)傳輸速度和協(xié)議運行的效率。而廣播作為路由表的生成基礎(chǔ),直接影響路由表的完整性和準確性。
本文提出一種二次攜帶信息廣播協(xié)議,來提高回應(yīng)節(jié)點的完整性。
二次攜帶信息廣播:源節(jié)點首先發(fā)送一次廣播命令并啟動一個廣播定時器,收到廣播命令的節(jié)點,按照防碰撞算法進行廣播命令的回應(yīng)。源節(jié)點在廣播定時器超時之后,將收到的回應(yīng)信息節(jié)點地址放入到第二次廣播命令幀中,進行第二次攜帶信息廣播,收到該廣播命令的目標節(jié)點首先在廣播命令幀中查找自己的地址,如果找到,則不進行廣播回應(yīng),否則按照防碰撞算法進行廣播回應(yīng)。二次攜帶信息廣播的過程如圖2所示。
表2 部分全局路由表信息
圖2 二次攜帶信息廣播過程
按照二次攜帶信息廣播的過程,其廣播命令幀的格式如下:
發(fā)送幀 目的地址源地址廣播標志更新序列自身層次節(jié)點個數(shù) 節(jié)點 CRC 幀尾回應(yīng)幀 目的地址源地址廣播標志更新序列自身層次CRC 幀尾
根據(jù)二次攜帶信息廣播的原理和過程,設(shè)計如圖3所示的流程。因為廣播處在協(xié)議層次中的鏈路層,因此,此圖的左半部分表示鏈路層程序流程,右半部分為二次攜帶信息廣播的程序流程。
協(xié)議劃分的5層從底層到高層依次是物理層、鏈路層、網(wǎng)絡(luò)層、解析層和應(yīng)用層。每層負責(zé)解析自身層次數(shù)據(jù)幀,對其他層的數(shù)據(jù)格式不可見。各層的層次說明如表3所列。
圖3 廣播流程
表3 協(xié)議層功能表
根據(jù)以上5層結(jié)構(gòu)中各層不同的功能,協(xié)議數(shù)據(jù)傳輸?shù)倪^程如圖4所示,可以得出,在源節(jié)點到目標節(jié)點數(shù)據(jù)流過5層,然而在中間路由節(jié)點,只需要經(jīng)過協(xié)議的底3層,即中間路由節(jié)點對傳輸?shù)臄?shù)據(jù)是不可見的。
圖4 協(xié)議數(shù)據(jù)傳輸過程
各個協(xié)議層的功能如下:
①物理層是協(xié)議層中的最底層,負責(zé)數(shù)據(jù)傳輸之前監(jiān)測信道是否空閑,防止數(shù)據(jù)碰撞的發(fā)生,以便保證點對點數(shù)據(jù)傳輸?shù)臏蚀_性。
②鏈路層主要在相鄰節(jié)點間實現(xiàn)數(shù)據(jù)準確無誤的傳輸,使上層不用擔(dān)心幀丟失、干擾和錯誤等問題,向上層提供準確的數(shù)據(jù)包。
③協(xié)議網(wǎng)絡(luò)層主要提供數(shù)據(jù)傳輸?shù)穆窂?,使?shù)據(jù)能夠按照最短路徑完成傳輸,并向上層提供簡單靈活、無連接、盡最大努力交付的數(shù)據(jù)服務(wù)。網(wǎng)絡(luò)層服務(wù)質(zhì)量關(guān)系到數(shù)據(jù)包傳輸?shù)乃俣群途W(wǎng)絡(luò)的穩(wěn)健性,是分層傳遞的關(guān)鍵技術(shù)。
當(dāng)處理節(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é)點超時沒有收到回應(yīng)信息,就會重傳,重傳超時會更新路由表或選擇其他線路完成數(shù)據(jù)的傳輸。
④解析層主要為應(yīng)用層提供一個統(tǒng)一的接口,應(yīng)用層可以通過該接口,完成命令幀的封裝和發(fā)送。除此之外,解析層將整個網(wǎng)絡(luò)拓撲結(jié)構(gòu)放在Linux內(nèi)核內(nèi)存空間,為了快速響應(yīng)應(yīng)用層對拓撲網(wǎng)絡(luò)的請求命令,為應(yīng)用層訪問路由表信息提供一組路由相關(guān)的命令接口。
⑤應(yīng)用層相當(dāng)于用戶在協(xié)議的基礎(chǔ)上,通過調(diào)用解析層提供的接口,完成對終端節(jié)點的檢測和控制。開發(fā)人員只要了解相關(guān)的接口和需要實現(xiàn)的功能,即使不懂協(xié)議,也可以完成程序開發(fā)。
全局路由表是整個協(xié)議的核心內(nèi)容,它的準確性是整個系統(tǒng)是否能夠正常、快速運行的關(guān)鍵。因此,可以通過部署不同網(wǎng)絡(luò)結(jié)構(gòu)、比較網(wǎng)絡(luò)結(jié)構(gòu)與路由表記錄的結(jié)構(gòu),進而驗證協(xié)議路由表映射的準確性。本文設(shè)計單層、雙層交叉網(wǎng)絡(luò)結(jié)構(gòu),對協(xié)議全局路由表進行層次性測試,通過開發(fā)板輸出的全局路由表結(jié)構(gòu)與實際路由節(jié)點部署對比,驗證各種層次結(jié)構(gòu)路由協(xié)議運行的準確性。
路由表單層測試結(jié)構(gòu)設(shè)計如圖5(a)所示,單層模式下開發(fā)板輸出全局路由表測試結(jié)果如圖5(b)所示。從輸出結(jié)果可以看出,ID為01的節(jié)點層次為0,父節(jié)點為-1,說明該節(jié)點是中心節(jié)點,其余節(jié)點層次都為1且父節(jié)點都只有01,從而可以證明,全局拓撲網(wǎng)絡(luò)為以01節(jié)點為中心的單層結(jié)構(gòu)。此結(jié)論與圖5(a)中的單層結(jié)構(gòu)圖相符,證明了協(xié)議單層結(jié)構(gòu)中運行的準確性和全局路由表的完整性。
圖5 單層模式與路由信息
在實際環(huán)境部署節(jié)點的過程中,節(jié)點路徑不可能都是簡單的無交叉分支結(jié)構(gòu),其分支必定存在一定程度的交叉。因此,本文設(shè)計了雙父節(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é)議運行正確。
圖6 雙層交叉模式與路由信息
本文通過設(shè)計一種遠距離無線傳輸協(xié)議,實現(xiàn)了基于CC1101無線芯片的遠距離、大面積范圍的數(shù)據(jù)傳輸。首先構(gòu)建了協(xié)議的整體構(gòu)架,然后設(shè)計了記錄網(wǎng)絡(luò)結(jié)構(gòu)的路由信息表并根據(jù)數(shù)據(jù)傳輸過程對協(xié)議進行層次劃分,最后詳細分析了協(xié)議在各個協(xié)議層間的工作過程及協(xié)議原理。此協(xié)議彌補了CC1101芯片針對遠距離無線傳輸協(xié)議的不足,可應(yīng)用于工農(nóng)業(yè)現(xiàn)場數(shù)據(jù)的采集以及監(jiān)控等領(lǐng)域。
[1]劉強,龍進軍.基于RF CC1101的PDA與全站儀間無線數(shù)據(jù)傳輸及應(yīng)用[J].南通航運職業(yè)技術(shù)學(xué)院學(xué)報,2011(3):52-55.
[2]李晶.基于CC1101的短距離無線通信網(wǎng)絡(luò)的設(shè)計[D].成都:電子科技大學(xué),2011.
[3]陳海明,崔莉,謝開斌.物聯(lián)網(wǎng)體系結(jié)構(gòu)與實現(xiàn)方法的比較研究[J].計算機學(xué)報,2013,36(1):170-174.
[4]丁欣.基于CC1101的無線自組網(wǎng)網(wǎng)絡(luò)路燈監(jiān)控系統(tǒng)的研究[D].廣州:華南理工大學(xué),2011.
[5]P Ran,M H Sun,Y M Zou.ZigBee Routing Selection Strategy Based on Data Services and Energy-Balanced ZigBee Routing[C]//IEEE Asia-Pacific Conference on Services Computing,Guangzhou,2006:400-404.