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