张佳进,陈立畅,唐秀英,杨晓东,唐君君
(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.