基于Android平台的传感器研究
信工081 (10083385)唐嘉顺
摘要:Android 是一个面向应用程序开发的富平台,它拥有许多具有吸引力的用户界面元素和数据管理功能。Android 还提供了一组丰富的接口选项。传感器作为Android系统中十分重要的一环有其不可忽视的重要性。在本文中,了解Android的各种传感器的作用和原理,从而全方位的了解Android,对开发Android有更多感性和理性上的认识。 关键词:Android平台,传感器
1 研究背景
Android及传感器
互联网巨头Goole公司于2007年11月5日推出了全新的嵌入式软件平台——Android,该平台由操作系统、中间件、用户界面以及应用软件组成,是一个真正开放的移动应用开发平台。
2007年11月初,Goole与其他33家手机厂商、软硬件供应商、手机芯片供应商、移动运营商联合组成了开放手机联盟(Open Handset Alliance),发布了名为Android的手机软件平台,并宣布该平台完全开放。同时G哦哦了希望Android平台成为一套标准化、开放式的移动嵌入式软件平台。
Android优于其他嵌入式软件平台的一个方面就是方便的支持多种传感器,可以感应包括手机姿态、加速度、磁场、光强、温度、压力等多种物理量的变化。传感器应用也是目前比较热门的技术,在Android平台下开发基于传感器的应用也比较方便,只需要在程序注册相应的传感器即可。
由于Android系统具有开发性、平等性、无界性以及方便性等优点,所以很快就被业界所接受。从2008年初开始,越来越多的开发人员投身到Android应用开发当中。
而Android系统的一大亮点就是传感器的使用,利用传感器可以开发出很多新奇有趣的应用程序。例如计步器、水平仪,甚至在很多游戏中都可以使用传感器来操作游戏。传感器的种类有很多种,其中包括加速度传感器、姿态传感器、磁场传感器、温度传感器以及光传感器等。
Android采用了软件层叠的架构.包括以Linux为核心的底层、以函数库和虚拟机为主的中间层以及以应用为主的上层。底层和中间层主要由C或C++开发,上层应用主要由Java编写。随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。
2 文献综述
2.1 Android传感器的介绍
1.加速度传感器
加速度传感器又叫G—sensor,返回x、y、z三轴的加速度数值。该数值包含地心引力的影响,单位是m/s^2。
将手机平放在桌面上,x轴默认为0,y轴默认为0,z轴默认9.81 将手机朝下放在桌面上,z轴为-9.81
将手机向左倾斜,x轴为正值。将手机向右倾斜,x轴为负值。将手机向上倾斜,y轴为负值。将手机向下倾斜,y轴为正值。
加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK、的7X系列,ST的LIS3X系列等。这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。
2.磁力传感器
磁力传感器简称为M-sensor,返回x、y、z三轴的环境磁场数据。该数值的单位是微特斯拉(micro-Tesla),用uT表示。单位也可以是高斯(Gauss),1Tesla=10000Gauss。硬件上一般没有的磁力传感器,磁力数据由电子罗盘传感器提供(E-compass)。电子罗盘传感器同时提供下文的方向传感器数据。
3.方向传感器
方向传感器简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。为了得到精确的角度数据,E-compass需要获取G-sensor的数据,经过计算生产O-sensor数据,否则只能获取水平方向的角度。方向传感器提供三个数据,分别为azimuth、pitch和roll。azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。0°=北,90°=东,180°=南,270°=西。pitch:x轴和水平面的夹角,范围为-180°至180°。当z轴向y轴转动时,角度为正值。roll:y轴和水平面的夹角,由于历史原因,范围为-90°至90°。当x轴向z轴移动时,角度为正值。
4.陀螺仪传感器
陀螺仪传感器叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。角加速度的单位是radians/second。根据Nexus S手机实测:水平逆时针旋转,Z轴为正。水平逆时针旋转,z轴为负。向左旋转,y轴为负。向右旋转,y轴为正。向上旋转,x轴为负。向下旋转,x轴为正。
ST的L3G系列的陀螺仪传感器比较流行,iphone4和google的nexus s中使用该种传感器。
5.光线感应传感器
光线感应传感器检测实时的光线强度,光强单位是lux,其物理意义是照射到单位面积上的光通量。光线感应传感器主要用于Android系统的LCD自动亮度功能。可以根据采样到的光强数值实时调整LCD的亮度。
6.压力传感器
压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。 7. 温度传感器
温度传感器返回当前的温度。 8.接近传感器
接近传感器检测物体与手机的距离,单位是厘米。一些接近传感器只能返回远和近两个状态,因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。接近传感器可用于接听电话时自动关闭LCD屏幕以节省电量。一些
芯片集成了接近传感器和光线传感器两者功能。
下面三个传感器为Android新推出的传感器类型 9.重力传感器
重力传感器简称GV-sensor,输出重力数据。在地球上,重力数值为9.8,单位是m/s^2。坐标系统与加速度传感器相同。当设备复位时,重力传感器的输出与加速度传感器相同。
10.线性加速度传感器
线性加速度传感器简称LA-sensor。线性加速度传感器是加速度传感器减去重力影响获取的数据。单位是m/s^2,坐标系统与加速度传感器相同。加速度传感器、重力传感器和线性加速度传感器的计算公式如下:加速度 = 重力 + 线性加速度
11.旋转矢量传感器
旋转矢量传感器简称RV-sensor。旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。RV-sensor输出三个数据:
x*sin(theta/2) y*sin(theta/2) z*sin(theta/2)
sin(theta/2)是RV的数量级。RV的方向与轴旋转的方向相同。RV的三个数值,与cos(theta/2)组成一个四元组。RV的数据没有单位,使用的坐标系与加速度相同。
2.2 传感器仿真平台Eclipse已经开发语言C\\java
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其
本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工
具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
2.3 开发步骤:
1.获取传感器服务:sm=(SensorManager)get System Service
(Sensor_Service)
2.获取指定类型的传感器sm.get Default Sensor(int.type);
3.一般在Activity的on Resume()方法中使用Sensor Manger的
register listener()为指定的传感器注册即可。
sm.register Listener(listener,s1,Sensor Manager.
SENSOR_DELAY_GAME);//最后一个参数为监听频率。
在Listener中的SensorEvent对象的values方法返回float[],包含不同
传感器返回的数据值,对于不同的传感器,返回值的个数是不一样的。
3 技术路线
3.1课题分析 3.1.1 研究背景
Android以及其传感器在近几年的发展中已经成为一个研究的热点,这方面已有一定的研究成果和文献可供参考。
3.1.2 主要研究内容
在本次毕业设计中,通过网络以及各种实践经历对Android的各种传感器有清晰的认识和理解吗,并且通过在对传感器的了解中获得对整个Android系统更深更全面的认识,从而对自己的能力进行锻炼和完善。
3.2.研究内容安排
3.2.1 Android传感器建模认识
通过对Android开发水平仪的仔细分析和认识,对Android的开发平台之一——Eclipe进行全面理解和认识,从而了解Android传感器的开发过程以及平台。包括开发前怎么准备,开发环境的搭建,以及开发所需要的语言知识。
3.2.2 深入了解Android
通过上阶段的分析,对Android应该整体有一个比较完整的认识,此时应该通过实验来加深理解,以传感器入手,对Android整体进行分析和把握,并且尽量把自己的一些想法归于实践
3.2.3 其他
在毕设进行过程中,可能会对以上的某个或某些部分进行一定的拓展与进一步的分析研究。并根据实际情况,适当调整论文的内容安排与分布。
4 进度安排
整个毕业设计阶段的日程安排如表4.1所示
表4.1毕业设计日程安排
阶段 第一阶段 第二阶段 日期 2012.01~2012.02 2012.02~2012.03 内容 理解课题任务,查阅资料 进行课题设计,达到基本要求 第三阶段 第四阶段 2012.03~2012.05 2012.05~2012.06 综合调试,实现任务目标 撰写论文 说明:以上是大致时间安排,具体进度可能按实际情况进行调整。
5 参考文献
[1] 康凤举. 现代仿真技术与应用[M] . 北京: 国防工业出版 社, 2003.
[2] 龚卓蓉. Vega 程序设计[M] . 北京: 国防工业出版社, 2002.
[3] 王乘, 周均清, 李利军. Creator 可视化仿真建模技术 [M] . 武汉: 华中科技大学出版社, 2005.
[4] 孟晓梅, 刘文庆. Multigen Creator 教程[M] . 北京: 国防 工业出版社, 2005. [5]Mirats Tur Josep M.,Pfeiffer Carlos F.Mobile robot design in education.IEEE Robotics and Automation Magazine,2006,13(1):69—75.
[6]徐玉,韩波,李平.基于AVR的舵机控制器设计.工 业控制计算机,2004(11):38—40.
[7]Dautenhahn,Kerstin.Methodology and themes of hu· man—robot interaction:A growing research field.In· ternational Journal of Advanced Robotic Systems,2007, 4(1):103—108.
[8]韩大鹏,韦庆.机器人控制器的一种模块化设计方 法.微计算机信息(测控自动445),2005(5):3—4.
[9]马潮,詹前卫,耿德根.ATmega8原理机及应用手册. 第5版,北京:清华大学出版社,2003:7—8.
[10]胡林.高精度舵机控制器的研制[硕士学位论文]. 西安:西北工业大学。2006.
[11]周鹏,张小刚,王志勇.分时操作系统在单片机编程 中的实现.塔里木农垦大学学报,2004(1):25—28.
[12] Kim Jung—Hoon,Kim Jung—Yup,Oh Jun—Ho.Adjustment of home posture of biped humanoid robot using
sensory feedback contr01.Journal of Intelligent and Robotic Systems:Theory and Applications,2008,5 1(4): 421—438.
[13]王宏杰,丁国清,颜国正,林良明.机器人与计算机之 间的通信编程.计算机