Linux平臺智能家居的本地監(jiān)控與遠程監(jiān)控
摘要:針對智能家居的應用需求和特點,對智能家居系統(tǒng)進行分析和研究,提出了一種智能家居系統(tǒng)的整體設計方案。以Cortex—A8為核心處理器,Linux嵌入式系統(tǒng)為智能家居控制系統(tǒng),利用Android提供的各種資源建立智能家居遠程控制軟件,實現了家用電器的遠程監(jiān)控和本地監(jiān)控相結合。
關鍵詞:Linux智能家居;嵌入式系統(tǒng);Android
引言
隨著社會電子信息化的不斷發(fā)展,人們在家居中使用的電器也越來越多,由此帶來的安全隱患也有了明顯的增多。在這些電器中,一旦出現一些異常,便會給人們帶來很大的損失。為了降低電器的不合理使用帶來的異常情況,就要求在異常發(fā)生時用戶能及時得到信息,并通過實時監(jiān)控,采取一定的操作排除異常。因此,智能家居系統(tǒng)的作用是非常巨大的。
在智能家居控制系統(tǒng)中,核心設備是家居智能控制終端。綜合目前的研究現狀,主要有以下幾種方案:第一種是采用鍵盤、紅外遙控器、觸摸屏和LCD顯示器等設備對家電進行控制。當前智能家居控制系統(tǒng)大都采用此種控制終端,使用此種方式需要分別對控制終端的軟件與硬件進行設計,設計復雜,成本高。此外,使用此種控制終端只能進行本地控制,不能實現遠程控制。第二種是采用家庭或者辦公電腦作為智能家居控制系統(tǒng)的控制終端。使用這種控制方式的缺點是,只能用固定點對家居進行控制,控制終端不能移動,不夠方便。第三種是采用手機作為控制終端,使用手機通過無線網絡(WiFi、藍牙、GSM等)對家居系統(tǒng)進行控制,可以真正做到方便、快捷、觸手可及。但目前采用這種方式的智能家居系統(tǒng)還不是很多,而且大部分操作繁瑣,沒有良好的用戶體驗。
本文解決了嵌入式智能家居系統(tǒng)、ZigBee無線通信、家居控制協(xié)議等相關技術難點,分析了各自的基本特點和所要實現的基本功能,并在此基礎上提出了基于Linux平臺的嵌入式智能家居系統(tǒng)的整體設計方案。
1 系統(tǒng)整體結構概述
根據全面感知、可靠傳遞和智能處理的功能需求,可將智能家居系統(tǒng)劃分為感知層(家電信息采集終端)、網絡層(家庭網關)和應用層(包括PC機網頁和手機客戶端)3個部分,其整體框架結構如圖1所示。
其中,感知層的核心功能是實現數據的采集,主要通過各類傳感器來完成數據的獲取,最終將獲取到的數據通過無線網絡打包發(fā)送到網絡層的家庭網關中。網絡層需要實現一個基于嵌入式Web服務器的家庭網關,一方面,用來作為連接家庭內網與Internet外網的接口,實現家庭內網和Internet的數據通信功能;另一方面,用來統(tǒng)籌來自感知層的數據和來自應用層的命令。應用層則需要實現一個網頁客戶端和手機客戶端界面,一方面用來加工處理來自服務器端的數據;另一方面,用來實現人機交互,通過客戶端界面向服務器端發(fā)送控制命令。
1.1 硬件構成
智能家居系統(tǒng)的硬件系統(tǒng)主要包括S5PC100平臺(以下簡稱A8)、11C14平臺(以下簡稱M0)和ZigBee模塊3個部分。其中,S5PC100開發(fā)平臺是基于三星公司Cortex—A8內核的S5PC100處理器設計而成的,支持多種格式的硬件編解碼,如:MPEG-1/2/4、H.263/H.264等,該平臺主要通過開發(fā)的系統(tǒng)軟件實現對M0平臺的控制。11C14平臺基于LPC11C14微控制器(ARM Cortex—M0內核),具有低功耗、低成本等優(yōu)點。同時,該平臺具有豐富的硬件資源,集成了傳感器模塊(包括三軸加速度傳感器、光敏傳感器、溫度傳感器、濕度傳感器等)、RFID設備模塊、ZigBee無線通信模塊和OLED顯示模塊等。該平臺主要用于模擬家庭中的信息采集和執(zhí)行單元。ZigBee模塊采用的是CEL公司的ZICM2410,帶有USB轉串口芯片,可以方便地連接PC機或其他帶有USB主機接口的設備,實現組網通信。
1.2 軟件環(huán)境
(1)U—Boot移植
U—Boot的功能是把內核放到DRAM(Dynamic Random Access Memory)中運行。網上下載的U—Boot對開發(fā)平臺只有通用性代碼,不支持和識別特定開發(fā)平臺上的一些硬件和功能。因此,需要添加對這些硬件的識別、初始化及其相應功能的實現。
U—Boot的移植過程可以分為兩個階段,其中,第一階段主要完成基本的硬件設備初始化,準備RAM(Randtom Access Memory,隨機存儲器)空間加載第二階段代碼,復制第二階段代碼到RAM中,設置堆棧指針SP,跳轉到第二階段代碼的C入口點;第二階段主要完成匯編語言跳轉到main()入口函數,初始化本階段將要使用的硬件設備,檢測系統(tǒng)的內存映射,加載內核映像文件和根文件系統(tǒng)映像文件,設置內核啟動參數和調用內核。
(2)Linux內核移植
Linux內核是一種源碼開放的操作系統(tǒng),采用模塊化的設計。在此只保留了必需的功能模塊,刪除了冗余的功能模塊,并對內核重新編譯,從而使系統(tǒng)運行所需的硬件資源顯著減少。本設計中內核的移植主要包括:網卡驅動的添加、NAND Flash驅動的添加、添加對YAFFS2文件系統(tǒng)的支持、添加USB設備驅動、添加LCD設備驅動、添加SD卡設備驅動。
(3)根文件系統(tǒng)制作
如果沒有根文件系統(tǒng),其他的文件系統(tǒng)就不能進行加載。根文件系統(tǒng)包括Linux啟動時所必須的目錄和關鍵性文件,以及使其他文件系統(tǒng)得以掛載的必要文件。制作根文件系統(tǒng)主要包括:添加內核菜單選項、建立目錄結構、添加命令程序、拷貝C庫、編寫系統(tǒng)啟動文件、配置主機的NFS。
2 系統(tǒng)功能模塊設計
本系統(tǒng)是在A8、M0及PC等設備的基礎上,基于互聯(lián)網、物聯(lián)網、傳感器等技術并結合物聯(lián)網新型概念設計的,使用戶能夠對家庭內部情況進行實時地掌握和控制。本系統(tǒng)主要由前端數據中心(A8)、遠程監(jiān)控終端(M0)和服務器端(PC)組成。
首先,數據接收模塊接收M0通過ZigBee傳輸上來的實時環(huán)境參數(如溫度、濕度、光感數據等),并通過接收端的ZigBee經USB轉串口操作,把采集到的環(huán)境參數發(fā)送給A8,由M0的接收請求線程從串口讀取消息,并交給數據處理模塊。數據處理模塊解碼接收到信息后,激活數據庫線程以保存數據,激活內存數據刷新線程以更新實時環(huán)境信息,并對環(huán)境參數進行判斷處理,決定是否進行報警。另外,在構建的嵌入式Web服務器上,用戶可以通過網絡,利用PC機對家居信息進行監(jiān)控;通過Web頁面上的控制按鈕,監(jiān)控設備可以識別出用戶指令并進行相應的動作。系統(tǒng)各模塊進程間關系如圖2所示。
3 關鍵算法設計
3.1 視頻流服務器設計
該服務器主要用于將攝像頭采集的視頻或者圖片顯示到網頁和LCD(Liquid Crystal Display,液晶顯示器)上,這里采用MJPG—stream er作為視頻流服務器。MIPG—streamer采用的是V4L2(Video 4 Linux 2)接口,可以通過文件或者是HTTP的方式訪問Linux UVC兼容攝像頭。視頻流服務器將攝像頭捕獲的圖像存入global buffer緩沖區(qū),當客戶端有訪問請求時,服務器便將global buffer緩沖區(qū)中的圖像數據連續(xù)地發(fā)送給客戶端。該程序中的server_pthread函數使用多線程技術,為每一個連接請求的客戶端創(chuàng)建一個線程。該線程獨立地與客戶端進行通信,發(fā)送圖像數據。
此外,MJPG—steamer還用來從網絡攝像頭采集圖像,并將它們以流的形式通過基于IP的網絡傳輸到瀏覽器的網頁上。由于MJPG—steam er可以通過利用網絡攝像機的硬件壓縮功能來降低服務器CPU的開銷,而無需為視頻幀壓縮浪費大量的資源,因此它為嵌入式設備和一些常規(guī)服務器提供了一個輕量級且較少CPU消耗的方案。MJPG—steamer功能強大,但為了符合本項目的需要,仍需對其進行修改,添加我們想要實現的功能。在本設計中,需要向MJPG—steamer視頻流服務器的添加LCD輸出插件,其代碼如下:
3.2 家電物聯(lián)網服務器設計
該服務器主要負責為網頁提供家電的實時狀態(tài)信息,同時也為Android手機客戶端提供服務,讓Android手機客戶端具有實時顯示和遠程控制家電的能力,其關系如圖3所示。
在網頁上顯示信息主要是通過.xml文件實現的。首先,網頁通過BOA服務器,調用CGI(Common Gateway Interface,通用網關接口)程序控制網頁線程,并發(fā)送命令給單板。然后,單板將采集到的數據發(fā)送給家電物聯(lián)網服務器,服務器通過向.xml文件中寫入采集到的數據,實現網頁的實時信息動態(tài)顯示。當網頁客戶端在瀏覽器中發(fā)送請求(如設置報警溫度等)時,BOA服務器會調用CGI接口解碼,區(qū)分提交過來的信息,然后把這個信息發(fā)送到單板,實現對單板的控制。Android手機客戶端與家電物聯(lián)網服務器的通信則主要是通過套接字進行的。
3.3 Android客戶端軟件設計
Android是一個專門為移動電話而設計的開放源碼的操作系統(tǒng),它將開辟新的應用,使家居智能化運用于普通家庭。Android客戶端控制系統(tǒng)采用模塊化的設計思想,主要包括應用層UI(User Interface,用戶界面)、JNI(Java Native Interface,Java本地接口)、HAL(Hardwa re Abstraction Layer,硬件抽象層)和底層驅動等的設計。Android應用程序由一個或多個組件構成,組件包括activity、service等,每個組件在應用程序中完成不同的任務,可以被單獨激活,也可以由其他應用程序激活,其具體流程如圖4所示。
其中,HAL層包括LED燈、蜂鳴器和按鍵等設備,主要用于實現供JNI調用的接口。在函數實現中,HAL利用底層驅動提供的接口(即ioctl)來控制寄存器,實現對設備的控制操作。JNI層通過封裝將Framework層調用的接口關聯(lián)到JNI層,每個設備都有自己唯一的設備ID。應用層UI顯示來自M0的模擬量,主要用于管理A8上各種設備的工作情況,可以實現LED控制、按鍵檢測、蜂鳴器控制、A/D轉換、溫度傳感器的數據讀取和方向傳感器模擬值的處理等功能,其控制程序客戶端主界面如圖5所示。圖中,上側為項目菜單欄,通過不同項目菜單下的信息和控制按鈕,可以實現對家居設備的遠程實時監(jiān)控;中間部分是對不同設備的控制開關,通過這些開關可以實現對警報燈、電風扇和蜂鳴器等設備的控制,并可以根據需要對報警溫度值進行設置;最后,通過對下側不同測量點的選擇,可以實現對不同位置房間的監(jiān)控。
結語
將設計的Android手機客戶端軟件安裝后,經反復測試,手機可以通過無線網絡實現對家居設備的控制。同時,也可以通過Internet遠程監(jiān)控網頁實現對家居設備的控制。通過本系統(tǒng),可以實現對家居設備的集中管理和控制,隨時隨地掌控家中的狀態(tài),得到家中的最新狀況。
此控制系統(tǒng)采用當前較新的控制方式——遠程監(jiān)控網頁和智能手機軟件控制,與其他終端控制方式相比優(yōu)勢明顯。同時,設計開發(fā)的手機軟件具有通用性強、易于移植、市場應用價值高、易于推廣等特點。本系統(tǒng)的設計不僅涵蓋了Linux系統(tǒng)開發(fā)的軟硬件技術,同時也包含了嵌入式產品設計的各種綜合素質和多項技能,具有一定的實用價值。
評論