基于ZigBee無線傳感器網(wǎng)絡(luò)的智能家居設(shè)計(jì)
2.2 設(shè)備入網(wǎng)
在一個(gè)ZigBee協(xié)調(diào)器設(shè)備建立網(wǎng)絡(luò)后,路由器設(shè)備或者終端設(shè)備,可以加入?yún)f(xié)調(diào)器建立的網(wǎng)絡(luò),具體加入網(wǎng)絡(luò)有兩種方式,一種是通過關(guān)聯(lián)(Association)方式,就是待加入的設(shè)備發(fā)起加入網(wǎng)絡(luò),另一種是直接(Direct)方式。下面重點(diǎn)討論第一種方式,也是實(shí)際中用的最多的方式。
首先對(duì)于一個(gè)ZigBee終端設(shè)備,只能加入一個(gè)網(wǎng)絡(luò)。對(duì)于新設(shè)備來說,它首先會(huì)掃描周圍它可找到的網(wǎng)絡(luò),尋找有能力批準(zhǔn)自己加入網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)調(diào)器,并把可以找到的所有網(wǎng)絡(luò)協(xié)調(diào)器的資料存入自己的相鄰表。存入相鄰表的網(wǎng)絡(luò)協(xié)調(diào)器的資料包括ZigBee協(xié)議版本、協(xié)議棧配置文件、PAN ID、邏輯信道以及是否允許加入網(wǎng)絡(luò)等。在相鄰表中選擇一個(gè)深度最小的網(wǎng)絡(luò)協(xié)調(diào)器,并對(duì)其發(fā)出請(qǐng)求信息,如果出現(xiàn)相同最小深度的兩個(gè)以上網(wǎng)絡(luò)協(xié)調(diào)器信息,那么隨機(jī)選取一個(gè)發(fā)送請(qǐng)求。如果相鄰表中沒有合適的網(wǎng)絡(luò)協(xié)調(diào)器信息,那么表示入網(wǎng)失敗,終止過程。如果發(fā)出的請(qǐng)求被批準(zhǔn),那么網(wǎng)絡(luò)協(xié)調(diào)器同時(shí)會(huì)分配給它一個(gè)16位的網(wǎng)絡(luò)地址,此時(shí)入網(wǎng)成功,終端設(shè)備可以開始通信。如果請(qǐng)求失敗,那么重新查找相鄰表,繼續(xù)發(fā)送請(qǐng)求信息,直到加入網(wǎng)絡(luò)或者相鄰表中沒有合適的網(wǎng)絡(luò)器。
設(shè)備關(guān)聯(lián)加入網(wǎng)絡(luò)的具體實(shí)現(xiàn)如下:
(1)在加入網(wǎng)絡(luò)前,首先要確定這個(gè)設(shè)備是ZigBee終端設(shè)備。通過協(xié)議棧配置文件ZigBee.def中的#define I_AM_END_DEVICE來定義這個(gè)設(shè)備為ZigBee終端設(shè)備。
(2)確定為終端設(shè)備后,應(yīng)用層首先設(shè)定待掃描的信道以及每個(gè)信道掃描的時(shí)間,調(diào)用NLME_NE1WORK_DISCOVERY.request原語(yǔ)尋找合適網(wǎng)絡(luò),網(wǎng)絡(luò)層收到該原語(yǔ)后,通過MLME_SCAN.request,原語(yǔ)要求MAC層執(zhí)行主動(dòng)掃描獲得目前網(wǎng)絡(luò)描述參數(shù)。通過函數(shù)NWKStartDiscovery(),對(duì)掃描的起始信道進(jìn)行設(shè)置,假定起始值為N。然后執(zhí)行MACStartScan(TRUE)對(duì)信道N進(jìn)行主動(dòng)掃描。
(3)完成掃描后,網(wǎng)絡(luò)層將發(fā)送NLMF_NETWORK_DISCOVERY.confirm原語(yǔ)告知應(yīng)用層。通過調(diào)用回調(diào)函數(shù)AppOkayToAssociate()來判斷是否要加入這個(gè)網(wǎng)絡(luò),判斷的標(biāo)準(zhǔn)是網(wǎng)絡(luò)協(xié)調(diào)器的MAC地址是否符合終端設(shè)備的要求,這樣可以使終端設(shè)備加入到指定的網(wǎng)絡(luò)中,應(yīng)用層根據(jù)情況調(diào)用NLME_JOIN.request原語(yǔ)從鄰居表中選擇所發(fā)現(xiàn)的網(wǎng)絡(luò)加入。網(wǎng)絡(luò)確定后,網(wǎng)絡(luò)層將請(qǐng)求MAC層管理實(shí)體對(duì)邏輯信道,PAN標(biāo)識(shí)符等有關(guān)屬性進(jìn)行配置,發(fā)送MLME_SYNC.request原語(yǔ)獲取它所要連接協(xié)調(diào)器的信標(biāo),實(shí)現(xiàn)與協(xié)調(diào)器的同步。然后調(diào)用MLME_ASSOCIATE.request原語(yǔ)到MAC層。
(4)執(zhí)行函數(shù)PHYPutTxData(MAC_CMD_AS_SOCIATE_REQ)向協(xié)調(diào)器發(fā)送加入請(qǐng)求,并等待發(fā)送加入請(qǐng)求的確認(rèn)。協(xié)調(diào)器接收到連接請(qǐng)求后首先調(diào)用MACIsJoinPermitted()來判斷網(wǎng)絡(luò)是否允許任何設(shè)備關(guān)聯(lián),允許則返回給終端設(shè)備確認(rèn)幀。協(xié)調(diào)器的網(wǎng)絡(luò)層將分配惟一的16位網(wǎng)絡(luò)地址給該設(shè)備,并根據(jù)設(shè)備提供的信息在它的鄰居表中為終端設(shè)備創(chuàng)建新的入口,隨后向MAC發(fā)送表明連接成功的MLM_ASSOCIATE.response原語(yǔ)表明設(shè)備已經(jīng)成功同網(wǎng)絡(luò)連接。設(shè)備的MAC層收到來自協(xié)調(diào)器的連接響應(yīng)命令幀后,通過MLME_ASSOCIATE.confirm原語(yǔ)發(fā)送給設(shè)備應(yīng)用層表明加入成功,設(shè)備的網(wǎng)絡(luò)層將在鄰居表中設(shè)置邏輯地址信息。
3 結(jié)束語(yǔ)
介紹了基于ZigBee無線傳感器網(wǎng)絡(luò)技術(shù)組建信息家居網(wǎng)絡(luò),如圖4所示,能夠?qū)揖迎h(huán)境進(jìn)行較好的監(jiān)控,根據(jù)現(xiàn)在家居存在的問題,擬采取現(xiàn)有通信網(wǎng)絡(luò)與短距離無線網(wǎng)絡(luò)相結(jié)合的方法提高家居數(shù)據(jù)的準(zhǔn)確性、實(shí)時(shí)性和可靠性。相對(duì)于常見的Bluetooth、Wi-Fi等具有低復(fù)雜度、低成本、低功耗、高安全性等優(yōu)點(diǎn),隨著無線網(wǎng)絡(luò)技術(shù)的進(jìn)一步發(fā)展,它將成為智能家居發(fā)展的趨勢(shì)。本文引用地址:http://butianyuan.cn/article/154878.htm
評(píng)論