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