摘 要:本文提出了一種基于Cortex-M3和Android的智能家居控制系統解決方案。方案采用Contex-M3為內核的ARM處理器,通過移植μC/OS-II操作系統和LwIP協議棧搭建智能家居嵌入式服務器。系統采用智能手機作為控制終端,設計基于Android的客戶端應用程序。智能家居內部網絡采用ZigBee無線傳感網絡技術進行搭建,最終實現通過手機對家居內部設備進行遠程實時監控的目的。實驗表明,該系統成本低廉,運行穩定,用戶界面良好,能夠滿足一些家居對智能化的需求。
關鍵詞:智能家居;Cortex-M3;Android;ZigBee
智能家居是在傳統住宅的基礎上,利用現代科學技術,諸如網絡通信、安全防范、自動控制、音視頻等技術將家居生活有關的各種家居設施集成,構成的高效、便利、舒適、節能環保的家居環境[1]。隨著無線移動網絡的快速布局,現代的智能家居只要有一個無線智能設備,即能通過客戶端實時查看到住宅中的一切動態[2]。在目前,智能家居控制系統中,有基于面板和紅外遙控器或藍牙的智能家居控制終端解決方案[3,4],也有完全基于PC機的智能家居控制終端解決方案[5],同時還有采用手機作為家居控制終端,利用GSM電話網絡通信,實現短信或者語音控制[6]。而以上多種技術的應用,催生了各種智能控制模塊的研究和生產,因此導致了當前智能家居控制系統的標準無法統一,各個系統和模塊之間難以實現互聯互通。針對以上問題,本文提出了一整套的智能家居控制系統解決方案,該方案采用Android智能手機作為控制終端,在STM32F107移植μC/OS-II操作系統和LwIP協議棧搭建嵌入式服務器,通過搭建ZigBee無線傳感網絡,采用改進的ZigBee路由算法,制定完善的通信協議,提高網絡通信性能,最終實現手機對智能家居的遠程和本地的實時監控。
1 系統總體設計
本文所設計的智能家居控制系統主要包括嵌入式服務器,Android客戶端和ZigBee節點。移動控制終端和ZigBee節點通過嵌入式服務器進行通信實現信息交互。即用戶采用Android客戶端程序發送指令通過互聯網或局域網傳輸到智能家居嵌入式服務器,服務器在接收到控制命令后再通過ZigBee無線傳感網絡發送到對應的終端節點,終端節點接收到命令后進行相應的操作,比如采集溫濕度信息并將信息反饋到服務器,服務器再將信息通過局域網或互聯網發送到Android客戶端進行顯示。系統總體結構圖如圖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.1 網絡通信接口
網絡通信接口是服務器與控制終端實現網絡通信的橋梁[7]。STM32F107內部集成了一個以太網MAC,并有專用的DMA控制,實現內部數據的高速傳輸[8]。STM32F107還同時支持MII和RMII兩種物理層接口,因此只需外界一片物理層收發器,即可實現以太網幀的發生和接收,實現網絡通信[9]。所以本次設計采用高性價比的DM9161A作為10M/100M以太網PHY芯片,采用RMII接口與處理器STM32F107內部的IEEE1588 MAC連接,并與標準RJ45接口HR911105A連接,支持平行交叉網線自適應,實現以太網通信功能。網絡接口硬件接口設計如圖3。
2.2.2 ZigBee節點
智能家居中,家居內部無線網絡通信方式的選擇至關重要[10]。在本次智能家居控制系統設計中,家庭內部網絡采用ZigBee組網技術。在智能家居網絡中,ZigBee節點被分為主節點和從節點,主節點主要負責建立無線網絡,分配從節點網絡地址,并與從節點和嵌入式服務器實現指令的發送和接收[11]。ZigBee從節點主要嵌入到終端設備中用于采集檢測信息發送到主節點,或者接收控制命令實現對終端設備的控制,ZigBee網絡結構圖如圖4。
ZigBee節點采用TI公司的CC2530作為主控制器芯片。該芯片是用于2.4GHz IEEE 802.15.4、ZigBee和RF4CE應用的一個真正的片上系統解決方案[12]。它結合了領先的RF收發器的優良性能,基于51內核,系統內可編程閃存,8KB RAM和許多其它強大的功能[13]。
數據采集節點主要包括一些通過傳感器實現的信號采集類模塊,比如溫濕度采集,可燃氣體泄漏或者火災發生時的信號采集并報警。設備控制節點主要嵌入到家電設備中,以實現門禁系統、燈光控制、智能窗簾、智能熱水器、智能空調、攝像頭云臺等的遠程控制。
3 系統軟件設計
本系統的軟件主要包括3個部分:嵌入式服務器軟件平臺、ZigBee節點控制程序、控制終端的Android應用程序。
3.1 嵌入式服務器軟件實現
嵌入式服務器軟件平臺的搭建根據以下2點需求來進行:(1)服務器要實現實時多任務操作。(2)服務器要實現TCP/IP網絡通信功能。因此,本系統選擇移植實時操作系統μC/OS-II作為服務器操作系統,移植LwIP實現TCP/IP網絡通信。
3.1.1 操作系統移植
μC/OS-II是一個可移植、可固化、可剪裁、搶占式多任務實時內核[14]。它適用于多種微處理器,微控制器和數字處理芯片,是和很多商業操作系統性能相當的實時操作系統[15]。
在移植μ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協議棧的一個實現[16]。它的目的是減少內存使用率和代碼大小,使LwIP用于資源受限系統,本次設計的嵌入式系統正屬于此列[17]。因此,為實現嵌入式服務器的TCP/IP網絡通信功能,有必要移植TCP/IP協議棧,綜合考慮,本次設計選擇移植開源的LwIP協議棧。為移植LwIP,主要工作是需針對本次設計中的目標系統μC/OS-II修改模擬層實現。移植后的系統軟件框架如圖5。
3.1.3 應用程序編寫
本次設計中,嵌入式服務器實現對遠程用戶登錄注銷、用戶信息管理和數據傳輸兩大主要功能。服務器依據客戶端指令分別實現客戶端的登錄注銷、用戶信息管理、終端設備控制三種功能。用戶登錄時服務器創建服務,注銷時結束服務并切斷與客戶端的通信。用戶信息管理允許用戶通過客戶端修改用戶信息,終端設備控制功能允許用戶使用客戶端來實現遠程監控家居環境。控制功能由服務器與ZigBee協調器通信實現。服務器工作流程圖如圖6所示。
服務器啟動后進行系統初始化,初始化主要包括設置STM32系統時鐘、串口、以太網、GPIO、中斷控制器NVIC、LwIP棧。系統初始化完畢創建2個任務,優先級為3的任務內容是實現socket通信,注冊數據接收回調函數,當接收到數據時在回調函數中進行數據接收處理,其中要使用socket接口必須包含API頭文件socket.h。優先級為4的任務完成串口數據的接收,在任務中不斷查詢串口數據接收完成或緩沖區溢出標志USART_Rx_Done,當數據接收完畢或緩沖區溢出時,此時在中斷服務程序中設置全局變量USART_Rx_Done為1,即表示通知主線成串口數據接收完畢,主線程將接收到得數據以網絡通信的方式發送的客戶端。服務器中斷程序流程圖如圖7。
3.2 移動控制終端Android應用程序設計
Android客戶端應用程序主要實現三個部分功能,程序功能界面、與家居服務器通信和處理相關信息。
3.2.1 功能界面設計
應用程序界面設計包括登錄界面和功能界面。功能界面采用底部導航欄分欄顯示,包括主頁、設備控制、信息中心和系統設置四個方面。主頁主要顯示當前住宅內部溫度和濕度以及安防信息;設備控制主要包括燈光控制、家電控制、門窗控制和情景模式,通過安檢選項進行控制;消息中心主要顯示住宅環境的一些家居狀態消息,比如當住宅發生火災時傳感器檢測到危險信號后服務器會發送信息到消息中心顯示,并且手機根據消息命令會自動實現報警和提醒用戶等;系統設置主要包括設置一些用戶權限和網絡通信配置。設計好的界面如圖8所示。
3.2.2 網絡通信實現
移動Android應用程序設計中主要涉及兩個方面的數據通信,一個是界面Activity組建與后臺Service組建間的通信,另一個是Android客戶端與嵌入式服務器間的通信。在Android應用程序中,Activity主要負責前臺頁面的展示和用戶指令的接收,Service則主要在后臺負責長時間執行的任務比如監控任務。移動客戶端應用程序中數據通信架構如圖9。
在Android中,Activity主要負責前臺頁面展示,Service主要負責需要長時間運行的任務。在圖9中, 參考Android IPC通信機制[18],在Activity中通過Intent啟動后臺Service,Intent中傳遞了Activity從用戶動作中接收到的數據。Service在后臺啟動后創建一個Socket服務子線程與嵌入式服務器實現網絡通信,并將服務器返回的數據通過Binder對象傳遞給Activity。另一方面,Service在程序登陸后創建一個循環子線程實現每隔一分鐘向服務器發送一次更新數據指令,以便實時更新主頁面顯示數據。
4 結束語
將完成的Android客戶端安裝到手機,并搭建服務器平臺,在實驗環境下進行試驗和調試。實驗結果表明系統運行穩定,Android手機客戶端可以通過無線網對家居設備實現遠程控制,并且能夠實時接收并顯示住宅環境信息,當檢測到異常時能夠及時的發出警報。
本次設計的智能家居控制系統,采用了當下最流行也最實用的智能手機實現對家居環境的實時監控。這種方式通用性強,操作便捷,易于安裝推廣,運行穩定可靠。達到了對家居設備智能化管理的目的。同時,本次設計在功能上可以加以改進,比如可以在后續的工作中加入視頻監控、智能服務等內容。
[參考文獻]
[1]付蔚.家居物聯網技術開發與實踐[M].北京:北京大學出版社.2013.
[2]王朝華,陳德艷,黃國宏,童懷.基于Android的智能家居系統的研究與實現[J].計算機技術與發展.2012,22(6):225-228.
[3]莫滿春.射頻路由算法的研究及智能家居無線控制系統的實現[D].廣州:中山大學.2008.
[4]Yeo L K,Weon C J.Remote-controlled Home Automation System Via Bluetooth Home Network[C].Proc of SICE 2003 Annum Conference.Tokyo:Soc of Instrum and Control Eng,2008:2824-2829.
[5]臧大進,劉增良.基于物聯網的智能家居系統設計與實現[J].襄樊學院學報.2010,31(11):37-39.
[6]王振紅,張帆,郝承祥.基于公共電話網的智能家居系統[J].控制工程.2002,9(3):55-57.
[7]黨武松,范寒柏,胡楊.STM32F207和DM9161A的高速以太網接口設計[J].單片機與嵌入式系統應用.2013(10):26-28.
[8]于春雪.基于STM32F107的高速以太網接口設計與應用[J].電聲技術.2011,35(9):63-67.
[9]楊維國,殳國華.基于ZigBee模塊JN5139無線數據采集系統的設計與實現[J].電氣自動化.2010,32(1):54-56.
[10]R.A.Ramlee,M.H.Leong,R.S.S.Singh.etal.Bluetooth Remote Home Automation System Using Android Applic- ation[J].The International Journal of Engineering And Science,2013,2(01):149-153.
[11]劉兆孟.ZigBee無線傳感網絡路由協議的研究與設計[D].無錫:江南大學.2013.
[12]章偉聰,俞新武,李忠成.基于CC2530及ZigBee協議棧設計無線網絡傳感器節點[J].計算機系統應用.2011,20(7):184-187.
[13]王風.基于CC2530的ZigBee無線傳感網絡的設計與實現[D].西安:西安電子科技大學.2012.
[14]關海,馮大政.μC/OS-II在基于Cortex-M3核的ARM處理器上的移植[J].電子科技.2009,22(1):69-74.
[15]任哲.嵌入式實時操作系統μC/OS-II原理及應用[M].北京:北京航空航天大學出版社.2005.
[16]王祖云,楊思國,王建偉,鄧忠華.嵌入式LwIP協議棧的移植與測試研究[J].計算機與數字工程.2014,42(2):272-275.
[17]馬濤,白瑞林,石堅.Cortex-A8平臺的μC/OS-II及LwIP協議棧的移植與實現[J].計算機應用與軟件.2013,31(1):242-245.
[18]楊豐盛.Android技術內幕:系統卷[M].北京:機械工業出版社.2011.