ZigBee與Android的智能家居控制系統設計

智能家居是在傳統住宅的基礎上,利用現代科學技術,諸如網絡通訊、安全防範、自動控制、音視頻等技術將家居生活有關的各類家居設施集成,構成的高效、便利、溫馨、節能環保的家居環境。隨着無線移動網絡的快速佈局,現代的智能家居只要有一個無線智能設備,即能經過客戶端實時查看到住宅中的一切動態。在目前,智能家居控制系統中,有基於面板和紅外遙控器或藍牙的智能家居控制終端解決方案,也有徹底基於PC機的智能家居控制終端解決方案,同時還有采用手機做爲家居控制終端,利用GSM電話網絡通訊,實現短信或者語音控制。而以上多種技術的應用,催生了各類智能控制模塊的研究和生產,所以致使了當前智能家居控制系統的標準沒法統一,各個系統和模塊之間難以實現互聯互通。針對以上問題,本文提出了一整套的智能家居控制系統解決方案,該方案採用Android智能手機做爲控制終端,在STM 32F 107移植μC/OS-II操做系統和LwIP協議棧搭建嵌入式服務器,經過搭建ZigBee無線傳感網絡,採用改進的ZigBee路由算法,制定完善的通訊協議,提升網絡通訊性能,最終實現手機對智能家居的遠程和本地的實時監控。 html

1 系統整體設計 算法

本文所設計的智能家居控制系統主要包括嵌入式服務器,Android客戶端和ZigBee無線模塊節點。移動控制終端和ZigBee無線模塊節點經過嵌入式服務器進行通訊實現信息交互。即用戶採用Android客戶端程序發送指令經過互聯網或局域網傳輸到智能家居嵌入式服務器,服務器在接收到控制命令後再經過ZigBee無線傳感網絡發送到對應的終端節點,終端節點接收到命令後進行相應的操做,好比採集溫溼度信息並將信息反饋到服務器,服務器再將信息經過局域網或互聯網發送到Android客戶端進行顯示。系統整體結構圖如圖1所示。 編程

clip_image002

1 系統結構圖 安全

2 系統硬件設計 服務器

2.1 設計原則 網絡

嵌入式服務器在整個系統中起着相當重要的做用,其實現的主要原則應從下面幾點出發:(1)容許Android客戶端遠程登陸到服務器,並可以保存登陸用戶的基本信息,實現多用戶登陸,爲每一個用戶都能提供相應的服務。(2)可以正確接收客戶端發送的控制命令,並可以返回相應信息。(3)可以與ZigBee協調器實現信息交互,完成命令傳輸和信息採集。嵌入式服務器啓動後,採用socket通訊方式接收客戶端的登陸命令,驗證經過後爲客戶端提供相關服務。 架構

2.2 服務器硬件設計 框架

本次研究採用ST公司生產的Cortex-M3爲內核的微處理器芯片STM 32F 107VC進行擴展搭建嵌入式服務器硬件平臺,硬件結構圖如圖2所示。根據需求,外圍需擴展的功能模塊主要包括與ZigBee協調器通訊模塊和與控制終端實現網絡通訊硬件模塊。其中與ZigBee協調器通訊採用串口通訊方式實現。而STM 32F 107內部集成了以太網MAC控制器,所以本次設計採用RMII接口鏈接以太網PHY(物理層)芯片DM9161 socket

clip_image004

2 嵌入式服務器硬件結構圖 函數

2.2.1 網絡通訊接口

網絡通訊接口是服務器與控制終端實現網絡通訊的橋樑。STM 32F 107內部集成了一個以太網MAC,並有專用的DMA控制,實現內部數據的高速傳輸。STM 32F 107還同時支持MIIRMII兩種物理層接口,所以只需外界一片物理層收發器,便可實現以太網幀的發生和接收,實現網絡通訊。因此本次設計採用高性價比的DM 9161A 做爲 10M / 100M 以太網PHY芯片,採用RMII接口與處理器STM 32F 107內部的IEEE1588 MAC鏈接,並與標準RJ45接口HR 911105A 鏈接,支持平行交叉網線自適應,實現以太網通訊功能。網絡接口硬件接口設計如圖3

clip_image006

3 以太網通訊接口

2.2.2 ZigBee無線模塊節點

智能家居中,家居內部無線網絡通訊方式的選擇相當重要。在本次智能家居控制系統設計中,家庭內部網絡採用ZigBee數傳模塊組網技術。在智能家居網絡中,ZigBee無線模塊節點被分爲主節點和從節點,主節點主要負責創建無線網絡,分配從節點網絡地址,並與從節點和嵌入式服務器實現指令的發送和接收。

ZigBee無線模塊從節點主要嵌入到終端設備中用於採集檢測信息發送到主節點,或者接收控制命令實現對終端設備的控制,ZigBee網絡結構圖如圖4

clip_image008

4 ZigBee網絡結構圖

    ZigBee無線模塊節點採用TI公司的CC2530做爲主控制器芯片。該芯片是用於2.4GHz IEEE 802.15.4ZigBeeRF4CE應用的一個真正的片上系統解決方案。它結合了領先的RF收發器的優良性能,基於51內核,系統內可編程閃存,8KB RAM和許多其它強大的功能。

    ZigBee數據採集節點主要包括一些經過傳感器實現的信號採集類模塊,好比溫溼度採集,可燃氣體泄漏或者火災發生時的信號ZigBee數據採集並報警。設備控制節點主要嵌入到家電設備中,以實現門禁系統、燈光控制、智能窗簾、智能熱水器、智能空調、攝像頭雲臺等的遠程控制。

3 系統軟件設計

本系統的軟件主要包括3個部分:嵌入式服務器軟件平臺、ZigBee節點控制程序、控制終端的Android應用程序。

