CC1101的遠(yuǎn)距離無線數(shù)據(jù)傳輸協(xié)議設(shè)計
摘要:本文設(shè)計了一種基于CC1101的遠(yuǎn)距離無線傳輸協(xié)議,通過構(gòu)筑http://m.butianyuan.cn/article/201610/307265.htm
關(guān)鍵詞:CC1101芯片;無線傳輸協(xié)議;CC1101芯片的遠(yuǎn)距離無線傳輸協(xié)議。CC1101芯片,具有低成本、低功耗、小體積、使用簡單、操作靈活等特點,其傳輸距離一般為400~800 m,具有很好的數(shù)據(jù)包處理機制和充足的發(fā)射/接收緩沖區(qū),適用于無線遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)。
物聯(lián)網(wǎng)細(xì)分為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ù)交換,是相對遠(yuǎn)距離的數(shù)據(jù)傳輸在接入層的一種新的傳輸方式。本文通過設(shè)計基于CC1101芯片的無線傳輸協(xié)議,擴大物聯(lián)網(wǎng)感知層到網(wǎng)絡(luò)層的傳輸距離,豐富接入層無線傳輸?shù)姆绞?,彌補了CC1101芯片針對遠(yuǎn)距離無線傳輸協(xié)議的不足。
1 協(xié)議的整體架構(gòu)
本文將物理節(jié)點劃分為3種類型:中心節(jié)點、路由節(jié)點和終端節(jié)點。中心節(jié)點是整個網(wǎng)絡(luò)協(xié)議的匯聚中心,負(fù)責(zé)形成和維護(hù)整個傳輸系統(tǒng)的路由結(jié)構(gòu),實現(xiàn)對終端節(jié)點的檢測與控制,完成對采集數(shù)據(jù)的處理和存儲。路由節(jié)點是整個網(wǎng)絡(luò)協(xié)議的傳輸系統(tǒng),負(fù)責(zé)完成整個系統(tǒng)命令的下達(dá)和數(shù)據(jù)的傳輸,是整個協(xié)議數(shù)據(jù)傳輸?shù)倪\輸樞紐。終端節(jié)點作為中心節(jié)點命令的執(zhí)行者,是最底層節(jié)點,可與傳感器相連,負(fù)責(zé)數(shù)據(jù)的采集。3種節(jié)點間的關(guān)系如圖1所示。
從整體上看,中心節(jié)點負(fù)責(zé)維護(hù)所有路由節(jié)點,而路由節(jié)點管理其范圍內(nèi)的終端節(jié)點,終端節(jié)點通過解析中心節(jié)點的命令,將執(zhí)行命令后產(chǎn)生的數(shù)據(jù)通過路由節(jié)點上交給中心節(jié)點處理。因此,三者各司其職,共同完成整個系統(tǒng)的任務(wù)。
根據(jù)3種節(jié)點的關(guān)系可構(gòu)建“一全多局”路由表,路由表負(fù)責(zé)記錄整個系統(tǒng)的
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)建的路由表信息更新速度更快,應(yīng)用更靈活。
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為最短跳變,從而證明全局路由表設(shè)計的準(zhǔn)確性。
2.4 二次攜帶信息廣播協(xié)議
路由表負(fù)責(zé)記錄整個系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),控制數(shù)據(jù)幀傳輸?shù)穆肪€,因此路由表的完整性和準(zhǔn)確性關(guān)系到數(shù)據(jù)傳輸速度和協(xié)議運行的效率。而廣播作為路由表的生成基礎(chǔ),直接影響路由表的完整性和準(zhǔn)確性。
本文提出一種二次攜帶信息廣播協(xié)議,來提高回應(yīng)節(jié)點的完整性。
二次攜帶信息廣播:源節(jié)點首先發(fā)送一次廣播命令并啟動一個廣播定時器,收到廣播命令的節(jié)點,按照防碰撞算法進(jìn)行廣播命令的回應(yīng)源節(jié)點在廣播定時器超時之后,將收到的回應(yīng)信息節(jié)點地址放入到第二次廣播命令幀中,進(jìn)行第二次攜帶信息廣播,收到該廣播命令的目標(biāo)節(jié)點首先在廣播命令幀中查找自己的地址,如果找到,則不進(jìn)行廣播回應(yīng),否則按照防碰撞算法進(jìn)行廣播回應(yīng)。二次攜帶信息廣播的過程如圖2所示。
按照二次攜帶信息廣播的過程,其廣播命令幀的格式如下:
根據(jù)二次攜帶信息廣播的原理和過程,設(shè)計如圖3所示的流程。因為廣播處在協(xié)議層次中的鏈路層,因此,此圖的左半部分表示鏈路層程序流程,右半部分為二次攜帶信息廣播的程序流程。
3 協(xié)議層次結(jié)構(gòu)
協(xié)議劃分的5層從底層到高層依次是物理層、鏈路層、網(wǎng)絡(luò)層、解析層和應(yīng)用層。每層負(fù)責(zé)解析自身層次數(shù)據(jù)幀,對其他層的數(shù)據(jù)格式不可見。各層的層次說明如表3所列。
根據(jù)以上5層結(jié)構(gòu)中各層不同的功能,協(xié)議數(shù)據(jù)傳輸?shù)倪^程如圖4所示,可以得出,在源節(jié)點到目標(biāo)節(jié)點數(shù)據(jù)流過5層,然而在中間路由節(jié)點,只需要經(jīng)過協(xié)議的底3層,即中間路由節(jié)點對傳輸?shù)臄?shù)據(jù)是不可見的。
各個協(xié)議層的功能如下:
①物理層是協(xié)議層中的最底層,負(fù)責(zé)數(shù)據(jù)傳輸之前監(jiān)測信道是否空閑,防止數(shù)據(jù)碰撞的發(fā)生,以便保證點對點數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。
②鏈路層主要在相鄰節(jié)點間實現(xiàn)數(shù)據(jù)準(zhǔn)確無誤的傳輸,使上層不用擔(dān)心幀丟失、干擾和錯誤等問題,向上層提供準(zhǔ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é)點不可達(dá)信息回傳時,可能會出現(xiàn)死循環(huán)現(xiàn)象,因此本文規(guī)定:如果數(shù)據(jù)幀向下層節(jié)點傳輸?shù)倪^程中出現(xiàn)不可達(dá)節(jié)點,則把節(jié)點不可達(dá)信息返回給中心節(jié)點,以便中心節(jié)點為完成數(shù)據(jù)幀傳輸做出進(jìn)一步處理;但是,如果數(shù)據(jù)幀向上層節(jié)點傳輸?shù)倪^程中出現(xiàn)不可達(dá)信息,則直接丟棄數(shù)據(jù)幀,等待中心節(jié)點超時,中心節(jié)點超時沒有收到回應(yīng)信息,就會重傳,重傳超時會更新路由表或選擇其他線路完成數(shù)據(jù)的傳輸。
④解析層主要為應(yīng)用層提供一個統(tǒng)一的接口,應(yīng)用層可以通過該接口,完成命令幀的封裝和發(fā)送。除此之外,解析層將整個網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)放在Linux內(nèi)核內(nèi)存空間,為了快速響應(yīng)應(yīng)用層對拓?fù)渚W(wǎng)絡(luò)的請求命令,為應(yīng)用層訪問路由表信息提供一組路由相關(guān)的命令接口。
⑤應(yīng)用層相當(dāng)于用戶在協(xié)議的基礎(chǔ)上,通過調(diào)用解析層提供的接口,完成對終端節(jié)點的檢測和控制。開發(fā)人員只要了解相關(guān)的接口和需要實現(xiàn)的功能,即使不懂協(xié)議,也可以完成程序開發(fā)。
4 系統(tǒng)測試
全局路由表是整個協(xié)議的核心內(nèi)容,它的準(zhǔn)確性是整個系統(tǒng)是否能夠正常、快速運行的關(guān)鍵。因此,可以通過部署不同網(wǎng)絡(luò)結(jié)構(gòu)、比較網(wǎng)絡(luò)結(jié)構(gòu)與路由表記錄的結(jié)構(gòu),進(jìn)而驗證協(xié)議路由表映射的準(zhǔn)確性。本文設(shè)計單層、雙層交叉網(wǎng)絡(luò)結(jié)構(gòu),對協(xié)議全局路由表進(jìn)行層次性測試,通過開發(fā)板輸出的全局路由表結(jié)構(gòu)與實際路由節(jié)點部署對比,驗證各種層次結(jié)構(gòu)路由協(xié)議運行的準(zhǔn)確性。
路由表單層測試結(jié)構(gòu)設(shè)計如圖5(a)所示,單層模式下開發(fā)板輸出全局路由表測試結(jié)果如圖5(b)所示。從輸出結(jié)果可以看出,ID為01的節(jié)點層次為0,父節(jié)點為-1,說明該節(jié)點是中心節(jié)點,其余節(jié)點層次都為1且父節(jié)點都只有01,從而可以證明,全局拓?fù)渚W(wǎng)絡(luò)為以01節(jié)點為中心的單層結(jié)構(gòu)。此結(jié)論與圖 5(a)中的單層結(jié)構(gòu)圖相符,證明了協(xié)議單層結(jié)構(gòu)中運行的準(zhǔn)確性和全局路由表的完整性。
在實際環(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é)議運行正確。
結(jié)語
本文通過設(shè)計一種遠(yuǎn)距離無線傳輸協(xié)議,實現(xiàn)了基于CC1101無線芯片的遠(yuǎn)距離、大面積范圍的數(shù)據(jù)傳輸。首先構(gòu)建了協(xié)議的整體構(gòu)架,然后設(shè)計了記錄網(wǎng)絡(luò)結(jié)構(gòu)的路由信息表并根據(jù)數(shù)據(jù)傳輸過程對協(xié)議進(jìn)行層次劃分,最后詳細(xì)分析了協(xié)議在各個協(xié)議層間的工作過程及協(xié)議原理。此協(xié)議彌補了CC1101芯片針對遠(yuǎn)距離無線傳輸協(xié)議的不足,可應(yīng)用于工農(nóng)業(yè)現(xiàn)場數(shù)據(jù)的采集以及監(jiān)控等領(lǐng)域。
評論