衡友躍,楊義
(1.淮北職業(yè)技術學院計算機科學與技術系,安徽淮北 235000;2.淮北師范大學計算機科學與技術學院,安徽淮北 235000)
安全、舒適、方便和快捷的居家生活是人們的追求目標,家庭智能化將是大勢所趨,不久的將來,我國的家居市場將會迅速崛起[1].當前在智能家居行業(yè)還沒有形成統(tǒng)一標準,各個公司所推出的智能家居產(chǎn)品不能互相兼容;遠程控制基本上都基于Internet,但是在有些場合還是不太方便,也有少數(shù)基于手機短信的遠程控制,但沒有充分發(fā)揮3G的優(yōu)勢[2-4].隨著3G的快速發(fā)展,Google公司推出了Android開放平臺并迅速占領了智能手機的大部分市場份額,受到各個公司的追捧,Android已經(jīng)成為大家認可的公共平臺.本文基于Android開放平臺設計了一種通用性好、擴展性強、簡捷便利的智能家居系統(tǒng).
Android基于開源操作系統(tǒng)Linux2.6內核,是Google公司在2007年底發(fā)布的手機開放平臺.為了推廣Android,Google與包括中國移動在內的幾十家技術和無線應用的領軍企業(yè)成立了開放手機聯(lián)盟.很多廠商推出了多種基于Android平臺的功能特色多樣的產(chǎn)品.這些產(chǎn)品卻影響不到數(shù)據(jù)交互、軟件兼容.2011年初報告顯示,Android僅正式上市兩年就成為全球最受歡迎的智能手機平臺.2011年5月10日,Google發(fā)布了Android@Home軟件平臺.Android@Home把許多本來不相關的東西聯(lián)系起來,許多電子用品變得智慧化和互相聯(lián)系,而Google就是想Android從中扮演重要的聯(lián)系角色[5].
嵌入式Web服務器是整個智能家居主控系統(tǒng)的核心,提供Internet和3G兩種連接方式,用戶可以通過連網(wǎng)的IE瀏覽器或者Android智能終端應用程序登錄到主控系統(tǒng),通過身份安全驗證后,就可以訪問并控制智能家庭終端;主控系統(tǒng)采用人性化設計,使用液晶屏和觸摸屏;用戶還可以通過遠程終端設置系統(tǒng)參數(shù)來安排任務;同時還預留了豐富的功能擴展接口,方便以后的功能擴展.圖1為系統(tǒng)總體設計結構圖.
圖1 總體結構Fig.1 Generalstructure
在本系統(tǒng)中,主控板集成了Samsung公司的S5PV210芯片、兩片512M Byte DDRII、256M Byte的SLC型NandFlash、智能單片PMICWM8310電源管理單元、100 M DAVICOM公司的以太網(wǎng)芯片DM9000AEP、華為公司的EM770W 3G無線通訊模塊,如圖2所示.
圖2 硬件結構Fig.2 Hardwarestructure
S5PV210是SAMSUNG公司基于ARMv7指令架構的通用處理器.CPU主頻1GHz;支持NEON指令;支持MPEG-4/MPEG2、H.264/H263、VC-1、DivX的視頻編解碼1080p@30 fps;支持 2D圖形加速,最大支持8 000×8 000分辨率;支持3D圖形加速,OpenGL-1.1&2.0、OpenVG1. 0;支持SD/MMC/SDIO接口存儲卡,最高支持32GB;支持JPEG硬件編解碼,最大支持8 192×8 192分辨率.
S5PV210是整個系統(tǒng)的核心.作為一個嵌入式網(wǎng)關,將智能家電和外部網(wǎng)絡連接起來.用戶可以通過Internet或3G無線網(wǎng)絡發(fā)送指令,實現(xiàn)查看、控制家中智能終端,也可以通過LCD設置任務.
DAVICOM公司的10/100Mb/s自適應以太網(wǎng)芯片.其特點是:寄存器操作方便,驅動程序源碼齊全;3.3 V接口電平;成本低廉;高性能、低功耗;設計簡單.所以可以容易的完成不同系統(tǒng)的驅動程序開發(fā)[6].
3G模塊采用華為技術公司的EM770W,該模塊支持UMTS 2100/1900/900/850和GPRS/GSM 1900/1800/900/850頻段;支持語音、短信、數(shù)據(jù)、電話本、補充業(yè)務;內置TCP/IP協(xié)議棧;支持FOTA功能;提供通用MiniPCIExpress接口;提供主集天線、分集天線接口;支持標準AT指令集和華為擴展AT指令集;支持特殊的USIM卡業(yè)務;符合ROHS環(huán)保認證要求.
EM770W通過MiniPCIExpress接口連接主控板,使用時一定要放好SIM卡.
軟件方面包括系統(tǒng)移植和應用開發(fā),系統(tǒng)移植首先搭建系統(tǒng)移植環(huán)境,接著移植Linux內核、驅動程序,最后移植嵌入式Web服務器BOA.應用開發(fā)主要是開發(fā)Android智能手機終端遠程控制軟件.
3.1.1 系統(tǒng)移植環(huán)境 ①安裝主機環(huán)境.使用的Linux主機環(huán)境:ubuntu-9.10,采用Windows+vmware+ubuntu的方式,也可以直接安裝ubuntu;②安裝必要的軟件包.編譯Android需要許多的軟件包的配合,可以直接在ubuntu下輸入命令進行安裝:sudo apt-get installgit-core gnupg flex bison gperf lib sdl-dev libesd0-dev libwxgtk2.6-dev build-essentialzip curl libncurses5-dev zlib1g-dev valgrind;③安裝合適的JDK.Android的編譯還需要使用到Java開發(fā)環(huán)境,安裝結束后還要設置好環(huán)境變量讓Android找到這個路徑.
3.1.2 內核移植 復制android.tar.bz2到Linux主機下,運行tar命令進行解壓即得到Android的源碼目錄.需要注意:里面已經(jīng)包含了Android、u-boot、linux kernel等源碼包和交叉編譯器.u-boot源碼放在bootable文件夾里,內核源碼放在kernel文件夾里.
Android系統(tǒng)是基于linux2.6內核,因此內核移植過程與嵌入式linux內核移植非常類似,過程如下:①android linux內核的普通驅動移植,讓內核可以在目標平臺上運行起來;②正確掛載文件系統(tǒng),確保內核啟動參數(shù)和android源代碼system/core/rootdir目錄下的init.rc中的文件系統(tǒng)掛載正確[7];③調試控制臺,讓內核啟動參數(shù)中的console參數(shù)以及android源代碼system/core/init/init.c中的console_name設置和硬件保持一致;④打開android相關的驅動(logger,binder等),串口輸入logcat看logger驅動起來,沒有的話調試logger驅動.
3.1.3 D M 9000網(wǎng)卡驅動程序移植 DM9000網(wǎng)卡驅動源碼文件為driver/net/dm9000.c,過程如下:①定義網(wǎng)卡設備,在devs.c文件中添加DM9000用到的地址端口、數(shù)據(jù)端口和中斷號;②根據(jù)前面步驟定義的網(wǎng)卡設備,在devs.hc文件中添加變量聲明;③把網(wǎng)卡設備添加進平臺設備列表中;④設置芯片物理地址,激活DM9000的中斷;⑤進入源碼目錄,進入內核的配置選項菜單,選擇相關選項,編譯內核.
3.1.4 BOA移植 BOA是一款輕量級的、高性能的嵌入式web服務器,和普通的web服務器一樣,它能夠解析http協(xié)議,接收客戶端的請求并對它分析,然后把響應結果返回給客戶端等任務.先準備好BOA的源碼,將BOA移植到Android平臺上,最主要一點就是把BOA的makefile改成Android平臺上的makefile,即Android.mk.具體的移植過程如下:①將BOA源碼目錄拷貝到android源碼的一個目錄下,比如external目錄下;②在BOA源碼目錄下新建Android.mk文件,參照BOA的makefile,將生成BOA可執(zhí)行程序需要的那些源文件放在Android.mk的LOCAL_SRC_FILES:=中;③將BOA的makefile中的編譯規(guī)則GCC_FLAGS,搬到Android.mk的LOCAL_CFLAGS后面;④生成BOA可執(zhí)行程序,在android源碼根目錄下執(zhí)行“make boa”,可執(zhí)行程序BOA生成;⑤修改boa_indexer,這個的makefile更簡單,因為源文件較少,只有2個,適當修改makefile,改好后,make boa_indexer,完成.
需注意的是,由于Android的C庫跟其他的嵌入式工具鏈的C庫有較大差別,編譯的過程中容易出現(xiàn)一些錯誤,按照錯誤提示進行修改即可解決問題.
應用開發(fā)主要是遠程終端Android手機上的控制軟件開發(fā),核心技術是遠程控制終端Android智能手機如何與家庭控制中心的服務器端建立聯(lián)系,可以采用基于http協(xié)議建立聯(lián)系或者采用基于SAOP協(xié)議建立聯(lián)系[8].
使用http協(xié)議與服務器端建立聯(lián)系,服務器端基于Java技術,可以采用Struts2框架,也可以使用Servlet,或者使用JSP從頁面中取得數(shù)據(jù).步驟如下:
(1)編寫服務器端方法,采用的MVC框架是Struts2,新建Web Project,選擇Java ee 5.0.為了給項目添加Struts2的支持,必須導入Struts2的一些類庫,主要類庫:xwork-core-2.2.1.1.jar、struts2-core-2.2.1.1.jar、commons-io.jar、commons-logging-1.0.4.jar、freemarker-2.3.16.jar、javassist-3.7.ga.jar、commons-ileupload.jar、json-lib-2.1-jdk15.jar、struts2-json-plugin-2.2.1.1.jar、ognl-3.0.jar,以上的 jar包,需要放在 WebRoot/WEB-INF/lib目錄下;
運行Android應用程序,將獲得服務器端數(shù)據(jù).
對系統(tǒng)的遠程監(jiān)控子系統(tǒng)進行測試,測試結果見表1.
表1 測試結果Tab.1 Test result
由表1可知,系統(tǒng)可較好滿足設計要求預期,圖3是一個監(jiān)控效果截圖.
圖3 監(jiān)控效果Fig.3 Monitoring effect
本文分析了當前市場上的智能家居存在的缺點,提出了基于Android的智能家居方案.分別從硬件、軟件兩方面介紹設計思路,重點分析了系統(tǒng)移植和軟件設計過程.實驗證明,該方案通用性好、擴展性強、操作方便.
[1]張磊磊.嵌入式Web Server智能家居控制器的研究及實現(xiàn)[D].西安:西安科技大學,2008.
[2]高明明,惠曉威,林森.基于GSM短信的智能家居控制系統(tǒng)的研究[J].微計算機信息,2010,12(1):79-81.
[3]李新春,趙雙華.基于ARM與GPRS的家庭智能控制系統(tǒng)的設計與實現(xiàn)[J].計算機系統(tǒng)應用,2010,19(5):227-229.
[4]馬榮祥.一種智能家居系統(tǒng)復合型網(wǎng)關的設計[J].電子測量技術,2010,33(4):91-93.
[5]谷奧.Google發(fā)布Android@Home,讓你用Android設備控制家電[EB/OL].[2012-12-10].http://www.guao.hk/posts/googleannounces-android-home-framework-for-home-automation.html.
[6]趙廣磊.基于嵌入式系統(tǒng)的CAN總線與以太網(wǎng)的網(wǎng)關設計[D].武漢:華中科技大學,2009.
[7]宋杰,王書菊,曹竹冬,等.基于ARM2440平臺的Android操作系統(tǒng)的移植[J].計算機技術與發(fā)展,2011,21(1):66-69.
[8]耿東久,索岳,陳渝,等.基于 Android手機的遠程訪問和控制系統(tǒng)[J].計算機應用,2011,31(2):559-561.