羅鵬
【摘要】提出了一種基于ZigBee無線傳感器網(wǎng)絡(luò)的智能家居系統(tǒng),給出系統(tǒng)的軟件設(shè)計(jì)。所設(shè)計(jì)的網(wǎng)關(guān)節(jié)點(diǎn)具備網(wǎng)關(guān)的基本功能,并結(jié)合了Bluetooth和GPRS通信功能,可以支持近遠(yuǎn)程的綜合接入。用戶可以采用Android終端設(shè)備實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的采集或者控制指令的執(zhí)行,也可以通過移動(dòng)通信公網(wǎng)實(shí)行遠(yuǎn)距離的控制操作。Android終端軟件開發(fā)平臺(tái)采用的是安裝了SDK開發(fā)包的Eclipse開發(fā)軟件。除了網(wǎng)關(guān)以外的其他節(jié)點(diǎn)都采用了休眠管理來降低能耗。
【關(guān)鍵詞】智能家居ZigBee無線傳感器網(wǎng)絡(luò)Android
中圖分類號(hào):TN92文獻(xiàn)標(biāo)志碼:A
本文結(jié)合ZigBee無線傳感網(wǎng)絡(luò)與Android智能手機(jī)系統(tǒng),設(shè)計(jì)了新型的智能家居系統(tǒng)。硬件方面使用TI公司的CC2530 ZigBee無線傳感模塊和支持RS-232的Android智能手機(jī)開發(fā)平臺(tái),完成了比較完善的通信網(wǎng)關(guān)功能,使用戶可以通過Android手機(jī)端的應(yīng)用程序控制ZigBee智能家居系統(tǒng)。
一、ZigBee規(guī)范分析
在ZigBee規(guī)范中,節(jié)點(diǎn)按功能分為3種類型[3]:①協(xié)調(diào)器(ZC),負(fù)責(zé)創(chuàng)建并維護(hù)一個(gè)PAN;②路由器(ZR),負(fù)責(zé)把感知數(shù)據(jù)路由到ZR,并幫助ZC進(jìn)行PAN的創(chuàng)建和維護(hù)工作;③端設(shè)備(ZED),負(fù)責(zé)感知物理世界環(huán)境變化,然后在ZR的幫助下將感知數(shù)據(jù)傳送到ZC[4]。
二、系統(tǒng)設(shè)計(jì)
2.1建立ZigBee智能家居網(wǎng)絡(luò)
整個(gè)系統(tǒng)由ZigBee無線傳感器網(wǎng)絡(luò)、無線通信公網(wǎng)和Android智能終端組成。組建一個(gè)完整的ZigBee網(wǎng)狀網(wǎng)絡(luò)包括兩個(gè)步驟:網(wǎng)絡(luò)初始化、ZED加入網(wǎng)絡(luò)。其中ZED加入網(wǎng)絡(luò)又包括兩種方式:通過與ZC連接入網(wǎng)和通過已有父節(jié)點(diǎn)入網(wǎng)。
為了建立連接,ZED需要向ZC提出請(qǐng)求,ZC接收到ZED的連接請(qǐng)求后根據(jù)情況決定是否允許其連接,然后對(duì)請(qǐng)求連接的ZED做出響應(yīng),ZED與ZC建立連接后,才能實(shí)現(xiàn)數(shù)據(jù)的收發(fā)[6]。具體的流程如圖1所示:
(1)查找網(wǎng)絡(luò)ZC。首先ZED點(diǎn)會(huì)主動(dòng)掃描查找周圍網(wǎng)絡(luò)的ZC,如果在掃描期限內(nèi)檢測(cè)到信標(biāo),那么將獲得了ZC的有關(guān)信息,這時(shí)就向ZC發(fā)出連接請(qǐng)求。如果沒有檢測(cè)到,間隔一段時(shí)間后,ZED重新發(fā)起掃描。(2)發(fā)送關(guān)聯(lián)請(qǐng)求命令。ZED將關(guān)聯(lián)請(qǐng)求命令發(fā)送給ZC,ZC收到后立即回復(fù)一個(gè)確認(rèn)幀(ACK),同時(shí)向它的上層發(fā)送連接指示原語,表示已經(jīng)收到ZED的連接請(qǐng)求。協(xié)調(diào)器接收到連接指示原語后,根據(jù)自己的資源情況(存儲(chǔ)空間和能量)決定是否同意此ZED的加入請(qǐng)求,然后給ZED的MAC層發(fā)送響應(yīng)。(3)等待ZC處理。ZC給ZED的MAC層發(fā)送響應(yīng)時(shí),ZED會(huì)設(shè)置一個(gè)等待響應(yīng)時(shí)間來等待ZC對(duì)其加入請(qǐng)求命令的處理,若ZC的資源足夠,ZC會(huì)給ZED分配一個(gè)16位的短地址,并產(chǎn)生包含新地址和連接成功狀態(tài)的連接響應(yīng)命令。若ZC資源不夠,等待加入的ZED將重新發(fā)送請(qǐng)求信息。(4)發(fā)送數(shù)據(jù)請(qǐng)求命令。如果ZC在響應(yīng)時(shí)間內(nèi)同意ZED加入,那么將產(chǎn)生關(guān)聯(lián)響應(yīng)命令并存儲(chǔ)這個(gè)命令。當(dāng)響應(yīng)時(shí)間過后,ZED發(fā)送數(shù)據(jù)請(qǐng)求命令給ZC,ZC收到后立即回復(fù)ACK,然后將存儲(chǔ)的關(guān)聯(lián)響應(yīng)命令發(fā)給ZED。(5)ZED收到關(guān)聯(lián)響應(yīng)命令后,立即向ZC回復(fù)一個(gè)確認(rèn)幀(ACK),以確認(rèn)接收到連接響應(yīng)命令,此時(shí)ZED將保存ZC的短地址和擴(kuò)展地址,并且ZED的MLME向上層發(fā)送連接確認(rèn)原語,通告關(guān)聯(lián)加入成功的信息。自此,ZigBee網(wǎng)絡(luò)組網(wǎng)成功。
當(dāng)組網(wǎng)成功后,ZED將在指定的報(bào)告周期時(shí)間內(nèi),通過zb_SendDataRequest原語向ZC發(fā)送狀態(tài)數(shù)據(jù)包。ZC通過RS-232接口將數(shù)據(jù)包轉(zhuǎn)發(fā)到Android模塊,然后通過Socket或者藍(lán)牙將數(shù)據(jù)包傳遞到用戶終端。
2.2串口通信
Android模塊串口通信主要由下面幾步組成,JNI通過init、upload、download三個(gè)HAL層函數(shù)接口對(duì)串口進(jìn)行初始化、寫數(shù)據(jù)和讀數(shù)據(jù)。寫數(shù)據(jù)時(shí),通過upload在 HAL層中加上包頭及CRC位,然后在寫線程中寫入串口設(shè)備節(jié)點(diǎn)。讀數(shù)據(jù)時(shí),在HAL層中通過讀數(shù)據(jù)線程從串口設(shè)備節(jié)點(diǎn)中將數(shù)據(jù)讀出后進(jìn)行解析和CRC校驗(yàn),如果CRC校驗(yàn)正常則把解析之后的數(shù)據(jù)通過JNI層傳給java中進(jìn)行使用。接收數(shù)據(jù)和解析數(shù)據(jù)的時(shí)候采用buffer控制,在接收數(shù)據(jù)時(shí)采用的環(huán)形buffer,容量為1Kbyte,這樣做的目的是防止接收數(shù)據(jù)丟失。
2.3用戶與Android模塊通信
2.3.1Socket通信
Android平臺(tái)Socket通信由客戶端和服務(wù)器兩部分組成,當(dāng)客戶端啟動(dòng)時(shí),會(huì)向指定IP地址和端口號(hào)的服務(wù)器發(fā)送一個(gè)短數(shù)據(jù)包,服務(wù)器接受到數(shù)據(jù)包后建立起與相應(yīng)客戶端的Socket連接。當(dāng)ZigBee協(xié)調(diào)器通過RS-232將數(shù)據(jù)包傳輸?shù)娇蛻舳耍蛻舳藭?huì)將接收到的數(shù)據(jù)進(jìn)行拆包、解析,然后將比特流(二進(jìn)制)轉(zhuǎn)換為ASCⅡ碼,重新打包,通過Socket服務(wù)器轉(zhuǎn)發(fā)到終端設(shè)備中。同理,終端設(shè)備也可以通過Socket服務(wù)器將數(shù)據(jù)發(fā)送到客戶端,從而將控制信息傳送至ZigBee協(xié)調(diào)器端。
2.3.2藍(lán)牙通信
在Android平臺(tái)上,藍(lán)牙組網(wǎng)需要設(shè)備兩端進(jìn)行LMP配對(duì)。Android平臺(tái)提供的藍(lán)牙API實(shí)現(xiàn)藍(lán)牙設(shè)備之間的通信,藍(lán)牙設(shè)備之間的通信主要包括了四個(gè)步驟:設(shè)置藍(lán)牙設(shè)備、尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備、連接設(shè)備和設(shè)備之間的數(shù)據(jù)傳輸。
三、干擾分析
因?yàn)榛赯igBee技術(shù)的手機(jī)智能家居系統(tǒng)需要ZigBee、Wi-Fi網(wǎng)絡(luò)或ZigBee、藍(lán)牙網(wǎng)絡(luò)共存,而他們都工作在2.4GHz頻段之下。所以,必須對(duì)不同網(wǎng)絡(luò)之間的干擾進(jìn)行分析,避免它們之間的干擾。藍(lán)牙網(wǎng)絡(luò)采用了自適應(yīng)調(diào)頻干擾避免策略,當(dāng)出現(xiàn)干擾時(shí),藍(lán)牙設(shè)備會(huì)自動(dòng)跳轉(zhuǎn)到一個(gè)非重疊的信道,從而避免干擾發(fā)生。而ZigBee和Wi-Fi都采用了固定信道碰撞避免策略,所以,為了避免碰撞發(fā)生,選取ZigBee網(wǎng)絡(luò)中的第15、20、25、26信道,則可以有效的避免他們之間的干擾發(fā)生。
四、實(shí)驗(yàn)過程與實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)涉及到2種不同的網(wǎng)絡(luò):ZigBee無線傳感網(wǎng)和移動(dòng)通信網(wǎng),其中ZigBee網(wǎng)絡(luò)中又分為2種不同的設(shè)備:協(xié)調(diào)器和終端。移動(dòng)通信網(wǎng)主要是通過Android模塊實(shí)現(xiàn)。采用Z-Stack協(xié)議棧,在實(shí)驗(yàn)室環(huán)境下開發(fā)了溫度檢測(cè)傳感器、適度檢測(cè)傳感器與光照檢測(cè)傳感器,終端備通過CC2530芯片對(duì)應(yīng)的I/O口獲取相應(yīng)的數(shù)值信息,將數(shù)值的每一位轉(zhuǎn)換為ASCⅡ碼,并通過RS-232接口將數(shù)據(jù)傳送到Android模塊。
五、結(jié)束語
進(jìn)過測(cè)試與實(shí)際應(yīng)用表明基于ZigBee技術(shù)的手機(jī)智能家居系統(tǒng)能夠?qū)崟r(shí)完成對(duì)家庭環(huán)境信息的采集任務(wù),并可以通過繼電器對(duì)家用電器進(jìn)行控制,通過紅外傳感器與嗡鳴器形成家庭安防系統(tǒng),提高生活的舒適度、和安全感,具有一定的實(shí)用性。
參考文獻(xiàn)
[1]丁龍剛,基于RFID、Wi-Fi、藍(lán)牙、ZigBee的物聯(lián)網(wǎng)電磁兼容和干擾協(xié)調(diào)研究.物聯(lián)網(wǎng)技術(shù),2011年6月