datasheet

用加速度传感器来进行手势识别器的设计

2008-07-29来源: 中电网 关键字:手势识别  WTK  导航键  单片机系统  硬盘播放器  配置寄存器  FTDI  命令按钮

  引言

  手机、MP3播放器、硬盘播放器、数码相机、PDA等设备都是通过导航键对其进行控制的。目前比较流行的导航键控制方式有四维键、摇杆,这是最常见的两种导航键,此外还有一些手机上有很新颖的导航键设计,例如:LG-KG70的滚轴键、LG-KE608的转盘设计、索爱W830的触摸式、多普达D802的飞梭滚轮等等。这里,我们用加速度传感器设计一种看不见的导航键来代替四维键的功能,这种方案更能满足消费者的好奇心,满足消费者追逐时尚的需求。

  手势识别的控制原理

  本系统利用三轴加速度的值来判定对物体运动预定义的六种姿势。首先,分别对三个轴采样,每个轴各获得50个数据;然后,分别对每个轴上的数据进行处理来判定是否发生了预定义的动作。动作定义在下面的部分说明,这里仅用Y轴来说明判定的原理。

  获得Y轴上的50个数据存放到数组y_data[N]中,将这50个数求和取平均值。若y_data[N]中数据最大值与最小值之差在一个设定的阈值之内,则认为物体在Y轴向上是没有动作的、静止的,此时更新y_init值为y_data[N]求得的平均值;否则,y_data[N]中数据最大值与最小值之差超出一个设定的阈值,则认为物体是运动的,y_init值不变,仍然为上一次静止状态时的值。

  图1和图2是Y轴分别向左、向右摇动时采样得到的加速度抽样值y_data[N]。图中红线代表上一次静止时的采样值,蓝线代表运动时的采样值。图1为向左摇动时的值,可以明显看出加速度的值较静止时有明显的变化,向着增大的方向变。

  

  

  从图1和图2中可以看出,两条黑线之间的数据很难断定是哪个动作产生的,因为两个动作都可能产生这样的值。所以,利用黑线之外的数据来判定是向右还是向左摇。因为对于这两个动作,黑线之外的数据有明显的差异,数据相差很多。对于图1这些数据大于150,图2中这些数据小于90。因此这些数据至少相差60,可以很容易地将向左、向右的两个动作区分开。

  本系统就是根据这样的原理来实现的,首先分别设定向左、向右摇时的阈值和两个计数器;然后,将新采样得到的50个值存放在y_data[N]中,将每个值与静止时的值y_init比较,如果数据超出某个阈值,则在相应的计数器上累加,直到所有50个数全部比较完毕;最后,根据计数器值的大小来判定执行了某个动作。

  同理,利用Z轴的采样值来判定向上、向下摇,利用X、Y两个轴来判定执行图片向左翻转还是向右翻转,这里略去。

  系统描述

  系统组成及功能

  系统由三个部分组成:CT-298单片机控制部分、 MM-2860加速度传感器部分、演示终端,系统框图如图3所示。

  

  CT-298单片机控制部分主要负责传感器数据的A/D变换、动作检测、与演示终端进行数据通信。MM-2860加速度传感器部分负责加速度值的测量并将其转换为电压值。演示终端负责处理从单片机传来的动作类型并执行相应的动作,同时向单片机返回进出二级菜单的指令。对于CT-298单片机系统更详细的设计将在下面的部分介绍,这里首先介绍一下本系统设计的动作姿势及代码,以及与演示系统交互的指令。

  预定义的动作

  系统设计了六种动作,他们分别是左摇、右摇、下摇、上摇、图片左转、图片右转。图4中的图形象地说明了其中的两个动作,其它的动作与此类似。

  

  

  系统还为每个动作定义了相应的动作代码,见表1。

  

  当单片机检测到某个动作时会将相应的值赋给变量type_action,之后通过SCI将type_action的值发送到演示终端。如果用户执行的动作不在这六个动作之中,则将NO_ACTION赋给type_action,表示演示终端不执行任何动作。

  系统还定义了单片机与演示终端交互的指令,用于系统在主菜单和二级菜单之间的界面切换,指令从演示系统通过SCI传给单片机,单片机接收到之后进入或退出二级菜单,见表2。

  

  这里仅定义了一个二级菜单,即图片菜单,系统还可以定义更多的二级菜单和三级菜单。此外,需要说明动作MOVE_TURN_LEFT、MOVE_TURN_RIGHT用于图片翻转,仅在图片菜单中可用,在主菜单不可用。动作下摇执行的是换下一幅图片,动作上摇执行的是退出图片菜单。

  演示终端

  本系统目标定位在便携式消费类电子产品上,因此在软件应用程序上必须选择具有广泛基础的应用平台。由于近年来J2ME在便携式终端中的应用非常广泛,因此本系统也采用了J2ME平台进行开发。通过比较,选择了J2ME的WTK开发包,它是专门针对移动无线设备而设计的开发包,并提供了一个统一的平台。在WTK的框架下开发出来的java程序可以被众多的移动设备所支持,所以能够有效解决兼容性的问题。

  在WTK下我们利用默认的一个手机样机的仿真器DefaultColorPhone进行开发,DefaultColorPhone的样子如图6。

  

  仿真器的外观和操作类似一部移动电话,但是并不代表某个特定的设备,而是提供对其所支持的API 的正确实现,每个命令按钮对应着相应的API函数。从图6中可以看到手机的导航键,我们更改了导航键的API函数,使其从鼠标单击触发的方式转换为串口动作代码控制。首先,我们编写了J2ME的串口接收程序,用于接收从单片机传来的单字节的type_action值;然后将type_action以参数的形式传给API,手机根据不同的type_action值执行不同的动作,包括菜单上下翻、进出二级子菜单、图片翻转等。手机动作与type_action的对应关系如表3。

  

  根据type_action的值,在手机界面上产生相应的动作,手机界面发送不同的变化。演示终端的具体实现在下面的内容详细介绍。

  硬件描述

  系统硬件分为两个部分:CT-298和MM-2860。

  CT-298是由MC9S08QG单片机构成、由USB总线电源供电的小型评估板。CT-298上安装有按钮开关、LED灯、蜂鸣器等作为开发的输入输出器件。同时,USB-COM转换电路采用了FTDI公司制造的FT232R,容许单片机与电脑之间通过USB接口进行串行通信。BDM用于代码的烧写及系统的调试。

  MM-2860是含有Freescale公司制造的MMA7260Q型三轴小量程加速度传感器的模块,它可以直接安装在CT-298为其设计的插口上。MM-2860的电源是由CT-298上的MC9S08QG8单片机的PTB5端口来控制的,当PTB5端口为L时电源接通。此外,g-SELECT开关是选择传感器灵敏度的开关,使用时将MM-2860插入到CT-298的接口中即可。本系统采用加速度传感器的灵敏度选择为800 mV/g。

  软件描述

  单片机主程序的流程如图7所示。

  

  系统上电后,首先要对单片机的硬件系统进行初始化、配置寄存器等操作,之后才可以进行数据采集,将加速度的值进行A/D转换,得到量化的值。图片菜单是二级菜单,如果没有接到演示系统传给单片机进入二级菜单的指令,则单片机一直在主程序运行,不断地采集A/D值、进行动作判定,并向演示系统发送type_action的指令。演示系统可根据接收到的type_action的类型采取相应的动作。如果单片机接收到进入二级菜单的命令,则进入图片菜单,同时也执行类似于主程序的动作判定程序,并不断更新A/D采样值,发送type_action,直到接收到退出二级菜单指令才退出。下面详细介绍一下各个功能模块的具体设置。

  单片机硬件初始化

  单片机系统主要的工作有:将加速度传感器的模拟数据进行A/D转换、向演示系统发送type_action的动作类型、接收演示系统发来的进出二级菜单的指令、设置采样值,除此之外还需要对系统时钟、外部设备(灯,buzzer)进行配置。根据单片机的主要工作内容选择单片机内部的功能设备,包括A/D转换器、模定时器、串行通信模块(SCI)、内部时钟源模块。

  数据采集

  系统设置的采样频率为200Hz,每秒钟分别对X、Y、Z 三轴采样200个数据,因此定义了三个大小为N的数组对数据进行缓存,他们是:

  char x_data[N];

  char y_data[N];

  char z_data[N];

  这里N取50,每0.25s存取一次,1s钟可以存取4次,保证采样率为200。函数void acce_meas(void) 负责将采样的数据分别放到这三个数组中,下面是程序的具体实现:

  for(j=0;j

  {

  for(i=0;i<3;i++)

  {

  if(i==0)

  {

  adc_go(0); //选择A/D信道0

  x_data[j]= ADC_val_L; //X轴

  }

  else if(i==1 )

  {

  adc_go(6); //选择A/D信道6

  y_data[j]= ADC_val_L; //Y轴

  }

  else

  {

  adc_go(7); //选择A/D信道7

  z_data[j]= ADC_val_L; //Z轴

  }

  }

  delay(); //延时函数,用来设定采样率

  }

  动作检测

  动作检测主要是用获得的三组数据值x_data[N]、y_data[N]、z_data[N]来判定当前动作是系统设定动作中的哪一个,如果符合,则发送这个动作对应的预定义值给演示终端,否则发送NO_ACTION。type_dectction()用来实现动作检测,其中type_move为函数内部变量,用于记录动作代码。type_dectction()进行动作检测的流程如图8所示。

  

  演示终端

  J2ME平台开发环境配置

  进行J2ME的开发需要从网络上下载免费的开发环境。运行Eclipse后进行最后的配置:Window->preferences->J2ME->Platform Component然后右键选择 Wireless Toolkil,再选择弹出菜单中的 Add Wireless Toolkil,选择刚刚安装的J2ME Toolkit的安装路径: C:\WTK22,这样基本配置就完成了。

  J2ME的WTK开发包是专门针对移动无线设备而设计的开发包,并提供了一个统一的平台。在WTK的框架下开发出来的java程序可以被众多的移动设备所支持,能够有效解决兼容性的问题。

  软件应用程序

  程序分为主进程、串口监视模块和定制化用户界面三大部分,分别基于J2ME不同的类库派生而成,三部分之间通过消息机制相互联系,共同构成整个程序的运行周期。具体每个模块所实现的功能参考下节内容。

  软件应用程序的组织结构

  本软件应用程序在WTK的手机仿真器下进行设计,分为Base和display两个package。在Base Package中包含MainRoutine.java和RS232Port.java两个java文件;在display Package中的文件较多,主要实现了UI和基本的key响应。下面介绍软件部分的实现方法:

  ·MainRoutine类

  MainRoutine为程序的入口类,它整合了程序中的所有的对象。MainRoutine派生于MIDlet类,重载实现了MIDlet中的startApp、pauseApp、destroyApp等方法,并且在constructor中加入了exitCommand命令,从而实现了手机的关机功能。

  可以看出MainRoutine实现了程序的入口和退出,并同时标志了程序的基本框架,给具体的功能应用打下了坚实的基础。

  ·vCanvas类

  vCanvas继承了Canvas类,并增加了externalMsg方法。之所以在其中增加externalMsg方法,是因为其超类Canvas不能动态地响应key,而我们对Canvas的要求是能够通过对串口导入的数据(或按键)得到的keyCode做出相应的动作,比如图片的翻转、文本的滚动等等。于是,我们可以通过vCanvas派生出一系列的子类,实现我们的具体要求,为将来的开发提供了方便。

  ·DisplayItem类

  DisplayItem是基础类,提供了通用的string数据组合。该类的构造方法中需要输入shortText、longText和extra三个string参数,这样就保证了每个DisplayItem都可以返回三个不同长度的文本信息,在不同的场合使用。其中shortText用于UI中的标题显示,longText为Item的主体内容,extra为Item的附加信息。 DisplayItem类在本系统中会被例化来描述菜单和子功能的内容,是应用广泛的一个基础类。

  ·ImageCanvas类

  ImageCanvas同样继承于基础类vCanvas,它的主要功能是实现了对图片的浏览及旋转、镜像等基本操作。

  考虑到目前使用手机浏览图片、拍摄图片的多方向性,如果能够通过加速度传感器自动校正图片的方向,使它自动满足我们想要的方向,那么我们就免除了很多不必要的麻烦。于是我们对图片的浏览功能模块增加了向左或者向右旋转90°的功能。这样用户就会惊喜地发现无论他的手机怎样摆放,显示的图片将永远保持与地面垂直。

  ·ListCanvas类

  ListCanvas提供了主画面的显示能力,并将用户操作派生到内部聚合成员上面去。具体功能的Item将包含在ListCanvas之中,每一个Item拥有显示在屏幕上的ShortItem,显示在detail screen中的LongText,还有不被显示的ExtraText,当然其信息我们也是可以得到的。在ListCanvas中,我们可以用“右键”显示Item的详细信息,也可以用SELECT键来标记每个Item。

  ·ItemListCanvas类:

  ItemListCanvas同样继承了vCanvas类,实现了多条目文本浏览的功能,构造方法的输入依次为Display、Displayable、Font、Title和ItemVector。将多条String构造为一个Vector传递给ItemListCanvas后,该类能够提供一个多条目文本实现的用户界面。本系统的“关于本系统”子功能就是通过实例化该类得到的。

  结论

  本系统采用Freescale的单片机MC9S08QG和加速度传感器MMA7260Q实现了便携式手持设备的手势控制,并采用了开放的J2ME平台实现了终端应用程序。系统完整,实用性强,成本低廉,在满足用户基本操作需要的同时,增加了移动设备操作的趣味性和灵活性。同时,加速度传感器MMA7260Q较小的体积和独特的节电模式更使其在移动设备的应用中有着极大的优势。可以预见,在未来的手持设备系统中会大量采用类似的手势识别功能,因此具有广阔的市场应用前景。

 

关键字:手势识别  WTK  导航键  单片机系统  硬盘播放器  配置寄存器  FTDI  命令按钮

编辑:孙树宾 引用地址:http://www.eeworld.com.cn/MEMS/2008/0729/article_201.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于三轴加速度传感器的跌倒探测仪的研制
下一篇:Wii、iPhone产品带动MEMS设备发展潜力

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

智能电动车门:手势识别 智能开关

随着汽车感应控制技术的发展,驾乘人员将享受到更加切实的科技体验。麦格纳智能电动车门(Smartaccess)提供全系统电动门解决方案,使驾乘人员获得独一无二的车辆进入体验。通过多种可定制化的人机交互操作系统,并辅以非障碍物探测技术可以让驾乘人员轻松安全地操控。革新乘客出入车辆的体验智能电动车门智能电动车门的竞争优势:●在业界首次应用Haptronik 运动控制算法●轻松的多种人机交互方案●手势识别 / 电容型触摸面板 / 钥匙 / 电话 / 电子把手等●障碍物探测增强安全特性接触式和非接触式●可针对品牌进行差异化及定制外观设计●可定制化系统功能虚拟门检及门持系统,破冰系统,自吸合系统,等等.●基于智能门锁 SMARTLATCH
发表于 2018-11-29
智能电动车门:手势识别 智能开关

2024年市场规模将超130亿美元 手势识别成汽车人机交互新蓝海

轻轻地,驾驶者只需随意挥一挥手,就能接听或者挂断电话;只需缓缓移动手指,就能调整车载娱乐信息系统里音乐的音量大小,而不用直视和触碰操控界面,驾驶者可全程将注意力放在眼前的道路上。科幻电影中用手势隔空操控屏幕的画面,如今正逐渐成为现实,而且在汽车上大有用武之地。近日,全球市场洞察(GMI)咨询机构发布的一份研究报告称,预计到2024年,全球汽车手势识别市场规模将超过130亿美元。近年来,继语音识别之后,手势识别成为又一大热的人机交互方式,在不少领域得到广泛应用。尤其是在智能汽车领域,汽车制造商越来越希望通过在汽车上实施功能性安全技术,以减少驾驶者的分神行为。手势是人手或者手和手臂结合产生的多种动作,通常分为静态手势和动态手势。简单
发表于 2018-10-14
2024年市场规模将超130亿美元 手势识别成汽车人机交互新蓝海

Fact.MR:2017-2022年全球汽车手势识别市场报告

据外媒报道,随着越来越多的传感器技术被整合到汽车产品中,未来数年内,汽车手势识别市场将依然受到热捧。对自动驾驶及电动汽车而言,汽车手势识别系统是有利可图的应用。据Fact.MR公司报告预计,到2022年底,全球汽车手势识别市场的市值将超过42亿美元,2017-2022年间,其年复合增长率将呈指数式增长(exponential CAGR)。触摸式手势识别技术需求将得到拉动2017-2022年间,触摸式汽车手势识别类产品产品的全球收入将增长27亿美元。2017年,非触摸式产品的市场份额比18%高一点。据估计,非触摸式手势识别产品的市场份额要低于触摸式手势识别系统。多媒体、车载信息娱乐系统及导航——汽车手势识别的三大核心应用该报告强调
发表于 2018-09-05

手势识别将成为智能汽车一大新趋势

2022年全球手势识别与传感器市场规模预计将达 321.6 亿美元,而汽车应用的手势识别技术对成本、功耗、面积等诸多因素的考量更加严格,对结构光、飞行时间以及成像硬件方案及算法需要全面的权衡。  手势识别是近年来大热的人机交互方式,在诸多领域得到广泛应用。尤其是在智能汽车领域,汽车制造商越来越希望通过在汽车上实施功能性安全技术,来减少驾驶员的分神行为。虽然车载语音交互技术、产品的成熟度较高,但对持续性命令的执行如调节音量、进度等较难量化的命令,语音识别仍存在一定的局限性。而手势识别可通过不同的手势实现车内接听电话、调节音量、切歌、控制导航等功能的操作,实现包括主副驾驶、后排乘客交互的多种场景。手势识别+语音交互
发表于 2018-08-23
手势识别将成为智能汽车一大新趋势

elmos推出基于HALIOS® 技术的车载手势识别解决方案

德国elmos公司日前宣布推出IC E909.21(控制器)和E909.22(调节器),用于汽车应用中的光学接近和手势识别解决方案。该控制器和调节器的设计适用于汽车大屏幕中控显示器,两者的组合为用户提供了完美协调的解决方案,可与图形用户界面(GUI)进行精确人机互动。      这两款产品可以检测到如接近、滑动、空气滑动™(手势挥动)、放大等动作。对基于简单的主动式红外光电技术的物体识别和运动分析进行实时处理。在汽车应用中 elmos是手势识别的先驱,同时在该应用中elmos处于世界第一的位置。原因之一是该产品在市场上具有最佳的抵抗外部环境光能力和自动系统校准功能
发表于 2018-08-04
elmos推出基于HALIOS® 技术的车载手势识别解决方案

全新车载手势识别解决方案发布,增强人机互动效果

2018年7月23日讯,德国elmos公司日前宣布推出IC E909.21(控制器)和E909.22(调节器),用于汽车应用中的光学接近和手势识别解决方案。该控制器和调节器的设计适用于汽车大屏幕中控显示器,两者的组合为用户提供了完美协调的解决方案,可与图形用户界面(GUI)进行精确人机互动。 这两款产品可以检测到如接近、滑动、空气滑动™(手势挥动)、放大等动作。对基于简单的主动式红外光电技术的物体识别和运动分析进行实时处理。在汽车应用中Elmos是手势识别的先驱,同时在该应用中Elmos处于世界第一的位置。原因之一是该产品在市场上具有最佳的抵抗外部环境光能力和自动系统校准功能。此外,为了简化系统和传感器设计,两款产品
发表于 2018-07-23
全新车载手势识别解决方案发布,增强人机互动效果

小广播

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">