郭 霞, 谭亚丽, 申 淼
(西安交通大学 城市学院, 陕西 西安 710018)
手势是生活当中一种自然而直观的人际交流模式,而人机交互技术也随着计算机技术的发展而不断进步,因此人们对于人机交互的便捷性、实时性的要求也就越来越高[1~3]。手势识别正顺应这一发展潮流,能使人与计算机的交互变得像人与人之间的交流那样便捷、自然。因此,手势识别技术已成为人机交互领域的一个重要研究课题[4~6]。
针对基于图像的手势识别方法应用的局限性问题,本文主要采用了TI公司最新推出的低功耗、低成本、高分辨率的非接触式电容式传感器FDC2214进行手势特征提取,在STM32中实现手势的训练与识别,最终将识别效果由OLED液晶显示出来。
本文系统以STM32F103RCT6为主控单元,独立键盘为输入单元,FDCC2214电容式传感器为检测单元,OLED液晶为显示单元组成手势识别系统,其硬件框图如图1所示。
图1 总体设计硬件框图
STM32F103RCT6是ST公司专为要求高性能、低成本、低功耗嵌入式应用专门设计的ARM Cortex-M3架构内核的32位处理器产品[7],内置128 kB的FLASH,20 kB的RAM,12位A/D,4个16位定时器和3路USART通信等多种资
源,时钟频率最高可达72 MHz,是同类产品中性能最高的产品[8,9]。
手势识别是整个系统中最重要的环节,其数据的即时性和准确性直接影响着整个系统的稳定情况[10]。本文设计中手势识别检测单元为FDC2214,其工作电压为3.3 V ,传感器还具有高速的I2C接口,8 脚的软排线可以方便地接入各种系统。
1.3.1 FDC2214检测基本原理
FDC2214是基于LC谐振电路原理的电容检测传感器。其基本原理如图2所示。
图2 FDC2214检测基本原理
FDC2214前端由谐振电路驱动器组成,在芯片每个检测通道的输入端连接一个电感器和电容器,组成LC电路,被测电容传感端(图2中灰色标识部分即为被测电容)与LC电路相连接,将产生一个振荡频率fS,后面跟着一个多路复用器,其依次通过主动通道,将各通道连接到测量数字化传感器频率的核心Core。该内核使用参考频率fREF来测量传感器频率。fREF来源于内部参考时钟(振荡器)或外部提供的时钟。每个通道的数字化输出是成比例的与fS/fREF的比率,将该值设为DAXA。I2C接口用于支持设备配置和传输数字化DAXA给STM32主处理器。
根据式(1)可得出所测频率值的大小
(1)
再根据fS计算出被测电容值
(2)
式中L,C为输入端连接的电感值和电容值,在本次设计中,L=18 μH,C=33 pF。
1.3.2 手势感应原理
利用FDC2214的工作原理可实现手势接近和识别的功能,FDC2214中“Copper Sensor”部分称为“FDC2214的传感平面”,该平面为导体材质,系统采用了单面敷铜板,当人手接近敷铜板平面时,传感端的电容值发生了变化,导致LC电路振荡频率的变化,根据式(1)和式(2)即可反映出手势接近,在STM32中实现手势信号识别。
为方便操作和直观显示处理结果,系统安装有键盘和显示单元 ,可以实时进行操作和显示识别结果[11]。
本文采用功耗低,体积小的0.96in(1in=2.54 cm)的OLED 作为显示单元。OLED,即有机发光二极管(organic light emitting diode,OLED)由于同时具备自发光,不需背光源、对比度高、厚度薄、视觉广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制造较简单等优势,是当前平面显示器新型应用技术。OLED显示屏与STM32芯片通过I2C协议进行通信实现多功能显示。
人机交互中的键盘由3个按键组成,分别对应3个硬件中断(int0,int1,int2),来实现模式的选择以及切换。本文系统要求有两种游戏模式即游戏一(石头、剪刀、布)和游戏二(1,2,3,4,5),两种工作模式即判别模式和训练模式,故需要以上拉电阻器构成3个外围按键开关电路便可以实现这4种功能。原理如图3所示。
图3 键盘及外围电路原理
本文系统为手势识别装置,通过电容传感器FDC2214电容值的变化,识别指定手势。系统中含有两个游戏:猜拳(石头,剪刀,布)和划拳(1,2,3,4,5);两个模式分别为训练模式和判决模式:训练模式为对任意测试者进行猜拳和划拳的手势训练,每种动作训练次数不大于3次,总的训练时间不大于3 min;判决模式能对参赛者指定人员进行猜拳和划拳判决,要求每次判决的时间不大于1 s。
系统的程序设计主要包括主程序和中断处理程序,主程序主要完成计算和显示,中断处理程序是指定时器中断,主要完成数据的的采集和键盘的扫描及处理。 图4给出主程序流程。
图4 主程序流程
考虑到影响该电容式传感器干扰因素较多,分模块调试完毕后,再进行系统整体测试,其系统实物如图5所示。
图5 手势识别系统实物
在测试过程中需要不断实验,反复对比数据。其调试步骤如下:
1)猜拳手势的训练与识别
a.装置工作在训练模式下,对任意测试者进行猜拳(石头、剪刀、布)的手势训练,每种动作训练次数不大于3次,总的训练时间不大于2 min;
b.切换工作模式到判决模式,随机找到被训练的人员,将手势放置于测试区,对于石头、剪刀、布分别进行多次猜拳判决,每次识别的时间不大于1 s。
2)划拳手势的训练与识别
a.装置工作在训练模式下,对任意测试者进行划拳(1,2,3,4,5)的手势训练,每种动作训练次数不大于3次,总的训练时间不大于2 min;
b.切换工作模式到判决模式,随机找到被训练的人员,将手势放置于测试区,多次进行实验,对于1,2,3,4,5分别进行多次划拳判决,每次识别的时间不大于1 s。
经过多次实验检测可以十分精确地识别出被测者手势,测试结果统计如表1。
表1 手势识别率
由表1可以看出,可得出手势“1”的识别率最高,为99 %,“布”和“5”的识别率最低,为95 %,8种手势的平均识别率为96.75 %。
在识别速度方面,对每个手势识别所需要的时间大致相同,由上述对毎个手势进行的100次测试得出,每个手势的平均识别时间保持在100 ms以内,8种手势的总体平均识别时间为96.45 ms,满足设计要求。
本文提出的基于FDC2214的手势识别系统,解决了基于图像的手势识别对于环境的依赖问题,通过实验测试,在识别准确度上,各种定义手势的识别率为95 %以上,系统响应延时基本保持在0.5 s之内,基本上达到人机交互的基本要求和实验的期望结果,说明该系统可以广泛应用于人机交互的手势识别系统中。