文獻標識碼: A
文章編號: 0258-7998(2014)01-0006-03
智能家居(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.