《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Android平臺(tái)i-Jetty服務(wù)器在智能家居中的應(yīng)用研究
Android平臺(tái)i-Jetty服務(wù)器在智能家居中的應(yīng)用研究
來源:電子技術(shù)應(yīng)用2014年第1期
位恒曦1,劉衛(wèi)玲2,賀云凱1,段晉軍1,常曉明1
(1.太原理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原030024; 2.太原理工大學(xué) 物理與光電工程
摘要: 針對(duì)智能家居系統(tǒng)架構(gòu)復(fù)雜、開發(fā)難度較大等問題,提出了一種基于Android平臺(tái)嵌入式Web服務(wù)器i-Jetty的智能家居系統(tǒng)方案。在ARM硬件平臺(tái)及Android軟件平臺(tái)上,采用i-Jetty服務(wù)器實(shí)現(xiàn)了家居環(huán)境信息網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控功能。系統(tǒng)以Mini6410開發(fā)板為中央控制器、服務(wù)器和室內(nèi)監(jiān)控平臺(tái),采用藍(lán)牙與被控設(shè)備進(jìn)行通信,通過Linux層驅(qū)動(dòng)加載、Android本地服務(wù)和Web服務(wù)的聯(lián)合編程,實(shí)現(xiàn)對(duì)傳感器數(shù)據(jù)的獲取、家電控制和信息發(fā)布。實(shí)驗(yàn)結(jié)果證明了方案的可行性和實(shí)用性。
中圖分類號(hào): TP273
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)01-0006-03
Application research of Android i-Jetty server in smart home system
Wei Hengxi1,Liu Weiling2,He Yunkai1,Duan Jinjun1,Chang Xiaoming1
1.College of Computer Science and Technology,Taiyuan University of Technology,Taiyuan 030024,China;2.College of Physics and Optoelectronics,Taiyuan University of Technology,Taiyuan 030024,China
Abstract: Aiming at the problems of complex system architecture and difficult development, a new smart home system scheme is presented in this paper,which is based on Android embedded Web server i-Jetty. The remote monitoring function of home environmental information via Internet is realized by transplanting i-Jetty on ARM platform and Android system. The scheme takes Mini6410 as the central controller, server and indoor control platform, and uses Bluetooth communication between Mini6410 and controlled terminals. The scheme realizes sensors′ data acquisition, household appliances controlling and information publishing by loading Linux layer drivers, programming Android native services together with Web services. The experiment results prove the feasibility and practicability of the scheme.
Key words : smart home;Android;i-Jetty;S3C6410A

    智能家居(Smart Home)是以物聯(lián)網(wǎng)(Internet of Thing)為基礎(chǔ),融合計(jì)算機(jī)、通信、控制技術(shù)于一體的現(xiàn)代智慧家居解決方案[1]。隨著人們對(duì)生活質(zhì)量和家居安防要求的提高,智能家居系統(tǒng)在室內(nèi)終端控制方式的基礎(chǔ)上又增加了對(duì)遠(yuǎn)程監(jiān)控的新要求。而嵌入式Web服務(wù)器是解決該問題的一種很好的方案。嵌入式Web服務(wù)器是指采用嵌入式Web技術(shù),在嵌入式設(shè)備上移植的一個(gè)支持通用網(wǎng)關(guān)接口CGI(Common Gateway Interface)或服務(wù)器腳本語言(ASP、JSP、PHP等)功能的輕量級(jí)Web服務(wù)器。嵌入式Web服務(wù)器基于HTTP協(xié)議運(yùn)作,具有標(biāo)準(zhǔn)的接口形式和通信協(xié)議,能夠向用戶提供基于瀏覽器的統(tǒng)一監(jiān)控界面,從而將傳統(tǒng)的嵌入式設(shè)備轉(zhuǎn)變?yōu)橐訲CP/IP為底層通信協(xié)議和以Web技術(shù)為核心的遠(yuǎn)程監(jiān)控設(shè)備[2]。嵌入式Web服務(wù)器的應(yīng)用已成為嵌入式系統(tǒng)必然的發(fā)展趨勢(shì)。
    本文主要研究Android系統(tǒng)下的i-Jetty服務(wù)器在智能家居系統(tǒng)中的應(yīng)用。Android是一種基于Linux內(nèi)核的開源嵌入式操作系統(tǒng),其開源特性和良好的UI系統(tǒng)相比于Windows CE和Linux系統(tǒng)具有一定的優(yōu)勢(shì)[3]。因此本文采用Android構(gòu)建智能家居系統(tǒng)。系統(tǒng)將Android、i-Jetty和嵌入式數(shù)據(jù)庫SQLite三者結(jié)合,并以遠(yuǎn)程控制室內(nèi)照明、監(jiān)控室內(nèi)溫度和門窗開關(guān)狀態(tài)為例驗(yàn)證方案的可行性。
