单片机
返回首页

用动作识别控制GUI输入的研究及其实现

2021-07-02 来源:eefocus

简介:本文提出一种新颖的用手的动作来控制GUI输入接口的思路和具体实现技术。在将CLinux和Microwindows移植到基于ARM的嵌入式系统中后,利用加速度传感器ADXL105达到了用手的动作对GUI菜单进行控制的目的,从而实现了更自然的人机交互输入。


引言

嵌入式系统在消费类电子产品中的应用发展迅速,已经渗透到生活的方方面面,包括手机、个人数字助理(PDA)等。围绕各种消费类电子产品的嵌入式应用技术也不断引起人们的关注。其中,除PC机中成熟的GUI(图形用户界面)在嵌入式系统中得到广泛应用外,一些新的用户界面也初露端倪。


计算机用户界面是指计算机与其操作者之间的人机交互接口。以GUI为基础的人机交互方式的出现,大大降低了计算机使用的门槛,促进了计算机的普及和应用。随着计算机技术,特别是嵌入式系统的飞速发展,人们对用户界面又有更高要求,希望能够出现更直观自然的用户界面。使用语音、自然语言、行为姿态、动作等更简便而高效的输入方式一直是用户界面所追求的目标,为此本文作了实验性的基础研究,并在ARM嵌入式系统上实现了基于人手动作的图形界面菜单控制。


图1 系统结构框图


图2 ADXL105与LM339的硬件原理图


用动作控制GUI的工作原理

目前一些利用动作进行识别控制的方法都是基于传统的图像识别方法,通过摄像头拍摄人体的行为姿态或动作,对拍摄的图像进行分析处理,利用相应的识别算法进行识别控制,从而达到利用动作控制GUI的目的。而本文介绍的是另一种基于人体行为姿态或动作的直接识别技术,其中最基本和最简单的就是基于人体的肢体动作,特别是人手动作的识别方法。本文设计了利用加速度传感器来识别人手动作的输入方式。


用人手动作控制GUI是指利用加速度传感器判断手腕上下翻动的方向,从而控制GUI中菜单的上下翻动,实现手动控制菜单。当手腕静止时,此时加速度是0 g,输出值为加速度为0 g时的输出电压;当手腕向上翻动90°时,加速度认为是1 g;而向下翻动90°时,加速度就为-1 g。利用加速度传感器测量手腕在上下翻动时加速度的数值变化,就可对手腕翻动的方向做出判断,实现用手腕动作控制菜单的功能。


本文将介绍利用加速度传感器ADXL105,在以基于ARM7TDMI内核的S3C44B0X为处理器的嵌入式系统中,通过手腕动作对菜单进行识别控制的实现。


在ARM嵌入式系统中的实现

系统结构

本研究采用S3C44B0X作为主控芯片,在开发板上移植了CLinux和Microwindows,利用ADXL105加速度传感器实现了用手腕动作控制菜单的功能。该系统的系统结构框图如图1所示。


ARM微处理器S3C44B0X

随着嵌入式产品对高处理速度、网络通信、实时多任务、超低功耗等需求的增长,高端嵌入式处理器已经得到了普遍认可和广泛应用。目前比较流行的嵌入式微处理器包括ARM、MIPS、Power PC、68K等系列。其中ARM微处理器由于体积小、功耗低、高性能、低成本等特点,得到了广泛应用。本文采用的S3C44B0X是三星推出的基于ARM7TDMI内核,为手持设备和一般应用提供高性价比的16/32位微处理器。


加速度传感器ADXL105

用于测量加速度和倾斜角度位置的传感器采用ADI公司的集成单轴加速度芯片ADXL105。这是一种利用微电子机械(MEMS)加工技术开发的高性能、高准确度的变间隙差动式结构的差容式力平衡加速度传感器。它具有结构简单、动态响应好、高带宽、能实现无接触式测量、灵敏度好、分辨率高和0g偏差,以及温度漂移较低的特点。


系统软件移植

