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