IOIO在Android手機中的應(yīng)用與研究
摘要:IOIO是一個面向Android手機的軟硬件開發(fā)平臺,通過USB接口實現(xiàn)Android手機與外界物理設(shè)備的互動。本文介紹了IOIO的硬件特性與開發(fā)環(huán)境,給出了如何用IOIO來實現(xiàn)對LED控制的實例。實驗結(jié)果表明,采用IOIO開發(fā)Android手機具有簡單易用的特點。
關(guān)鍵詞:Android手機;USB;IOIO
引言
Android本意指“機器人”,是Google公司于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng),是當(dāng)今三大智能手機操作系統(tǒng)之一。它包括操作系統(tǒng)、用戶界面、中間件和應(yīng)用程序,擁有移動電話T作所需的全部軟件,同時,其開放性保證該平臺不存在任何阻礙移動產(chǎn)
業(yè)創(chuàng)新的專有權(quán)障礙。因此,其市場份額增長迅速,軟件生態(tài)系統(tǒng)日漸成熟,大量軟件開發(fā)人員投身到Android應(yīng)用程序開發(fā)中來。
當(dāng)前Android手機主要集成了WiFi、藍(lán)牙通信接口,它們具有傳輸速率高、通用性好等優(yōu)點。但是在普適計算、物聯(lián)網(wǎng)領(lǐng)域中,大量傳感器、控制設(shè)備往往采用傳統(tǒng)的串行通信、I/O控制等技術(shù)。目前,Android手機往往缺乏這些接口,雖然可以采用藍(lán)牙轉(zhuǎn)RS232等技術(shù)來實現(xiàn)Android手機與外部物理設(shè)備的通信與控制,但是藍(lán)牙技術(shù)有通信距離短、不可靠、功耗高等缺點。特別是在低功耗物聯(lián)網(wǎng)環(huán)境中,我們很難采用藍(lán)牙、WiFi通信技術(shù)。因此這在某種程度上制約了Android手機在以上領(lǐng)域的應(yīng)用。
IOIO是SparkFun公司出品的一款專門為Android1.5版本以上系統(tǒng)設(shè)計的通用型開源控制模塊,它給開發(fā)者提供了免費的系統(tǒng)電路圖及系統(tǒng)主板MCU的Firmware,同時也提供了豐富的Java API接口。IOIO通過USB接口與Android手機相連,高度集成了數(shù)字I/O端口、PWM、模擬輸入端口、I2C總線、SPI,以及UART控制器等功能組件,只需通過簡單、直觀的Java API驅(qū)動程序即可直接操作外部硬件I/O端口,既無需嵌入式編程,又不用外部編程器,使用方便靈活。因此,通過IOIO模塊,Android手機可以方便地整合3G通信網(wǎng)絡(luò)、藍(lán)牙通信、觸摸屏交互技術(shù)、各類傳感器與外圍物理設(shè)備相連,從而增強了手機與物理世界的信息交互能力,為Android手機的創(chuàng)新應(yīng)用打下了良好基礎(chǔ)。目前,許多國際著名品牌的Android手機和平板電腦都兼容支持IOIO模塊,例如Google、Samsung、HTC、LG、Motorola等。
1 IOIO硬件結(jié)構(gòu)
IOIO主要采用了低功耗PIC單片機作為系統(tǒng)控制器,IOIO模塊實物圖如圖1所示。IOIO硬件電路板上集成了模擬輸入、I2C總線、SPI、UART、GPIO等多個功能接口部件。主要引腳功能分類如表1所列。
2 IOIO開發(fā)環(huán)境
2.1 Android應(yīng)用程序開發(fā)簡介
Android操作系統(tǒng)自上向下分成應(yīng)用層、應(yīng)用框架層、組件庫層、虛擬機和Linux內(nèi)核層。其構(gòu)架如圖2所示。
應(yīng)用層(Application layer)。Android操作系統(tǒng)和一系列核心應(yīng)用模塊一起發(fā)布,其核心應(yīng)用模塊主要包括電話短信功能、網(wǎng)頁瀏覽器、聯(lián)系簿等。
應(yīng)用框架層(Application Framwork layer)。開發(fā)者通過使用核心應(yīng)用程序來調(diào)用Android框架提供的API組件。
組件庫層(Libraries layer)。Android包含了一套C/C++函數(shù)庫,主要包括libc、Media Framework、WebKit、OpenGLES、FreeType、SQLite等,這些功能通過Android應(yīng)用框架展現(xiàn)給開發(fā)人員。
運行時環(huán)境(Android Runtime)。Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數(shù)功能。每一個Android應(yīng)用程序都擁有一個獨立的Dalvik虛擬機實例。
Linux內(nèi)核層(Linux kernel layer)。Android底層核心是一個基于Linux 2.6.23內(nèi)核開發(fā)的獨立操作系統(tǒng)。主要是加了一個名為Gold fish的虛擬CPU以及Android運行所需的特定驅(qū)動代碼。該層用來提供系統(tǒng)的底層服務(wù),包括安全機制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧及一系列的驅(qū)動模塊。
2.2 IOIO軟件開發(fā)環(huán)境要求
IOIO模塊的應(yīng)用開發(fā)需要安裝以下軟件工具:
◆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軟件開發(fā)環(huán)境界面。
3 IOIO應(yīng)用開發(fā)實例——LED亮滅控制
IOIO模塊引腳0連接的是板載LED的正極,LED負(fù)極接地,因此高電平點亮,低電平熄滅,實驗效果如圖4所示。
該演示程序核心Java代碼如下:
從以上LED控制實例中可以發(fā)現(xiàn),基于IOIO的IOIOLib庫,可以方便快速地構(gòu)建Android手機電子互動應(yīng)用系統(tǒng),IOIO具有簡單易用的優(yōu)勢。
結(jié)語
IOIO是一個開放的人機互動平臺,為Android手機提供了豐富的I/O接口資源,拓展了Android手機的應(yīng)用領(lǐng)域,增強了Android手機與物理世界的信息交互能力,相信在物聯(lián)網(wǎng)時代會不斷涌現(xiàn)出大量Android移動創(chuàng)新應(yīng)用系統(tǒng),這將有利于信息物理系統(tǒng)的發(fā)展。