文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0006-03
智能家居(Smart Home)是以物聯(lián)網(wǎng)(Internet of Thing)為基礎(chǔ),融合計算機,、通信,、控制技術(shù)于一體的現(xiàn)代智慧家居解決方案[1],。隨著人們對生活質(zhì)量和家居安防要求的提高,,智能家居系統(tǒng)在室內(nèi)終端控制方式的基礎(chǔ)上又增加了對遠(yuǎn)程監(jiān)控的新要求。而嵌入式Web服務(wù)器是解決該問題的一種很好的方案,。嵌入式Web服務(wù)器是指采用嵌入式Web技術(shù),,在嵌入式設(shè)備上移植的一個支持通用網(wǎng)關(guān)接口CGI(Common Gateway Interface)或服務(wù)器腳本語言(ASP、JSP,、PHP等)功能的輕量級Web服務(wù)器,。嵌入式Web服務(wù)器基于HTTP協(xié)議運作,具有標(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ā)展趨勢,。
本文主要研究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)勢[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)為例驗證方案的可行性。
1 系統(tǒng)總體設(shè)計
系統(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)牙模塊配對組網(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個串口,、28路GPIO口,、1個SPI和I2C接口等。Mini6410支持Android 2.3,,并具有以太網(wǎng)接入功能,。
中央服務(wù)與控制器通過串口連接藍(lán)牙主模塊,并與藍(lán)牙終端傳感器,、外設(shè)進行通信,;通過i-Jetty服務(wù)器將采集的家居環(huán)境信息轉(zhuǎn)換為動態(tài)網(wǎng)頁進行發(fā)布,并為用戶提供Web控制頁面以實現(xiàn)家電的遠(yuǎn)程控制功能,;通過SQLite將相關(guān)家居信息進行存儲,,為用戶提供查看室內(nèi)環(huán)境相關(guān)歷史數(shù)據(jù)的功能。
2.2 藍(lán)牙模塊
藍(lán)牙是一種支持設(shè)備短距離通信的無線電技術(shù),,具有自動同步,、自動聯(lián)網(wǎng)功能[4]。最新的低功耗藍(lán)牙BT4.0的有效傳輸距離可達100 m,,連接延遲時低于3 ms,,這些特點使得藍(lán)牙與智能家居系統(tǒng)的結(jié)合更具優(yōu)勢。
本系統(tǒng)采用廣州匯承公司生產(chǎn)的藍(lán)牙串口透傳模塊,,分為主模塊和從模塊兩種,。主、從模塊的硬件一致,,協(xié)議棧不同,。在連接配對過程中,主動發(fā)起搜索任務(wù)的為主模塊。當(dāng)連接完成后,,主,、從雙方的通信為角色對等的點對點通信。Mini6410通過2個串口分別連接主模塊和從模塊,,其中主模塊用于與控制模塊通信,,從模塊用于與手機、平板電腦等手持控制終端通信,。藍(lán)牙模塊可通過AT命令進行配置,。
2.3 控制模塊
控制模塊包括藍(lán)牙從模塊、微處理器和驅(qū)動或開關(guān)器件(如繼電器),,通過與中央服務(wù)與控制器的藍(lán)牙主模塊配對組網(wǎng),,接收并解析中央服務(wù)與控制器發(fā)來的指令,完成數(shù)據(jù)采集和設(shè)備控制的任務(wù),。本系統(tǒng)采用的微處理器為廣州周立功公司生產(chǎn)的TinyM0開發(fā)板,。溫度傳感器采用DS18B20,霍爾傳感器為A04E,,傳感器及固態(tài)繼電器與TinyM0的GPIO口連接,。
3 軟件平臺設(shè)計
3.1 Android驅(qū)動加載及系統(tǒng)移植
Mini6410平臺i-Jetty服務(wù)程序通過控制平臺的串口實現(xiàn)藍(lán)牙通信,因此需要移植Android系統(tǒng)并加載串口驅(qū)動,。FriendlyARM公司提供了交叉編譯工具鏈arm-linux-gcc,、Android系統(tǒng)映像制作工具mktools、系統(tǒng)引導(dǎo)文件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ū)動對應(yīng)設(shè)備的讀寫權(quán)限;(4)在上位機編寫JNI程序,,并通過Android NDK工具生成Linux平臺下的.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)下的輕量級Web服務(wù)器,,它將開源Web服務(wù)器Jetty移植到Android平臺,從而使Android設(shè)備可提供Web服務(wù)。i-Jetty是一個完全由Java實現(xiàn)的,、開源的HTTP服務(wù)器和Servlet容器[5],,其運行速度快,可以迅速為一些獨立運行的Java應(yīng)用提供網(wǎng)絡(luò)和Web連接功能,。i-Jetty是Google的開源項目,,可以從Google官網(wǎng)下載APK安裝包直接安裝到Android系統(tǒng)上。
相比于常見的Linux平臺下的boa,、thttpd,、mini_httpd、shttpd,、lighttpd等嵌入式Web服務(wù)器,,i-Jetty具有以下優(yōu)點:(1)由于Android支持Java虛擬機,因此i-Jetty支持采用面向?qū)ο笏枷牒投嗑€程技術(shù)構(gòu)建的功能強大的Web服務(wù)程序,。(2)支持Servlet技術(shù),。Java Servlet是采用Java技術(shù)的CGI程序[6],相比于其他嵌入式Web服務(wù)器的傳統(tǒng)CGI技術(shù),,Servlet能夠更簡潔,、更高效地生成動態(tài)Web頁面。
SQLite是一個針對嵌入式設(shè)備的輕量級數(shù)據(jù)庫,,是一個自包含,、無服務(wù)器、零配置,、事務(wù)性的SQL數(shù)據(jù)庫引擎[7],。Android系統(tǒng)集成了SQLite,并提供SQLiteData-
base,、Cursor和SQLiteOpenHelper 3個主要的類用于數(shù)據(jù)庫操作,。
3.3 通信協(xié)議
本系統(tǒng)設(shè)計有通信協(xié)議用于中央服務(wù)與控制器和控制模塊間的通信,其格式如圖4所示,。
軟件設(shè)計有服務(wù)器主線程,、串口監(jiān)聽線程、服務(wù)子線程和數(shù)據(jù)保存線程,。其中服務(wù)器主線程和串口監(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服務(wù)器的JAR包拷貝至相應(yīng)路徑下,,采用dx命令將工程編譯為Android虛擬機識別的字節(jié)碼文件,,然后將整個工程拷貝至Mini6410平臺i-Jetty服務(wù)器目錄下的webapps文件夾下。
4 系統(tǒng)測試
將Mini6410接入互聯(lián)網(wǎng),,運行Android系統(tǒng),,打開其上的i-Jetty服務(wù)器。在瀏覽器端輸入服務(wù)網(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服務(wù)器的智能家居系統(tǒng)方案。該方案以ARM開發(fā)平臺Mini6410為核心,,通過移植Android系統(tǒng),、加載串口驅(qū)動、安裝i-Jetty服務(wù)器和SQLite數(shù)據(jù)庫并利用藍(lán)牙組網(wǎng),,實現(xiàn)對家居環(huán)境的遠(yuǎn)程監(jiān)控,。系統(tǒng)主要采用Java語言開發(fā),具有架構(gòu)簡單,、開發(fā)難度較低的特點,并采用面向?qū)ο笏枷牒投嗑€程技術(shù)開發(fā)復(fù)雜應(yīng)用程序,。后續(xù)工作將對智能家居系統(tǒng)中的家電藍(lán)牙組網(wǎng)進行研究,。
參考文獻
[1] 毛明毅,蔣元恒,,陳志成.智能家居遠(yuǎn)程Web管理控制平臺的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機,,2013,30(5):121-124.
[2] 劉志東,紀(jì)金水,,楊鋒英.嵌入式Web服務(wù)器技術(shù)探究[J].電腦知識與技術(shù),,2011,7(27):6612-6613.
[3] 梁坤.一種基于Android系統(tǒng)的鍵盤模塊設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,,2013,,39(9):15-17.
[4] 王菊.智能家居系統(tǒng)架構(gòu)、實現(xiàn)與藍(lán)牙技術(shù)應(yīng)用展望[J].電子世界,,2012(6):15-16.
[5] 劉偉江,,李振漢,唐余亮,,等.基于Android的嵌入式Web服務(wù)器設(shè)計[J].電子設(shè)計工程,,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.