1 系統(tǒng)總體設(shè)計(jì)
    系統(tǒng)由中央服務(wù)與控制器、控制模塊、藍(lán)牙模塊、監(jiān)控終端以及多種傳感器和家電組成。中央服務(wù)與控制器具有家庭網(wǎng)關(guān)、服務(wù)器和控制器的功能,可提供自身觸摸屏直接監(jiān)控、互聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控和藍(lán)牙室內(nèi)近程監(jiān)控三種監(jiān)控方式??刂颇K與中央服務(wù)以及與控制器的藍(lán)牙模塊配對(duì)組網(wǎng),通過藍(lán)牙通信接收并執(zhí)行控制指令,反饋狀態(tài)信息。系統(tǒng)總體架構(gòu)如圖1所示。

2.1 中央服務(wù)與控制器
    中央服務(wù)與控制器模塊采用FriendlyARM公司生產(chǎn)的Mini6410開發(fā)板。Mini6410采用ARM11內(nèi)核的S3C6410A處理器,主頻為533 MHz,外設(shè)接口包括4個(gè)串口、28路GPIO口、1個(gè)SPI和I2C接口等。Mini6410支持Android 2.3,并具有以太網(wǎng)接入功能。
    中央服務(wù)與控制器通過串口連接藍(lán)牙主模塊,并與藍(lán)牙終端傳感器、外設(shè)進(jìn)行通信;通過i-Jetty服務(wù)器將采集的家居環(huán)境信息轉(zhuǎn)換為動(dòng)態(tài)網(wǎng)頁進(jìn)行發(fā)布,并為用戶提供Web控制頁面以實(shí)現(xiàn)家電的遠(yuǎn)程控制功能;通過SQLite將相關(guān)家居信息進(jìn)行存儲(chǔ),為用戶提供查看室內(nèi)環(huán)境相關(guān)歷史數(shù)據(jù)的功能。
2.2 藍(lán)牙模塊
    藍(lán)牙是一種支持設(shè)備短距離通信的無線電技術(shù),具有自動(dòng)同步、自動(dòng)聯(lián)網(wǎng)功能[4]。最新的低功耗藍(lán)牙BT4.0的有效傳輸距離可達(dá)100 m,連接延遲時(shí)低于3 ms,這些特點(diǎn)使得藍(lán)牙與智能家居系統(tǒng)的結(jié)合更具優(yōu)勢(shì)。
    本系統(tǒng)采用廣州匯承公司生產(chǎn)的藍(lán)牙串口透?jìng)髂K,分為主模塊和從模塊兩種。主、從模塊的硬件一致,協(xié)議棧不同。在連接配對(duì)過程中,主動(dòng)發(fā)起搜索任務(wù)的為主模塊。當(dāng)連接完成后,主、從雙方的通信為角色對(duì)等的點(diǎn)對(duì)點(diǎn)通信。Mini6410通過2個(gè)串口分別連接主模塊和從模塊,其中主模塊用于與控制模塊通信,從模塊用于與手機(jī)、平板電腦等手持控制終端通信。藍(lán)牙模塊可通過AT命令進(jìn)行配置。
2.3 控制模塊
    控制模塊包括藍(lán)牙從模塊、微處理器和驅(qū)動(dòng)或開關(guān)器件(如繼電器),通過與中央服務(wù)與控制器的藍(lán)牙主模塊配對(duì)組網(wǎng),接收并解析中央服務(wù)與控制器發(fā)來的指令,完成數(shù)據(jù)采集和設(shè)備控制的任務(wù)。本系統(tǒng)采用的微處理器為廣州周立功公司生產(chǎn)的TinyM0開發(fā)板。溫度傳感器采用DS18B20,霍爾傳感器為A04E,傳感器及固態(tài)繼電器與TinyM0的GPIO口連接。
