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