張佳進,陳立暢,唐秀英,楊曉東,唐君君
(1.云南農業大學 基礎與信息工程學院,昆明650201;2.云南農業大學 工程技術學院)
Android本意指“機器人”,是Google公司于2007年11月5日宣布的基于Linux平臺的開源手機操作系統,是當今三大智能手機操作系統之一。它包括操作系統、用戶界面、中間件和應用程序,擁有移動電話工作所需的全部軟件,同時,其開放性保證該平臺不存在任何阻礙移動產業創新的專有權障礙。因此,其市場份額增長迅速,軟件生態系統日漸成熟,大量軟件開發人員投身到Android應用程序開發中來。
當前Android手機主要集成了WiFi、藍牙通信接口,它們具有傳輸速率高、通用性好等優點。但是在普適計算、物聯網領域中,大量傳感器、控制設備往往采用傳統的串行通信、I/O 控制等技術。目前,Android手機往往缺乏這些接口,雖然可以采用藍牙轉RS232等技術來實現Android手機與外部物理設備的通信與控制,但是藍牙技術有通信距離短、不可靠、功耗高等缺點。特別是在低功耗物聯網環境中,我們很難采用藍牙、WiFi通信技術。因此這在某種程度上制約了Android 手機在以上領域的應用[3]。
IOIO是SparkFun公司出品的一款專門為Android1.5版本以上系統設計的通用型開源控制模塊,它給開發者提供了免費的系統電路圖及系統主板MCU 的Firmware,同時也提供了豐富的Java API[1]接口。IOIO 通過USB 接口與Android 手機相連,高度集成了數字I/O 端口、PWM、模擬輸入端口、I2C 總線、SPI,以及UART 控制器等功能組件,只需通過簡單、直觀的Java API驅動程序即可直接操作外部硬件I/O 端口,既無需嵌入式編程,又不用外部編程器,使用方便靈活。因此,通過IOIO 模塊,Android手機可以方便地整合3G 通信網絡、藍牙通信、觸摸屏交互技術、各類傳感器與外圍物理設備相連,從而增強了手機與物理世界的信息交互能力,為Android手機的創新應用打下了良好基礎。目前,許多國際著名品牌的Android手機和平板電腦都兼容支持IOIO 模塊,例如Google、Samsung、HTC、LG、Motorola等[2]。
IOIO 主要采用了低功耗PIC 單片機作為系統控制器,IOIO 模塊實物圖如圖1所示。IOIO 硬件電路板上集成了模擬輸入、I2C 總線、SPI、UART、GPIO 等多個功能接口部件。主要引腳功能分類如表1所列。

圖1 IOIO 模塊實物圖

表1 IOIO 模塊主要引腳功能分類
Android操作系統自上向下分成應用層、應用框架層、組件庫層、虛擬機和Linux內核層[56]。其構架如圖2所示。

圖2 Android框架
應用層(Application layer)。Android操作系統和一系列核心應用模塊一起發布,其核心應用模塊主要包括電話短信功能、網頁瀏覽器、聯系簿等。
應用框架層(Application Framwork layer)。開發者通過使用核心應用程序來調用Android框架提供的API組件。
組件庫層(Libraries layer)。Android包含了一套C/C++函數庫,主要包括libc、Media Framework、WebKit、OpenGLES、FreeType、SQLite等,這些功能通過Android應用框架展現給開發人員。
運行時環境(Android Runtime)。Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能。每一個Android 應用程序都擁有一個獨立的Dalvik虛擬機實例。
Linux內核層(Linux kernel layer)。Android底層核心是一個基于Linux 2.6.23內核開發的獨立操作系統。主要是加了一個名為Goldfish的虛擬CPU 以及Android運行所需的特定驅動代碼。該層用來提供系統的底層服務,包括安全機制、內存管理、進程管理、網絡堆棧及一系列的驅動模塊[6]。
IOIO 模塊的應用開發需要安裝以下軟件工具[4]:
◆ Eclipse IDE(Integrated Development Environment);
◆Android SDK(Software Development Kit),只能采用V6.0版本;
◆JDK(Java Development Kit);
◆下載IOIOLib庫。它為Android手機提供了豐富的接口API,例如Digital I/O、模擬輸入、PWM 輸出、Pulse輸入、串行UART、SPI、I2C總線等。
圖3為IOIO 軟件開發環境界面。

圖3 IOIO 開發環境界面
IOIO 模塊引腳0連接的是板載LED的正極,LED 負極接地,因此高電平點亮,低電平熄滅,實驗效果如圖4所示。
該演示程序核心Java代碼如下:


圖4 Android手機控制LED亮滅實驗效果


從以上LED控制實例中可以發現,基于IOIO 的IOIOLib庫,可以方便快速地構建Android手機電子互動應用系統,IOIO 具有簡單易用的優勢。
IOIO 是一個開放的人機互動平臺,為Android手機提供了豐富的I/O 接口資源,拓展了Android手機的應用領域,增強了Android手機與物理世界的信息交互能力,相信在物聯網時代會不斷涌現出大量Android移動創新應用系統,這將有利于信息物理系統的發展。
[1]SparkFun Electronics.IOIO for Android[EB/OL].[2012-09-14].https://www.sparkfun.com/products/10748.Last accessed on 20October 2012.
[2]GitHub.Supported Devices[EB/OL].[20- 10-2012].https://github.com/ytai/ioio/wiki/Supported-Devices.
[3]R Chaudhri,W Brunette,M Goel,et al.Open data kit sensors:mobile data collection with wired and wireless sensors[C]//In Proc of the 2nd ACM Symposium on Computing for Development,MIT,USA,2012:1- 10.
[4]Cheng Minlin,Kuo Chenlang,Yi Lunchu,et al.An Implementation for Connecting Android Powered Device to External World[C]//The 2nd International Conference on Innovations in Bio-inspired Computing and Applications(BICA 2011),Shenzhen,Guangdong,2011:303- 325.
[5]耿東久,索岳,陳渝,等.基于Android手機的遠程訪問和控制系統[J].計算機應用,2011,31(2):559- 561.
[6]楊豐盛.Android應用開發揭秘[M].北京:機械工業出版社,2010.