3 軟件平臺(tái)設(shè)計(jì)
3.1 Android驅(qū)動(dòng)加載及系統(tǒng)移植

    Mini6410平臺(tái)i-Jetty服務(wù)程序通過控制平臺(tái)的串口實(shí)現(xiàn)藍(lán)牙通信,因此需要移植Android系統(tǒng)并加載串口驅(qū)動(dòng)。FriendlyARM公司提供了交叉編譯工具鏈arm-linux-gcc、Android系統(tǒng)映像制作工具mktools、系統(tǒng)引導(dǎo)文件superboot以及SD卡燒寫工具SD-Flasher,可以方便地實(shí)現(xiàn)系統(tǒng)移植。Mini6410平臺(tái)Android系統(tǒng)移植及驅(qū)動(dòng)加載的過程如下:(1)將編寫的驅(qū)動(dòng)文件拷貝到Linux內(nèi)核的Drivers路徑下,修改Makefile和Kconfig配置文件;(2)通過make命令編譯Linux內(nèi)核,生成內(nèi)核映像;(3)修改Android文件系統(tǒng)中的init.rc文件,增加驅(qū)動(dòng)對(duì)應(yīng)設(shè)備的讀寫權(quán)限;(4)在上位機(jī)編寫JNI程序,并通過Android NDK工具生成Linux平臺(tái)下的.so文件;(4)將.so文件拷貝到系統(tǒng)庫文件路徑下,然后生成Android文件系統(tǒng)的映像;(5)將系統(tǒng)引導(dǎo)文件、Linux內(nèi)核映像、Android文件系統(tǒng)映像燒寫至Mini6410。
3.2 i-Jetty與SQLite
    i-Jetty是Android系統(tǒng)下的輕量級(jí)Web服務(wù)器,它將開源Web服務(wù)器Jetty移植到Android平臺(tái),從而使Android設(shè)備可提供Web服務(wù)。i-Jetty是一個(gè)完全由Java實(shí)現(xiàn)的、開源的HTTP服務(wù)器和Servlet容器[5],其運(yùn)行速度快,可以迅速為一些獨(dú)立運(yùn)行的Java應(yīng)用提供網(wǎng)絡(luò)和Web連接功能。i-Jetty是Google的開源項(xiàng)目,可以從Google官網(wǎng)下載APK安裝包直接安裝到Android系統(tǒng)上。
    相比于常見的Linux平臺(tái)下的boa、thttpd、mini_httpd、shttpd、lighttpd等嵌入式Web服務(wù)器,i-Jetty具有以下優(yōu)點(diǎn):(1)由于Android支持Java虛擬機(jī),因此i-Jetty支持采用面向?qū)ο笏枷牒投嗑€程技術(shù)構(gòu)建的功能強(qiáng)大的Web服務(wù)程序。(2)支持Servlet技術(shù)。Java Servlet是采用Java技術(shù)的CGI程序[6],相比于其他嵌入式Web服務(wù)器的傳統(tǒng)CGI技術(shù),Servlet能夠更簡潔、更高效地生成動(dòng)態(tài)Web頁面。
    SQLite是一個(gè)針對(duì)嵌入式設(shè)備的輕量級(jí)數(shù)據(jù)庫,是一個(gè)自包含、無服務(wù)器、零配置、事務(wù)性的SQL數(shù)據(jù)庫引擎[7]。Android系統(tǒng)集成了SQLite,并提供SQLiteData-
