《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > Android平臺i-Jetty服務器在智能家居中的應用研究
Android平臺i-Jetty服務器在智能家居中的應用研究
來源:電子技術(shù)應用2014年第1期
位恒曦1,劉衛(wèi)玲2,賀云凱1,段晉軍1,常曉明1
(1.太原理工大學 計算機科學與技術(shù)學院,山西 太原030024; 2.太原理工大學 物理與光電工程
摘要: 針對智能家居系統(tǒng)架構(gòu)復雜、開發(fā)難度較大等問題,提出了一種基于Android平臺嵌入式Web服務器i-Jetty的智能家居系統(tǒng)方案。在ARM硬件平臺及Android軟件平臺上,采用i-Jetty服務器實現(xiàn)了家居環(huán)境信息網(wǎng)絡遠程監(jiān)控功能。系統(tǒng)以Mini6410開發(fā)板為中央控制器、服務器和室內(nèi)監(jiān)控平臺,采用藍牙與被控設備進行通信,通過Linux層驅(qū)動加載、Android本地服務和Web服務的聯(lián)合編程,實現(xiàn)對傳感器數(shù)據(jù)的獲取、家電控制和信息發(fā)布。實驗結(jié)果證明了方案的可行性和實用性。
中圖分類號: TP273
文獻標識碼: A
文章編號: 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)為基礎,融合計算機、通信、控制技術(shù)于一體的現(xiàn)代智慧家居解決方案[1]。隨著人們對生活質(zhì)量和家居安防要求的提高,智能家居系統(tǒng)在室內(nèi)終端控制方式的基礎上又增加了對遠程監(jiān)控的新要求。而嵌入式Web服務器是解決該問題的一種很好的方案。嵌入式Web服務器是指采用嵌入式Web技術(shù),在嵌入式設備上移植的一個支持通用網(wǎng)關(guān)接口CGI(Common Gateway Interface)或服務器腳本語言(ASP、JSP、PHP等)功能的輕量級Web服務器。嵌入式Web服務器基于HTTP協(xié)議運作,具有標準的接口形式和通信協(xié)議,能夠向用戶提供基于瀏覽器的統(tǒng)一監(jiān)控界面,從而將傳統(tǒng)的嵌入式設備轉(zhuǎn)變?yōu)橐訲CP/IP為底層通信協(xié)議和以Web技術(shù)為核心的遠程監(jiān)控設備[2]。嵌入式Web服務器的應用已成為嵌入式系統(tǒng)必然的發(fā)展趨勢。
    本文主要研究Android系統(tǒng)下的i-Jetty服務器在智能家居系統(tǒng)中的應用。Android是一種基于Linux內(nèi)核的開源嵌入式操作系統(tǒng),其開源特性和良好的UI系統(tǒng)相比于Windows CE和Linux系統(tǒng)具有一定的優(yōu)勢[3]。因此本文采用Android構(gòu)建智能家居系統(tǒng)。系統(tǒng)將Android、i-Jetty和嵌入式數(shù)據(jù)庫SQLite三者結(jié)合,并以遠程控制室內(nèi)照明、監(jiān)控室內(nèi)溫度和門窗開關(guān)狀態(tài)為例驗證方案的可行性。
1 系統(tǒng)總體設計
    系統(tǒng)由中央服務與控制器、控制模塊、藍牙模塊、監(jiān)控終端以及多種傳感器和家電組成。中央服務與控制器具有家庭網(wǎng)關(guān)、服務器和控制器的功能,可提供自身觸摸屏直接監(jiān)控、互聯(lián)網(wǎng)遠程監(jiān)控和藍牙室內(nèi)近程監(jiān)控三種監(jiān)控方式??刂颇K與中央服務以及與控制器的藍牙模塊配對組網(wǎng),通過藍牙通信接收并執(zhí)行控制指令,反饋狀態(tài)信息。系統(tǒng)總體架構(gòu)如圖1所示。

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

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

 

 

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

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

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