热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

基于SEP4O2O微处理器的动作控制MP3的设计-mysql教程

欢迎进入IT技术社区论坛,与200万技术人员互动交流进入0引言动作识别是一个很热门的话题。苹果公司继推出具有轰动效应的多点触控技术后又筹备申请自己的动作识别专利。动作的识别简单的说就是利用加速度传感器,检测在空间上的速度变化,通过算法,提取

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入 0引言 动作识别是一个很热门的话题。苹果公司继推出具有轰动效应的多点触控技术后又筹备申请自己的动作识别专利。动作的识别简单的说就是利用加速度传感器,检测在空间上的速度变化,通过算法,提取

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

  0引言

  动作识别是一个很热门的话题。苹果公司继推出具有轰动效应的多点触控技术后又筹备申请自己的动作识别专利。动作的识别简单的说就是利用加速度传感器,检测在空间上的速度变化,通过算法,提取动作。动作识别在很多方面都有应用,比如Wii、手机感应游戏、四桨飞行器等,但是目前很少甚至没有将其用在MP3控制上的。当今的电子产品的一大潮流就是用动作控制。试想一下一个没有任何触摸、机械按键的MP3,只要你前后左右的晃动就能进行所有最基本的控制操作,既灵动又时尚,这应当是一种全新的操作体验。本文将探讨如何设计这种通过动作来进行正常控制的MP3。

  1硬件平台

  1.1SEP4020嵌入式处理器

  本文所述驱动程序基于SEP4020嵌入式微处理器。SEP4020是由东南大学国家专用集成电路系统工程技术研究中心设计的一款处理器,采用0.18μm标准CMOS的工艺设计,内嵌ASIXCORE(32位RISC内核,兼容arm720T,带8kB指令数据Cache和全功能MMU)。SEP4020芯片中集成各种功能,包括:

  8/16位SRAM/NORFALSH接口,16位SDRAM接口
  硬件NANDFLASH控制器,支持NANDFLASH自启动,支持软件/硬件ECC校验
  10M/100M自适应以太网MAC,支持RMII接口
  64kByte高速片上SRAM
  USBl.1Device,全速12Mb/s
  支持I2S音频接口
  支持MMC/SD卡
  LCD控制器,支持640×480×16位TFT彩屏和STN黑白、灰度屏
  RTC,支持日历功能/WatchDog,支持后备电源
  10通道TIMER,支持捕获、外部时钟驱动和MATCHOUT
  4通道PWM,支持高速GPIO
  4通道UART,均支持红外
  2通道SSI,支持SPI和Microwire协议
  2通道SmartCard接口,兼容IS07816协议
  支持最多97个GPIO,14个外部中断
  支持链表DMA传输和外部DMA传输
  片上DPLL,支持多种功耗模式:IDLE、SLOW、NORMALSLEEP

  1.2MC9S08QG8

  本文中的动作捕捉判断部分由MC9S08QG8来控制完成。MC9S08QG8是Freescale公司的一款单片机,它的性能如下:

  8通道、10位模数转换器
  3个通讯接口:SCI、SPI、IIC
  4k或8k可重编程FLASH存储器
  内置在线仿真器(ICE)

  1.3MMA7620

  动作控制MP3中动作的感应是由MMA7620完成的。MMA7620是Freescale公司的一款三向加速度传感器,它的性能如下:

3轴加速度感应和输出,可同时测量三个坐标轴(x、y、z)的值并由三个通道输出
4种灵敏度可供选择
有休眠模式

  2动作控制MP3的设计

  2.1动作捕捉

  一个动作从开始到结束一定会有加速度的产生,所以可以通过检测伴随着动作产生的加速度的大小和方向来判断动作。要测量加速度的大小就需要一个加速度传感器,将所得到的加速度以模拟量的形式表示,然后将传感器所得到的模拟量通过一个AD转换模块转换成数字信号以方便后续计算。但是查找资料发现,如果单方面的使用一个AD变换器将从加速度传感器中得到的电压信号转换成为数字信号并要求达到期望的精度将导致成本的大幅度提高,然而现有很多的单片机中已经集成了AD转换模块,并且整个单片机的价格要低于单买单个三通道AD转换芯片。更为可观的是还可以利用单片机本身的处理功能对AD转换所得到的数字信号进行处理,预判动作。而且单片机中集成了很多的通信协议,简单而健壮。综合以上考虑,如果选用单片机代替AD转换模块就可以减轻核心板的负担和整个项目的开发难度。

  加速度传感器可以选择使用Freescale公司的MMA7620三轴加速度传感器。单片机可以选择使用Freescale公司的MC9S08QG8单片机,它集成的八通道9bitAD转换模块正好和MMA7620的三通道输出相匹配,体积也很小,适用于便携设备。

  图l是手持部分的原理图,包括单片机和传感器PTA0、PTAl、PTA2:输入:分别接三向加速度传感器的x、y、z端口输出,读取加速度传感器的x、y、z轴的模拟数据。

PTA3:输出;接三向加速度传感器的Sleep引脚用于使传感器处于休眠状态从而降低功耗和锁定,避免运动时的干扰。
PTTB0:输入;作为串口接收脚用于接收从核心板传来的命令。
PTFBl:输出;作为串口发送脚用于向核心板发送由加速度传感器所测的经过单片机处理后所得到的动作信息。
PTB6、PTB7:输出;接加速度传感器的gselect引脚从而控制加速度传感器的灵敏度。

  2.2动作判断

  利用Freescale公司的FreeMASTER软件,可以很方便地进行程序在线调试,查看程序所有全局变量,具体软件和使用方法请查询Frees-cfle管方网站。以下得到的数据为使用FreeMASTER欺件,以时间和AD转换值为坐标绘图得到。

  每次每个方向采样20个数据,由于第一个数据的可靠性比较大,所以采用每组数据的第一个数据作为比较依据。经过多次测试,当x方向的数值小于80时为右转动作,x的方向的数值大于170时为左转动作,y方向的数值小于70时为向上抬的动作,y方向的数值大于160时为向下压的动作。虽然以上数据能表示动作,但人的动作时间相对单片机处理分析速度差别还是太大。为了解决这个问题,使单片机和动作同步,可以把前两次的动作记录下来,根据前两次的动作对当前动作进行过滤:如果连续几个相同的动作,就判断为一次动作,不相同则切换。动作的切换必然带有前后动作的变化,记忆之前的动作就可以判断出有无动作切换。这样的动作识别方法比较简单且容易实现,如果要实现更为精确的识别,则需要对算法进一步优化。图2为右摇时AD转换器所得到的结果。图3为前后左右摆动数据。

[1] [2]


推荐阅读
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 线性Kalman滤波器在多自由度车辆悬架主动控制中的应用研究
    本文探讨了线性Kalman滤波器(LKF)在不同自由度(2、4、7)的车辆悬架系统中进行主动控制的应用。通过详细的仿真分析,展示了LKF在提升悬架性能方面的潜力,并总结了调参过程中的关键要点。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
author-avatar
心雨1006600
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有