base、Cursor和SQLiteOpenHelper 3個(gè)主要的類用于數(shù)據(jù)庫操作。
3.3 通信協(xié)議
    本系統(tǒng)設(shè)計(jì)有通信協(xié)議用于中央服務(wù)與控制器和控制模塊間的通信,其格式如圖4所示。

 

 

    軟件設(shè)計(jì)有服務(wù)器主線程、串口監(jiān)聽線程、服務(wù)子線程和數(shù)據(jù)保存線程。其中服務(wù)器主線程和串口監(jiān)聽線程的程序流程分別如圖6和圖7所示。

    程序開發(fā)環(huán)境為Eclipse。在Eclipse中新建Android項(xiàng)目和動(dòng)態(tài)Web項(xiàng)目,在Web項(xiàng)目中開發(fā)HTML、創(chuàng)建Servlet程序框架并配置web.xml;在Android項(xiàng)目開發(fā)中,首先將Web項(xiàng)目中的Servlet框架文件拷貝到源碼文件夾下,然后進(jìn)行控制邏輯的編碼開發(fā)。Eclipse對(duì)Android項(xiàng)目Java文件自動(dòng)編譯,得到.class文件。在PC任意目錄下構(gòu)建Web工程的通用目錄結(jié)構(gòu),將Android項(xiàng)目中編譯后的類文件和Web項(xiàng)目中的HTML文件、web.xml文件以及i-Jetty服務(wù)器的JAR包拷貝至相應(yīng)路徑下,采用dx命令將工程編譯為Android虛擬機(jī)識(shí)別的字節(jié)碼文件,然后將整個(gè)工程拷貝至Mini6410平臺(tái)i-Jetty服務(wù)器目錄下的webapps文件夾下。
4 系統(tǒng)測(cè)試
    將Mini6410接入互聯(lián)網(wǎng),運(yùn)行Android系統(tǒng),打開其上的i-Jetty服務(wù)器。在瀏覽器端輸入服務(wù)網(wǎng)址,打開智能家居系統(tǒng)的登錄頁面,登錄成功后進(jìn)入主頁面,主頁面提供家居管理、系統(tǒng)管理和數(shù)據(jù)管理3項(xiàng)功能。家居管理用于監(jiān)控室內(nèi)環(huán)境和家居狀態(tài);系統(tǒng)管理用于配置系統(tǒng),如增加監(jiān)控家電等;數(shù)據(jù)管理用于查看家居信息歷史數(shù)據(jù)。
    進(jìn)入“家居管理”欄目,可以查看室內(nèi)溫度、門窗開關(guān)情況,并可以控制照明燈。管理頁面如圖8所示。

    本文提出了一種基于Android平臺(tái)i-Jetty嵌入式Web服務(wù)器的智能家居系統(tǒng)方案。該方案以ARM開發(fā)平臺(tái)Mini6410為核心,通過移植Android系統(tǒng)、加載串口驅(qū)動(dòng)、安裝i-Jetty服務(wù)器和SQLite數(shù)據(jù)庫并利用藍(lán)牙組網(wǎng),實(shí)現(xiàn)對(duì)家居環(huán)境的遠(yuǎn)程監(jiān)控。系統(tǒng)主要采用Java語言開發(fā),具有架構(gòu)簡單、開發(fā)難度較低的特點(diǎn),并采用面向?qū)ο笏枷牒投嗑€程技術(shù)開發(fā)復(fù)雜應(yīng)用程序。后續(xù)工作將對(duì)智能家居系統(tǒng)中的家電藍(lán)牙組網(wǎng)進(jìn)行研究。
參考文獻(xiàn)
[1] 毛明毅,蔣元恒,陳志成.智能家居遠(yuǎn)程Web管理控制平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2013,30(5):121-124.
[2] 劉志東,紀(jì)金水,楊鋒英.嵌入式Web服務(wù)器技術(shù)探究[J].電腦知識(shí)與技術(shù),2011,7(27):6612-6613.
[3] 梁坤.一種基于Android系統(tǒng)的鍵盤模塊設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(9):15-17.
[4] 王菊.智能家居系統(tǒng)架構(gòu)、實(shí)現(xiàn)與藍(lán)牙技術(shù)應(yīng)用展望[J].電子世界,2012(6):15-16.
[5] 劉偉江,李振漢,唐余亮,等.基于Android的嵌入式Web服務(wù)器設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,21(9):4-6.
[6] 李亞娟.嵌入式Web技術(shù)應(yīng)用研究[D].西安:西安電子科技大學(xué),2008.
[7] SQLite.About SQLite[EB/OL].[2013-08-23].http://www.sqlite.org/about.html.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。