智慧家居設計
智慧家居是在傳統住宅的基礎上,利用現代科學技術,諸如網路通訊、安全防範、自動控制、音視訊等技術將家居生活有關的各種家居設施整合,構成的高效、便利、舒適、節能環保的家居環境。隨著無線行動網路的快速佈局,現代的智慧家居只要有一個無線智慧裝置,即能通過客戶端實時檢視到住宅中的一切動態。在目前,智慧家居控制系統中,有基於面板和紅外遙控器或藍芽的智慧家居控制終端解決方案,也有完全基於PC機的智慧家居控制終端解決方案,同時還有采用手機作為家居控制終端,利用GSM電話網路通訊,實現簡訊或者語音控制。而以上多種技術的應用,催生了各種智慧控制模組的研究和生產,因此導致了當前智慧家居控制系統的標準無法統一,各個系統和模組之間難以實現互聯互通。針對以上問題,本文提出了一整套的智慧家居控制系統解決方案,該方案採用Android智慧手機作為控制終端,在STM32F107移植μC/OS-II作業系統和LwIP協議棧搭建嵌入式伺服器,通過搭建ZigBee無線感測網路,採用改進的ZigBee路由演算法,制定完善的通訊協議,提高網路通訊效能,最終實現手機對智慧家居的遠端和本地的實時監控。
1 系統總體設計
本文所設計的智慧家居控制系統主要包括嵌入式伺服器,Android客戶端和ZigBee無線模組節點。移動控制終端和ZigBee無線模組節點通過嵌入式伺服器進行通訊實現資訊互動。即使用者採用Android客戶端程式傳送指令通過網際網路或區域網傳輸到智慧家居嵌入式伺服器,伺服器在接收到控制命令後再通過ZigBee無線感測網路傳送到對應的終端節點,終端節點接收到命令後進行相應的操作,比如採集溫溼度資訊並將資訊反饋到伺服器,伺服器再將資訊通過區域網或網際網路傳送到Android客戶端進行顯示。系統總體結構圖如圖1所示。
圖1 系統結構圖
2 系統硬體設計
2.1 設計原則
嵌入式伺服器在整個系統中起著至關重要的作用,其實現的主要原則應從下面幾點出發:(1)允許Android客戶端遠端登入到伺服器,並能夠儲存登入使用者的基本資訊,實現多使用者登入,為每個使用者都能提供相應的服務。(2)能夠正確接收客戶端傳送的控制命令,並能夠返回相應資訊。(3)能夠與ZigBee協調器實現資訊互動,完成命令傳輸和資訊採集。嵌入式伺服器啟動後,採用socket通訊方式接收客戶端的登入命令,驗證通過後為客戶端提供相關服務。
2.2 伺服器硬體設計
本次研究採用ST公司生產的Cortex-M3為核心的微處理器晶片STM32F107VC進行擴充套件搭建嵌入式伺服器硬體平臺,硬體結構圖如圖2所示。根據需求,外圍需擴充套件的功能模組主要包括與ZigBee協調器通訊模組和與控制終端實現網路通訊硬體模組。其中與ZigBee協調器通訊採用串列埠通訊方式實現。而STM32F107內部集成了乙太網MAC控制器,因此本次設計採用RMII介面連線乙太網PHY(物理層)晶片DM9161。
圖2 嵌入式伺服器硬體結構圖
2.2.1 網路通訊介面
網路通訊介面是伺服器與控制終端實現網路通訊的橋樑。STM32F107內部集成了一個乙太網MAC,並有專用的DMA控制,實現內部資料的高速傳輸。STM32F107還同時支援MII和RMII兩種物理層介面,因此只需外界一片物理層收發器,即可實現乙太網幀的發生和接收,實現網路通訊。所以本次設計採用高性價比的DM9161A作為10M/100M乙太網PHY晶片,採用RMII介面與處理器STM32F107內部的IEEE1588 MAC連線,並與標準RJ45介面HR911105A連線,支援平行交叉網線自適應,實現乙太網通訊功能。網路介面硬體介面設計如圖3。
圖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網路通訊。
3.1.1 作業系統移植
μC/OS-II是一個可移植、可固化、可剪裁、搶佔式多工實時核心。它適用於多種微處理器,微控制器和數字處理晶片,是和很多商業作業系統效能相當的實時作業系統。
在移植μC/OS-II系統過程中,需修改以下幾個檔案:彙編檔案OS_CPU_A.ASM,與處理器相關C檔案OS_CPU.H和OS_CPU_C.C,系統配置檔案OS_CFG.H。
3.1.2 LwIP協議棧移植
LwIP是TCP/IP協議棧的一個實現。它的目的是減少記憶體使用率和程式碼大小,使LwIP用於資源受限系統,本次設計的嵌入式系統正屬於此列。因此,為實現嵌入式伺服器的TCP/IP網路通訊功能,有必要移植TCP/IP協議棧,綜合考慮,本次設計選擇移植開源的LwIP協議棧。為移植LwIP,主要工作是需針對本次設計中的目標系統μC/OS-II修改模擬層實現。移植後的系統軟體框架如圖5。
圖5 伺服器軟體框架
3.1.3 應用程式編寫
本次設計中,嵌入式伺服器實現對遠端使用者登入登出、使用者資訊管理和資料傳輸兩大主要功能。伺服器依據客戶端指令分別實現客戶端的登入登出、使用者資訊管理、終端裝置控制三種功能。使用者登入時伺服器建立服務,登出時結束服務並切斷與客戶端的通訊。使用者資訊管理允許使用者通過客戶端修改使用者資訊,終端裝置控制功能允許使用者使用客戶端來實現遠端監控家居環境。控制功能由伺服器與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客戶端應用程式主要實現三個部分功能,程式功能介面、與家居伺服器通訊和處理相關資訊。
3.2.1 功能介面設計
應用程式介面設計包括登入介面和功能介面。功能介面採用底部導航欄分欄顯示,包括主頁、裝置控制、資訊中心和系統設定四個方面。主頁主要顯示當前住宅內部溫度和溼度以及安防資訊;裝置控制主要包括燈光控制、家電控制、門窗控制和情景模式,通過安檢選項進行控制;訊息中心主要顯示住宅環境的一些家居狀態訊息,比如當住宅發生火災時感測器檢測到危險訊號後伺服器會發送資訊到訊息中心顯示,並且手機根據訊息命令會自動實現報警和提醒使用者等;系統設定主要包括設定一些使用者許可權和網路通訊配置。設計好的介面如圖8所示。
圖8 登入及主介面
3.2.2 網路通訊實現
移動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手機客戶端可以通過無線網對家居裝置實現遠端控制,並且能夠實時接收並顯示住宅環境資訊,當檢測到異常時能夠及時的發出警報。
本次設計的智慧家居控制系統,採用了當下最流行也最實用的智慧手機實現對家居環境的實時監控。這種方式通用性強,操作便捷,易於安裝推廣,執行穩定可靠。達到了對家居裝置智慧化管理的目的。同時,本次設計在功能上可以加以改進,比如可以在後續的工作中加入視訊監控、智慧服務等內容。