3.1 嵌入式服務器軟件實現

嵌入式服務器軟件平臺的搭建根據如下2點需求來進行:(1)服務器要實現實時多任務操做。(2)服務器要實現TCP/IP網絡通訊功能。所以,本系統選擇移植實時操做系統μC/OS-II做爲服務器操做系統,移植LwIP實現TCP/IP網絡通訊。

3.1.1 操做系統移植

μC/OS-II是一個可移植、可固化、可剪裁、搶佔式多任務實時內核。它適用於多種微處理器,微控制器和數字處理芯片,是和不少商業操做系統性能至關的實時操做系統。

    在移植μC/OS-II系統過程當中,需修改如下幾個文件:彙編文件OS_CPU_A.ASM,與處理器相關C文件OS_CPU.HOS_CPU_C.C,系統配置文件OS_CFG.H

3.1.2 LwIP協議棧移植

LwIPTCP/IP協議棧的一個實現。它的目的是減小內存使用率和代碼大小,使LwIP用於資源受限系統,本次設計的嵌入式系統正屬於此列。所以,爲實現嵌入式服務器的TCP/IP網絡通訊功能,有必要移植TCP/IP協議棧,綜合考慮,本次設計選擇移植開源的LwIP協議棧。爲移植LwIP,主要工做是需針對本次設計中的目標系統μC/OS-II修改模擬層實現。移植後的系統軟件框架如圖5

clip_image010

5 服務器軟件框架

3.1.3 應用程序編寫

本次設計中,嵌入式服務器實現對遠程用戶登陸註銷、用戶信息管理和數據傳輸兩大主要功能。服務器依據客戶端指令分別實現客戶端的登陸註銷、用戶信息管理、終端設備控制三種功能。用戶登陸時服務器建立服務,註銷時結束服務並切斷與客戶端的通訊。用戶信息管理容許用戶經過客戶端修改用戶信息,終端設備控制功能容許用戶使用客戶端來實現遠程監控家居環境。控制功能由服務器與ZigBee協調器通訊實現。服務器工做流程圖如圖6所示。

clip_image012

6 服務器主線程工做流程圖

服務器啓動後進行系統初始化,初始化主要包括設置STM32系統時鐘、串口、以太網、GPIO、中斷控制器NVICLwIP棧。系統初始化完畢建立2個任務,優先級爲3的任務內容是實現socket通訊,註冊數據接收回調函數,當接收到數據時在回調函數中進行數據接收處理,其中要使用socket接口必須包含API頭文件socket.h。優先級爲4的任務完成串口數據的接收,在任務中不斷查詢串口數據接收完成或緩衝區溢出標誌USART_Rx_Done,當數據接收完畢或緩衝區溢出時,此時在中斷服務程序中設置全局變量USART_Rx_Done1,即表示通知主線成串口數據接收完畢,主線程將接收到得數據以網絡通訊的方式發送的客戶端。服務器中斷程序流程圖如圖7

clip_image014

7 中斷服務程序流程圖

3.2 移動控制終端Android應用程序設計

Android客戶端應用程序主要實現三個部分功能,程序功能界面、與家居服務器通訊和處理相關信息。

3.2.1 功能界面設計

應用程序界面設計包括登陸界面和功能界面。功能界面採用底部導航欄分欄顯示,包括主頁、設備控制、信息中心和系統設置四個方面。主頁主要顯示當前住宅內部溫度和溼度以及安防信息;設備控制主要包括燈光控制、家電控制、門窗控制和情景模式,經過安檢選項進行控制;消息中心主要顯示住宅環境的一些家居狀態消息,好比當住宅發生火災時傳感器檢測到危險信號後服務器會發送信息到消息中心顯示,而且手機根據消息命令會自動實現報警和提醒用戶等;系統設置主要包括設置一些用戶權限和網絡通訊配置。設計好的界面如圖8所示。

clip_image016

8 登陸及主界面

3.2.2 網絡通訊實現

移動Android應用程序設計中主要涉及兩個方面的數據通訊,一個是界面Activity組建與後臺Service組建間的通訊,另外一個是Android客戶端與嵌入式服務器間的通訊。在Android應用程序中,Activity主要負責前臺頁面的展現和用戶指令的接收,Service則主要在後臺負責長時間執行的任務好比監控任務。移動客戶端應用程序中數據通訊架構如圖9

clip_image018

9 數據通訊程序架構

Android中,Activity主要負責前臺頁面展現,Service主要負責須要長時間運行的任務。在圖9中, 參考And roidIPC通訊機制,Activity中經過Intent啓動後臺ServiceIntent中傳遞了Activity從用戶動做中接收到的數據。Service在後臺啓動後建立一個Socket服務子線程與嵌入式服務器實現網絡通訊,並將服務器返回的數據經過Binder對象傳遞給Activity。另外一方面,Service在程序登錄後建立一個循環子線程實現每隔一分鐘向服務器發送一次更新數據指令,以便實時更新主頁面顯示數據。

4 結束語

本文利用ZigBee數傳模塊對智能家居信息進行ZigBee數據採集,將Android客戶端安裝到手機,並搭建服務器平臺,在實驗環境下進行試驗和調試。實驗結果代表系統運行穩定,Android手機客戶端能夠經過無線網對家居設備實現遠程控制,而且可以實時接收並顯示住宅環境信息,當檢測到異常時可以及時的發出警報。

    本次設計的智能家居控制系統,採用了當下最流行也最實用的智能手機實現對家居環境的實時監控。這種方式通用性強,操做便捷,易於安裝推廣,運行穩定可靠。達到了對家居設備智能化管理的目的。同時,本次設計在功能上能夠加以改進,好比能夠在後續的工做中加入視頻監控、智能服務等內容。

相關文章
相關標籤/搜索