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