CLinux是目前广泛应用的一种面向控制的嵌入式操作系统,它符合GNU/GPL公约,完全开放源代码。CLinux针对嵌入式应用的特点,对Linux 2.0/Linux 2.4内核进行了重新修改和编译,包含常用的API,内核小于512 KB,且保留了原来Linux操作系统的高稳定性、网络功能和对各种文件系统的支持。它专门针对没有内存管理单元(MMU)的CPU而设计,并为此专门做了许多小型化的工作。


Microwindows是一个开放源码的图形用户接口,其目标是在嵌入式Linux平台上提供与普通个人电脑类似的GUI。它可提供与X_Windows类似的功能,但占用的内存资源只有100K~600KB左右。本系统中已经成功地将C/OS和Microwindows移植到了开发板上。由于篇幅所限,这里就不作详细论述。


实现方案

对于本应用的具体实现可以采用两种方法,下面就这两种实现方案作分别介绍。


利用LM339电压比较器

由于ADXL105是单轴加速度传感器,输出为模拟量,因此可以通过采集ADXL105的输出值与LM339电压比较器做比较,从而对方向进行判断。ADXL105与LM339连接的硬件原理图如图2所示。


ADXL105在0 g时的理论输出值为2.5 V(当VDD = 5 V),本应用采用的比例因子为250 mV/g,即当加速度传感器在-1~+1g变化时,输出电压的变化范围为2.5 V ± 0.25 V,即2.25 ~2.75V。为了判断手腕上下翻动的方向,假定当手腕向上翻动45°时,即判断为向上翻动,同理当向下翻动45°时,即判断为向下翻动。通过将加速度传感器的输出电压值与电压比较器的阈值进行比较,即可判断翻动的方向。设加速度传感器水平放置时电压输出值为V0,倾角为时的电压输出值为V,则:

V = 250 mV/g × sin × 1 g+ V0

因此,当 = +45°时,V = 250 mV/g × sin × 1 g + V0 = 2.68 V;当 =-45°时,V = 250mV/g × sin  × 1g + V0 = 1.54V。也就是说,当V>2.68 V时,即认为向上翻动;当V< 1.54 V时,即认为向下翻动。由此,可以设定电压比较器的阈值,将电压比较器的输出接至S3C44B0X的引脚,通过轮询或者中断的方法,对比较的结果进行处理,从而在GUI上实现菜单的上下滚动选择功能。


利用S3C44B0X的ADC

S3C44B0X具有8路模拟信号输入的10位逐次逼近型的ADC,它由模拟输入多路复用、自动调零比较器、时钟发生器、10位逐次逼近寄存器(SAR)构成。利用S3C44B0X的ADC对ADXL105的输出值进行A/D转换,然后根据转换后的数字量就可确定手动翻转的角度和方向。


S3C44B0X中与ADC相关的寄存器包括A/D转换控制寄存器(ADCCON)、A/D转换预分频寄存器和A/D转换数据寄存器。通过ADCCON 对A/D转换和通道选择进行控制。


AD转换的程序如下:

{

……

rADCCON =0x01;//启动A/D转换

while (rADCCON&0x01);//检查A/D是否已启动

while (!(rADCCON&0x40));//检查FLAG,等待直到转换结束

tem = (0x3ff&rADCDAT); //读取转换值10位

……

}


A/D转换的目的与利用LM339电压比较器的目的是一样的,都是为了判断手腕翻动方向。如上所述,当手腕向上翻动一定角度时,即认为向上翻动;当手腕向下翻动一定角度时,即认为向下翻动。通过判断A/D转换后的数字量,即可判断手腕翻动的方向,从而实现更精确的手动控制菜单的功能。


结语

本研究在基于ARM的嵌入式系统中,移植了μCLinux和Microwindows,利用加速度传感器ADXL105实现了用手腕动作对GUI中的菜单进行控制的功能。该项课题的研究和实现,提出一种用户界面输入接口的新思路、新方法,改变了人们传统的输入方式,为今后人机交互接口的发展探索出一条新的途径。

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 光控音效发生器电路

  • 非常简单的150W功放电路图

  • 分享一个电网倾角计电路

  • 电谐波图形均衡器示意图

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章