ZigBee與Android的智能家居控制系統設計
智能家居是在傳統住宅的基礎上,利用現代科學技術,諸如網絡通信、安全防范、自動控制、音視頻等技術將家居生活有關的各種家居設施集成,構成的高效、便利、舒適、節能環保的家居環境。隨著無線移動網絡的快速布局,現代的智能家居只要有一個無線智能設備,即能通過客戶端實時查看到住宅中的一切動態。在目前,智能家居控制系統中,有基于面板和紅外遙控器或藍牙的智能家居控制終端解決方案,也有完全基于PC機的智能家居控制終端解決方案,同時還有采用手機作為家居控制終端,利用GSM電話網絡通信,實現短信或者語音控制。而以上多種技術的應用,催生了各種智能控制模塊的研究和生產,因此導致了當前智能家居控制系統的標準無法統一,各個系統和模塊之間難以實現互聯互通。針對以上問題,本文提出了一整套的智能家居控制系統解決方案,該方案采用Android智能手機作為控制終端,在STM
1 系統總體設計
本文所設計的智能家居控制系統主要包括嵌入式服務器,Android客戶端和ZigBee無線模塊節點。移動控制終端和ZigBee無線模塊節點通過嵌入式服務器進行通信實現信息交互。即用戶采用Android客戶端程序發送指令通過互聯網或局域網傳輸到智能家居嵌入式服務器,服務器在接收到控制命令后再通過ZigBee無線傳感網絡發送到對應的終端節點,終端節點接收到命令后進行相應的操作,比如采集溫濕度信息并將信息反饋到服務器,服務器再將信息通過局域網或互聯網發送到Android客戶端進行顯示。系統總體結構圖如圖1所示。
圖1 系統結構圖
2 系統硬件設計
2.1 設計原則
嵌入式服務器在整個系統中起著至關重要的作用,其實現的主要原則應從下面幾點出發:(1)允許Android客戶端遠程登錄到服務器,并能夠保存登錄用戶的基本信息,實現多用戶登錄,為每個用戶都能提供相應的服務。(2)能夠正確接收客戶端發送的控制命令,并能夠返回相應信息。(3)能夠與ZigBee協調器實現信息交互,完成命令傳輸和信息采集。嵌入式服務器啟動后,采用socket通信方式接收客戶端的登錄命令,驗證通過后為客戶端提供相關服務。
2.2 服務器硬件設計
本次研究采用ST公司生產的Cortex-M3為內核的微處理器芯片STM
圖2 嵌入式服務器硬件結構圖
網絡通信接口是服務器與控制終端實現網絡通信的橋梁。STM
圖3 以太網通信接口
智能家居中,家居內部無線網絡通信方式的選擇至關重要。在本次智能家居控制系統設計中,家庭內部網絡采用ZigBee數傳模塊組網技術。在智能家居網絡中,ZigBee無線模塊節點被分為主節點和從節點,主節點主要負責建立無線網絡,分配從節點網絡地址,并與從節點和嵌入式服務器實現指令的發送和接收。
ZigBee無線模塊從節點主要嵌入到終端設備中用于采集檢測信息發送到主節點,或者接收控制命令實現對終端設備的控制,ZigBee網絡結構圖如圖4。
圖4 ZigBee網絡結構圖
ZigBee無線模塊節點采用TI公司的CC2530作為主控制器芯片。該芯片是用于2.4GHz IEEE 802.15.4、ZigBee和RF4CE應用的一個真正的片上系統解決方案。它結合了領先的RF收發器的優良性能,基于51內核,系統內可編程閃存,8KB RAM和許多其它強大的功能。
ZigBee數據采集節點主要包括一些通過傳感器實現的信號采集類模塊,比如溫濕度采集,可燃氣體泄漏或者火災發生時的信號ZigBee數據采集并報警。設備控制節點主要嵌入到家電設備中,以實現門禁系統、燈光控制、智能窗簾、智能熱水器、智能空調、攝像頭云臺等的遠程控制。
3 系統軟件設計
本系統的軟件主要包括3個部分:嵌入式服務器軟件平臺、ZigBee節點控制程序、控制終端的Android應用程序。
3.1 嵌入式服務器軟件實現
嵌入式服務器軟件平臺的搭建根據以下2點需求來進行:(1)服務器要實現實時多任務操作。(2)服務器要實現TCP/IP網絡通信功能。因此,本系統選擇移植實時操作系統μC/OS-II作為服務器操作系統,移植LwIP實現TCP/IP網絡通信。
μC/OS-II是一個可移植、可固化、可剪裁、搶占式多任務實時內核。它適用于多種微處理器,微控制器和數字處理芯片,是和很多商業操作系統性能相當的實時操作系統。
在移植μC/OS-II系統過程中,需修改以下幾個文件:匯編文件OS_CPU_A.ASM,與處理器相關C文件OS_CPU.H和OS_CPU_C.C,系統配置文件OS_CFG.H。
LwIP是TCP/IP協議棧的一個實現。它的目的是減少內存使用率和代碼大小,使LwIP用于資源受限系統,本次設計的嵌入式系統正屬于此列。因此,為實現嵌入式服務器的TCP/IP網絡通信功能,有必要移植TCP/IP協議棧,綜合考慮,本次設計選擇移植開源的LwIP協議棧。為移植LwIP,主要工作是需針對本次設計中的目標系統μC/OS-II修改模擬層實現。移植后的系統軟件框架如圖5。
圖5 服務器軟件框架
本次設計中,嵌入式服務器實現對遠程用戶登錄注銷、用戶信息管理和數據傳輸兩大主要功能。服務器依據客戶端指令分別實現客戶端的登錄注銷、用戶信息管理、終端設備控制三種功能。用戶登錄時服務器創建服務,注銷時結束服務并切斷與客戶端的通信。用戶信息管理允許用戶通過客戶端修改用戶信息,終端設備控制功能允許用戶使用客戶端來實現遠程監控家居環境。控制功能由服務器與ZigBee協調器通信實現。服務器工作流程圖如圖6所示。
圖6 服務器主線程工作流程圖
服務器啟動后進行系統初始化,初始化主要包括設置STM32系統時鐘、串口、以太網、GPIO、中斷控制器NVIC、LwIP棧。系統初始化完畢創建2個任務,優先級為3的任務內容是實現socket通信,注冊數據接收回調函數,當接收到數據時在回調函數中進行數據接收處理,其中要使用socket接口必須包含API頭文件socket.h。優先級為4的任務完成串口數據的接收,在任務中不斷查詢串口數據接收完成或緩沖區溢出標志USART_Rx_Done,當數據接收完畢或緩沖區溢出時,此時在中斷服務程序中設置全局變量USART_Rx_Done為1,即表示通知主線成串口數據接收完畢,主線程將接收到得數據以網絡通信的方式發送的客戶端。服務器中斷程序流程圖如圖7。
圖7 中斷服務程序流程圖
3.2 移動控制終端Android應用程序設計
Android客戶端應用程序主要實現三個部分功能,程序功能界面、與家居服務器通信和處理相關信息。
應用程序界面設計包括登錄界面和功能界面。功能界面采用底部導航欄分欄顯示,包括主頁、設備控制、信息中心和系統設置四個方面。主頁主要顯示當前住宅內部溫度和濕度以及安防信息;設備控制主要包括燈光控制、家電控制、門窗控制和情景模式,通過安檢選項進行控制;消息中心主要顯示住宅環境的一些家居狀態消息,比如當住宅發生火災時傳感器檢測到危險信號后服務器會發送信息到消息中心顯示,并且手機根據消息命令會自動實現報警和提醒用戶等;系統設置主要包括設置一些用戶權限和網絡通信配置。設計好的界面如圖8所示。
圖8 登錄及主界面
移動Android應用程序設計中主要涉及兩個方面的數據通信,一個是界面Activity組建與后臺Service組建間的通信,另一個是Android客戶端與嵌入式服務器間的通信。在Android應用程序中,Activity主要負責前臺頁面的展示和用戶指令的接收,Service則主要在后臺負責長時間執行的任務比如監控任務。移動客戶端應用程序中數據通信架構如圖9。
圖9 數據通信程序架構
在Android中,Activity主要負責前臺頁面展示,Service主要負責需要長時間運行的任務。在圖9中, 參考And roidIPC通信機制,在Activity中通過Intent啟動后臺Service,Intent中傳遞了Activity從用戶動作中接收到的數據。Service在后臺啟動后創建一個Socket服務子線程與嵌入式服務器實現網絡通信,并將服務器返回的數據通過Binder對象傳遞給Activity。另一方面,Service在程序登陸后創建一個循環子線程實現每隔一分鐘向服務器發送一次更新數據指令,以便實時更新主頁面顯示數據。
4 結束語
本文利用ZigBee數傳模塊對智能家居信息進行ZigBee數據采集,將Android客戶端安裝到手機,并搭建服務器平臺,在實驗環境下進行試驗和調試。實驗結果表明系統運行穩定,Android手機客戶端可以通過無線網對家居設備實現遠程控制,并且能夠實時接收并顯示住宅環境信息,當檢測到異常時能夠及時的發出警報。
本次設計的智能家居控制系統,采用了當下最流行也最實用的智能手機實現對家居環境的實時監控。這種方式通用性強,操作便捷,易于安裝推廣,運行穩定可靠。達到了對家居設備智能化管理的目的。同時,本次設計在功能上可以加以改進,比如可以在后續的工作中加入視頻監控、智能服務等內容。