摘要:基于FS_S5PC100硬件平臺和Android框架,設計與實現了一個智能家居系統。首先,在Android框架下設計與實現了智能家居系統的JNI程序、底層Linux驅動程序和基于Java的用戶界面程序,然后在板級資源基礎上模擬實現了智能家居系統中的室內光源控制、異常報警、溫度采集和控制、電壓采集和控制等七個功能模塊。最后經測試,系統運行穩定,操作方便,可擴展性強,對日后開發相似智能系統具有一定的借鑒價值。
關鍵詞:Android;JNI;Linux;智能家居
中圖分類號:TP3681 文獻標識碼:A文章編號:2095-2163(2013)02-0065-03
0引言
智能家居是以住宅為平臺,兼備新式建筑、網絡通信、信息家電、設備自動化等諸類優勢,群集系統、結構、服務、管理于一體而打造的以高效、舒適、安全、便利、環保為主旨特征的高科技時代先進居住環境。該類型家居不僅具有傳統意義上的居住功能,更為人們提供了舒適安享的家庭生活空間,而且通過把智能高科技帶進家庭,由此使全方位的信息交換成為可能[1]。目前,隨著基于3G和WIFI功能的各類智能產品逐步進入人們的生活,基于Android的智能家居系統也必將引領未來的家具潮流。
本文在FS_S5PC100硬件平臺上,利用Android框架,模擬實現了智能家居系統。系統功能主要有,通過LED燈模擬控制室內光源,通過蜂鳴器模擬報警功能,通過按鍵模擬室內人員移動方向,通過RTC時鐘實現采集并控制時鐘,通過溫度傳感器、電位器等模擬室內相應的數據采集模塊。測試結果表明,該系統可擴展性強、操作方便,為實際制作基于Android的智能家居系統提供了有益的理論參考。
1需求分析
11任務描述
通過本系統,可以對家庭的各項數據進行采集、進而對家用電器實行遠程控制;當室內出現異常狀況時,用戶能夠及時得到通知并通過網絡實施操作以降低損失。在使用上,本系統應該適合大眾消費群體,用戶利用手機界面上的相應按鈕能夠快速達到精通,并可以對系統進行全面觀察和監控,執行相應動作。
系統中,Android是一個源碼開放、且為移動電話而專門設計的操作系統。在深入了解Java編程、Hal架構編程、Linux驅動編程基礎上,將Android與傳感器技術相結合,加以技術開發,設計得到了基于Android的智能家居系統,系統層次架構如表1所示。
12任務目標
本模擬系統以FS_S5PC100開發板為硬件平臺,利用Android系統實現了前端數據采集和后臺控制兩部分,即實現了遠程控制和本地監控兩大功能,具體包括七個功能模塊,這七個模塊分別是:
(1)LED模塊:模擬控制光源。
(2)蜂鳴器模塊:模擬報警功能。
(3)按鍵檢測模塊:模擬室內人員移動方向。
(4)RTC實時時鐘模塊:采集并控制時鐘。
(5)溫度傳感器模塊:采集溫度數據。
(6)ADC電位器模塊:采集電壓信息。
(7)方向傳感器模塊:模擬三個軸方向信息。第2期王冬星,等:基于FS_S5PC100和Android平臺的智能模擬系統的設計與實現智能計算機與應用第3卷
2HAL框架的設計與實現
硬件抽象層通過open(),read(),write(), ioctl(),poll()等函數調用的方式,與底層設備驅動程序進行交互,而這些函數調用是底層設備驅動程序預先定制的。對于目前的HAL,可做如下認定:Android給出了HAL層結構框架,可通過多個接口訪問硬件,從而在調用方式上達到了統一[2]。
以LED模塊操作為例,其在HAL架構的各層接口,包括應用層和驅動層,具體如圖1所示。
HAL層實現了四個模塊:LED、蜂鳴器、按鍵檢測和RTC。在此,重點說明LED模塊,其它模塊實現方法與其類似,具體可參見LED模塊即可。
2.1LED模塊
LED模塊主要模擬實現智能家居的光源情況,用戶可以根據室內光照的明暗程度對光源進行控制,在整合Android各個框架的基礎上,實現對硬件設備LED的控制。具體的設計和實現如下。
2.1.1驅動設計與實現
GPG3(0-3)控制LED亮滅,電路中,當GPG3(0-3)各位均輸出高電平時LED亮,反之則滅。對GPG3CON進行設置,將對應的4位設定成輸出位;對GPG3DAT給以賦值,控制各LED亮滅。在ioctl()中增加一個arg參數,通過傳遞參數對4個LED燈進行選擇,并在ioctl前就對arg參數加以判斷,確定其是否合法。在驅動程序中應用的宏和全局變量如表2、表3所示。
2.1.2HAL層設計與實現
HAL層中應用宏,如表4所示。
該層實現了可供JNI層調用的接口,實現代碼如下:
在這些函數實現中,利用底層驅動提供的接口,即ioctl,控制寄存器完成控制LED燈的亮滅操作。
該層調用了led_device_open函數和led_device_close函數。其中的led_device_close函數可用來釋放led_device_open函數中申請的結構體指針,并關閉文件設備fd。
實例化后的led_control_device_t地址返回給JNI層,其后JNI層就可以直接調用led_on等方法,還可以操作處理stub的函數,進而控制函數。JNI層使用的全局變量如表5所示。
22蜂鳴器模塊
蜂鳴器模塊主要模擬現實家居的報警功能,用戶可以根據室內物體移動等情況決定是否開啟報警系統,其驅動實現、HAL層實現和JNI層實現類似LED模塊。
23按鍵檢測模塊
按鍵檢測模塊主要模擬現實家居中人員的移動方向,用戶可以根據室內人員的方向來判定。
在FS_S5PC100平臺上,6個按鍵分別對應EINT1-7。其在核心板上對應為:GPH0_1-GPH0_7。根據接收中斷的不同,賦給全局變量key的值也就不同,以此代表不同的中斷,并將key傳給用戶界面。
2.4RTC實時時鐘模塊
RTC實時時鐘模塊主要對現實家居中時鐘的數據采集和進行相應設置。
3Sensor架構程序設計與實現
Android的傳感器系統,為開發者提供了統一的程序框架來實現系統中的多個傳感器功能。試舉一例,在本系統中利用磁場傳感器來模擬AD轉換,并實現了溫度傳感器數據采集。
作為直接與驅動程序相聯系的接口,Sensor_Hal_Stub實現了所有傳感器的基本操作程序接口,同時又結合了傳感器系統的特點,將所有傳感器整合到統一框架中,實現了多個傳感器的訪問控制[3]。
4系統測試
經測試,系統運行穩定,基本實現了需求分析中的既定任務目標。例如,點擊LED控制室內光源的測試,相應控件提示點亮信息,并將結果反饋給用戶,告知與其關聯硬件LED燈點亮。模擬控制室內光源測試效果如圖2所示。
5結束語
本文以FS_S5PC100為平臺,基于Android框架,模擬實現了一個智能家居系統。經測試,實驗室中的系統實現了既定的任務目標,但還有許多不足和有待改進之處,如界面設計不夠友好,互動性功能不完備等,這些均需要在下一步的研究工作中進行完善和提高[4]。
參考文獻:
[1]賀翔,孟小華.嵌入式智能家居終端人機界面設計與實現[J].計算機工程與設計,2010,31(10):2166-2168.
[2]楊豐盛. Android技術內幕[M].北京:機械工業出版社,2011:3-100.
[3]鄧凡平.深入理解Android[M]. 北京:機械工業出版社,2011:1-41.
[4]王藝璇.基于Android平臺的移動圖書館客戶端設計與實現[J]. 智能計算機與應用,2011,1(4):28-30,33.