摘 要:本文是基于ZigBee自組網(wǎng)協(xié)議設(shè)計的一種新型的無線自組網(wǎng)通信協(xié)議,該通信協(xié)議簡單明了、配置靈活、方便測試,可以在各種環(huán)境下傳輸信息,創(chuàng)建了一種蜂窩狀網(wǎng)絡(luò),實現(xiàn)點對點的信息傳輸。經(jīng)過實踐操作,測試得其運行穩(wěn)定,模塊化好,達(dá)到了設(shè)計的目的。
關(guān)鍵詞:ZigBee,蜂窩狀網(wǎng)絡(luò),自組網(wǎng),路由表,退避算法
1 協(xié)議的目的及意義
近年來,ZigBee自組網(wǎng)協(xié)議廣泛應(yīng)用于物聯(lián)網(wǎng)無線數(shù)據(jù)終端,本協(xié)議基于此設(shè)計一種新型自組網(wǎng)協(xié)議,使其更好的貼合日常生活,實現(xiàn)信息高效傳輸,整體結(jié)構(gòu)清晰明了,節(jié)點安裝方便,可以根據(jù)實際需求擴(kuò)展節(jié)點的功能,適用于不同環(huán)境,在學(xué)生宿舍的應(yīng)用與推廣有較好的前景。
2 總體設(shè)計
2.1 系統(tǒng)方案
本系統(tǒng)基于物聯(lián)網(wǎng)工程,使用類ZigBee的方式自建組網(wǎng)實現(xiàn)上下行的數(shù)據(jù)傳輸。整個系統(tǒng)結(jié)構(gòu)分為設(shè)備,中繼,終端三層結(jié)構(gòu)。
2.2 通信協(xié)議設(shè)計
數(shù)據(jù)傳輸由十三位字節(jié)組成,第一、十三位作為起始和終止的標(biāo)志位,定義起始位為0xF1表示正常上行,0xF2表示正常下行,0xF3表示組網(wǎng)請求上行,0xF4表示組網(wǎng)請求下行,0xF5表示測試指令,對應(yīng)的終止位為其起始位的最后一位取反,分別為0xFE、0xFD、0xFC、0xFB、0xFA;第二、三位共同表示信號發(fā)出的設(shè)備標(biāo)識號,第四、五位共同表示數(shù)據(jù)最初來源的設(shè)備號;第六位表示操作數(shù);第七位是一個計數(shù)位;第八、九、十、十一、十二位表示中繼ID,初始值為0xF6,自組網(wǎng)成功后從左至右的順序表示其在系統(tǒng)中的傳輸路徑。
正常上行時由設(shè)備發(fā)出十三位十六進(jìn)制的數(shù)據(jù),中繼接收到這個數(shù)據(jù)后首先會判斷這是否是上行消息且是否為自己處理,如果是則進(jìn)行改編再發(fā)出,否則忽略這條信息,最后是終端,接收到數(shù)據(jù)進(jìn)行判斷后將信息寫入數(shù)據(jù)庫中,然后根據(jù)數(shù)據(jù)庫內(nèi)容顯示在網(wǎng)頁界面上,使用者便可看到設(shè)備的狀態(tài)變化。正常下行時,使用者可通過網(wǎng)頁中的按鍵對設(shè)備進(jìn)行操作,此時這種攜帶著操作指令的消息將從終端傳至中繼。中繼判斷其是否為下行消息且是否為自己處理,如果是,則對這段數(shù)據(jù)進(jìn)行改編再發(fā)出,傳輸?shù)皆O(shè)備時,設(shè)備判斷后根據(jù)發(fā)送來的指令做出相應(yīng)的動作并根據(jù)需求返回數(shù)據(jù)。
2.3 穩(wěn)定性實現(xiàn)
為保障數(shù)據(jù)傳輸?shù)姆€(wěn)定性,我們采取退避算法,當(dāng)數(shù)據(jù)傳向下一級后,若下一級收到這個信息,自動向上一級發(fā)出確認(rèn)收到的回復(fù),上一級在設(shè)定時間內(nèi)收到回復(fù),則停止發(fā)送消息,若超出設(shè)定時間未收到回復(fù),表示下一級未收到消息,上一級也將停止發(fā)送消息,在0-1024之中選擇任意時間退避,再重新發(fā)送消息,等待回復(fù),若仍未收到回復(fù),繼續(xù)退避,以此類推。
3 具體實施方案
3.1 自組網(wǎng)實例
當(dāng)一個中繼(ID為‘0‘1)要自組網(wǎng)時,計數(shù)位為初始值0x01,它將發(fā)送消息:
0xF3,0x30,0x31,0x30,0x31,0xF3,0x01,0xF6,0xF6,0xF6,0xF6,0xF6,0xFC。
當(dāng)終端收到這個組網(wǎng)消息時,判斷是有效數(shù)據(jù),同時返回給中繼消息:0x30,0x31,0x46,0x46,中繼收到此回復(fù)消息后停止發(fā)送組網(wǎng)消息。終端發(fā)現(xiàn)是申請加入組網(wǎng)的請求,判別計數(shù)位為0x01初始值則此中繼未加入組網(wǎng),終端將中繼ID的第二位0x31寫入數(shù)據(jù)的第八位即路由表的第二位,將計數(shù)位改為0x06,再把這個傳輸路徑寫入數(shù)據(jù)庫,同時終端給中繼返回組網(wǎng)數(shù)據(jù),操作數(shù)0xF6表示組網(wǎng)成功,下行數(shù)據(jù)計數(shù)位加1,則消息為:
0xF4,0x46,0x46,0x30,0x31,0xF6,0x07,0x31,0xF6,0xF6,0xF6,0xF6,0xFB。
當(dāng)中繼收到這個組網(wǎng)消息時,判斷是有效數(shù)據(jù),同時返回給終端消息:0xFF 0xFF 0x46 0x46,終端收到此回復(fù)消息后停止發(fā)送組網(wǎng)消息。中繼發(fā)現(xiàn)是組網(wǎng)成功的請求,判斷計數(shù)位的值與其指向數(shù)據(jù)數(shù)組的值相等,則將路由表保留。
3.2 數(shù)據(jù)傳輸實例
假設(shè)已經(jīng)存在一條數(shù)據(jù)傳輸網(wǎng)絡(luò):終端(ID為‘F‘F)、中繼(ID為‘0‘0)和設(shè)備(ID為‘a(chǎn)‘1)。下面介紹一般信息下行,即信息由設(shè)備產(chǎn)生發(fā)出經(jīng)由中繼到終端的過程。
當(dāng)設(shè)備向中繼發(fā)送指令:起始位為0xF1,請求由設(shè)備發(fā)出,則第二、三位為設(shè)備編號0x61,0x31;原始請求由設(shè)備提出,則第四、五位為設(shè)備編號0x61,0x31;第六位為指令位,這里假設(shè)為0x01;第七位指針位的P本為8,上行左移一位變?yōu)?;第八、九、十、十一、十二位為已組網(wǎng)成功的目標(biāo)路由表,即0x30,0xF6,0xF6,0xF6,0xF6;終止位為0xFE。該設(shè)備發(fā)出的消息為:
0xF1,0x61,0x31,0x61,0x31,0x01,0x07,0x30,0xF6,0xF6,0xF6,0xF6,0xFE。
數(shù)據(jù)發(fā)出后,設(shè)備會在設(shè)定時間內(nèi)等待直到收到0x61,0x31,0x46,0x46的回復(fù),否則重發(fā)或重新申請組網(wǎng)。中繼收到上條數(shù)據(jù)時,通過識別起始位,指針位所指向的a[7]路由表第一位0x30,為自己,首先向上級回復(fù)收到指令0x61 0x31 0x46 0x46,然后改編數(shù)據(jù),將第二、三位替換為自己的設(shè)備號0x30,0x30,再將指針位減一變?yōu)?。則該設(shè)備發(fā)出的消息為:
0xF1,0x30,0x30,0x61,0x31,0x01,0x06,0x30,0xF6,0xF6,0xF6,0xF6,0xFE。
數(shù)據(jù)發(fā)出后,設(shè)備會在設(shè)定時間內(nèi)等待直到收到0x30,0x30,0x46,0x46的回復(fù),否則重發(fā)或重新申請組網(wǎng)。終端收到上條數(shù)據(jù)時,通過識別起始位和指針位P為0x06,為自己要處理的信息,首先向上級回復(fù)收到指令0x30,0x30,0x46,0x46,然后存儲數(shù)據(jù)。
參考文獻(xiàn)
[1]任秀麗, 于海斌. ZigBee無線通信協(xié)議實現(xiàn)技術(shù)的研究[J]. 計算機(jī)工程與應(yīng)用, 2007, 43(6):143-145.
[2]馬玉春, 宋瀚濤. 串行通信協(xié)議的研究及應(yīng)用[J]. 計算機(jī)應(yīng)用研究, 2004, 21(4):228-229.
[3]孫宇霖, 屈玉貴, 趙保華. 一種通信協(xié)議測試序列生成的新方法[J]. 通信學(xué)報, 2001, 22(6):122-127.
作者簡介
張遠(yuǎn)(1997-),女,漢族,西北工業(yè)大學(xué)電子信息學(xué)院通信工程專業(yè)2014級學(xué)生。