
手势识别装置
简介
基于平行板电容器的基本原理,通过FDC2214对铜板电容值进行读取。与阈值比较判断当前手势,并由TFTLCD显示结果,由语音模块公告识别手势。并增加人机对战系统,任意人员训练后可以与系统进行猜拳游戏。
简介:基于平行板电容器的基本原理,通过FDC2214对铜板电容值进行读取。与阈值比较判断当前手势,并由TFTLCD显示结果,由语音模块公告识别手势。并增加人机对战系统,任意人员训练后可以与系统进行猜拳游戏。开源协议
:Public Domain
描述
一、题目要求
题目:手势识别装置
1.1、任务
基于 TI 公司传感芯片FDC2214设计制作一个手势识别装置,实现对猜拳游戏和划拳游戏的判决。该装置也可以直接使用FDC2214EVM板,要求所使用的FDC2214 芯片或者 EVM 板不得超过2块。装置具有训练和判决两种工作模式。在判决模式下实验装置能对指定人员进行猜拳游戏和划拳游戏的判决。这里猜拳游戏的判决是指对手势比划“石头”、“剪刀”和“布”的判定,划拳游戏的判定是指手势比划“1”、“2”、“3”、“4” 和“5”的判定。在训练模式下能对任意人员进行猜拳游戏和划拳游戏的手势训练,经过有限次训练后,能进行正确的猜拳游戏和划拳游戏的手势判决。
1.2、要求
(1)装置工作在判决模式下,能对参赛者指定人员进行猜拳判决,给出手势“石头”、“剪刀”和“布”的准确判决,要求每一次判决的时间不大于1秒。(18分)
(2)装置工作在判决模式下,能对参赛者指定人员进行划拳判决,给出手势“1”、“2”、“3”、“4”和“5”的准确判决,要求每一次判决的时间不大于1秒。(28分)
(3)装置工作在训练模式下,对任意测试者进行猜拳的手势训练,每种动作训练次数不大于3次,总的训练时间不大于1分钟;然后切换工作模式到判决模式,对被训练的人员进行猜拳判决,要求每一次判决的时间不大于1秒。(21分)
(4)装置工作在训练模式下,对任意测试者进行划拳的手势训练,每种动作训练次数不大于3次,总的训练时间不大于2分钟;然后切换工作模式到判决模式,对被训练的人员进行划拳判决,要求每一次判决的时间不大于1秒。 (29分)
(5)其他。(4分)
(6)设计报告。(20分)
表1 设计方案要求
1.3、说明
(1)题目中“指定人员”是参赛队学生自己指定的人员,“任意测试者”是由评审老师临时选择的人员。
(2)FDC2214 是基于 LC 谐振电路原理的一个电容检测传感器。其基本原理如图1所示,在芯片每个检测通道的输入端连接一个电感和电容,组成LC电路,被测电容传感端(图1中灰色标识部分即为被测电容)与LC电路相连接,将产生一个振荡频率,根据该频率值可计算出被测电容值。
图1 FDC2214传感器基本原理
利用 FDC2214 的工作原理可实现手势接近和识别的功能,如图2所示,黄色部分称为“FDC2214的传感平面”,该平面为导体材质,当人手接近该导体传感平面时,传感端的电容发生了变化,这就会导致LC电路振荡频率的变化,从而反映出手势接近,以及手势的判定。
基于 FDC2214 实现手势接近和判决的实验中存在如下的特征:传感平面的面积越大、手势与传感平面的距离越小,感应的频率变化越大,系统会越灵 敏,但同时也可能引入越多的噪声。所以在设计该传感平面时,要根据实际情况
综合考虑。进一步设计文档可参考如下连接:http://www.ti.com/lit/an/snoa940a/snoa940a.pdf
图2 手势感应示意
为了便于进行训练和判决测试,建议学生作品可以对测试区进行指定,如图 3所示。在测试或者训练时要求测试者的手势紧贴在测试板上,建议测试者手势 与作品的FDC2214传感器距离不小于1厘米。
图3 手势识别装置的测试示意图
(3)猜拳游戏和划拳游戏手势的具体定义应符合大众认知。对任意测试者 进行手势训练时,测试者要遵循学生的指导来进行训练;训练完成后,要在学生 的指导下进行手势判决测试。
二、题目分析
本手势识别装置的设计与实现,主要基于平行板电容器的基本原理,以STM32单片机为核心,通过FDC2214电容传感芯片对铜板电容值进行数据读取。数据由单片机进行分析处理,通过初设阈值判断当前手势,并由TFTLCD屏幕显示装置菜单与分析结果,由JQ8400-FN语音播放模块公告识别手势。同时留有训练接口,能对任意人员进行手势训练,经过训练后,能进行正确的进行手势判决,以实现对不同人、不同手型的手势识别。在此基础上,增加了人机对战系统,任意人员训练后可以与系统进行猜拳游戏。本装置训练所需时间与次数和判决所需时间均符合设计要求,且具有操作简单,精确度高等优点。
以STM32单片机为核心,通过FDC2214电容传感芯片对铜板电容值进行数据读取。数据由单片机进行分析处理,通过TFTLCD进行显示。系统的总体结构框架如图4所示。
图4 系统总体结构框架图
2.1、处理器选择
方案一:选用AT89C52作为系统的核心部件,实现控制与处理功能。AT89C52是8位高性能单片机,但是,其在I2C等复杂通信方式的实现上编程较为复杂,同时在应对大数据量的采集和处理中显得力所不及,不适合作为该题主控芯片。
方案二:采用STM32F103单片机作为微处理器,相对于其他芯片,性价比高,此单片机采用主流Cortex-M3内核,工作频率高达72MHz,处理速度快,有丰富的外设,合理的功耗,合理的价格成本。另外此单片机集成程度高,通过库函数开发软件实现也比较容易。
方案三:选用FPGA作为装置控制器。FPGA能够快速采集数据并进行信号处理,能够准确的进行实时控制,但其制作成本高,制作耗时长。
综合考虑了传感器通信方式、运算处理速度、制作成本等诸多因素后,决定采用STM32F103单片机作为微处理器模块的控制核心,充分利用该单片机的资源优势,选择方案二。
2.2、电源模块选择
方案一:选用航模电池,可反复充电。此方法的优点是手势识别装置无需与外界电源接线,安装较为方便,且续航时间长。但电压会有波动,不能长时间稳定工作。
方案二:采用AC-DC电源适配器,输出5V电压给单片机供电。虽然系统安装较复杂,还需外部接线,但功率较大,器件集成度高,体积小,电压稳定。
方案三:采用QGP3200-3S动力型可充电锂电池,无需外部接线,安装方便无需降压模块。
综合以上三种方案,从经济、方便、稳定性以及展示度考虑,选择方案三。
2.3、显示模块选择
方案一:采用OLED屏。OLED具有体积小、控制简单的优点,但是本系统开发了菜单界面,以及图像显示。需要显示的内容较多,OLED的显示屏过小,不能满足使用要求。
方案二:采用TFTLCD屏幕。TFTLCD可以做到高速度、高亮度、高对比度显示屏幕信息。其使用特性好:低压应用,低驱动电压,固体化使用安全性和可靠性高;功耗低,它的能耗仅为CRT显示器的1/10。该显示器美观,功能齐全,能够满足本系统的显示要求。
综合以上两种方案,考虑到美观以及作品展示度,选择方案二。
2.4、电容板连接方式
方案一:采用4块铜极板独立连接,各极板分别引出导线,连接4个通道。
方案二:采用一块铜板,由单个通道进行信号读取。优点是可以不对手的按放姿势进行限制,但存在过于类似数据,可能造成误判
方案三:选用手型铜板,小拇指位置铜板以及无名指位置铜板独立连接通道。由于小拇指接触面积较小,可以更加精准的识别手势。
综合考虑以上三种方案,考虑到稳定性以及精确度,选择方案二。
三、原理图设计说明
3.1、单片机核心
微处理器模块采用STM32F103作为主控制器,其使用Corte-M3ARM内核,主频高达72MHz,多达8个定时器,接口丰富,多达112个快速增强型I/O口,拥有9个通信通道,2个I2C接口,3个USART接口,2个SPI接口,处理速度快,有丰富的外设,合理的功耗,合理的价格成本。另外此单片机集成程度高,通过库函数开发软件实现也比较容易。其核心原理图如图5所示。
图5 STM32F103核心原理图
3.2、显示电路原理
TFT是指薄膜晶体管,即每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比度显示屏幕信息,是目前最好的LCD彩色显示设备之一,其电路原理图如图6所示:
图6 TFTLCD电路原理图
3.3、FDC2214电容传感器原理
FDC2214是面向电容式传感解决方案的抗噪声和EMI、高分辨率、高速、多通道电容数字转换器。该器件采用基于窄带的创新型架构,可对噪声和干扰进行高度抑制,同时在高速条件下提供高分辨率。并且支持宽激励频率范围,可为系统设计带来灵活性。由FDC2214构成的电容传感器原理图如图7所示。
图7 FDC2214传感器基本原理
3.4、JQ8400-FN语音芯片原理
JQ8400-FN语音芯片支持MP3WAV硬件解码,支持FAT文件系统,24位DAC输出内部采用DSP硬件解码,非PWM输出,动态范围支持90dB,信比85dB,有多种控制模式、两线串口模式、一线串口控制。支持SPIFLASH模拟成U盘,直接像操作U盘一样更新SPIFLASH里的语音。由JQ8400-FN芯片构成的语音播放模块原理图如图8所示。
图8 JQ8400-FN语音播放基本原理
四、PCB设计说明
PCB布局原则:
1、按照电路的流程安排各个功能电路单元的位置,使布局便于信号流通,并使信号尽可能保持一致的方向。
2、以每个功能单元的核心元器件为中心,围绕来进行布局。元器件均匀、整体、紧凑的排列在PCB上,尽量减少和缩短各元器件之间的引线和连接。
3、在保证电气性能的前提下,元件放置在栅格上且相互平行或垂直排列,以求整齐、美观,在一般情况下不允许元件重叠;元件排列紧凑,元件在整个版面上分布均匀、疏密一致。
4、布线设计规则为:线宽20mil,间距6mil,孔外径24mil,孔内径12mil。
电路原理图如图9所示,FDC2214及周围电路PCB如图10、11所示:
图9 FDC2214电路原理图
图10 FDC2214周围电路PCB(正面)
图11 FDC2214周围电路PCB(反面)
五、软件说明
系统在每次启动时,在初始化模块中都会读取受系统受所处环境影响后的电容,并通过该值重设判断阈值,以排除环境对系统的影响,提高系统抗干扰能力。本系统的程序总体设计如图12所示。
图12 程序设计总体流程
代码块:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "exti.h"
#include "bsp.h"
#include "jq8400.h"
#define TRAIN_NUM 5
#define AVG_NUM 20
#define TEST_NUM TRAIN_NUM
u8 con=1;//工作状态标志 1菜单、2判决、3训练、4训练后判决、5对决
u8 work=0;//确认按键标志
u8 change=0;//训练选择切换
u8 change2=0;//判决选择切换
u8 change3=0;//识别选择切换
int data0[5]; //识别阈值
u8 flag1=0;//猜拳手势
u8 flag2=0;//划拳手势
u8 value=0;//电脑出拳手势
void judge(float a,float b,float c,float d,float e);
float temp0=0;
void Sample_Fun(float a);
void huanjing(void);
int workmode=0;
void huaquan(void);
int A0=0,A1=0,A2=0,A3=0;
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
USART2_Config();
uart_init(115200);
KEY_Init();
EXTIX_Init();
LCD_Init();
IIC_Init();
InitMultiFDC2214();
voiceplus();
huanjing();
while(1)
{
huaquan(); //FDC2214检测识别
LCD_DISPLAY(); //TFTLCD显示
}
}
void huaquan()
{
A0= FDC2X14ReadCH(1)/1000; //FDC2214电容读取
A1= FDC2X14ReadCH(2)/1000;
A2= FDC2X14ReadCH(3)/1000;
A3= FDC2X14ReadCH(4)/1000;
if(A2>=data0[1]&&A2<=data0[0])
{
flag1=1;
if(A1<=data0[2])
{
flag1=2;
if(A0<=data0[3])
flag1=3;
}
else if(A0<=data0[3])
flag1=2;
}
else if(A2<=data0[1])
{
flag1=2;
if(A1<=data0[2])
{
flag1=3;
if(A0<=data0[3])
flag1=4;
}
else if(A0<=data0[3])
flag1=3;
if(A3<=data0[4])
flag1=5;
}
else if(A1<=data0[2])
{
flag1=1;
if(A0<=data0[3])
flag1=2;
}
else if(A0<=data0[3])
{
flag1=1;
}
else if(A3<=data0[4])
;
else
{
flag1=0;
sound=1;
}
if(A2>=data0[1]&&A2<=data0[0])
{
if(A1<=data0[2])
{
flag2=1;
}
else if(A0<=data0[3])
flag2=1;
}
else if(A2<=data0[1])
{
flag2=1;
if(A1<=data0[2])
{
flag2=3;
if(A0<=data0[3])
flag2=3;
}
else if(A0<=data0[3])
flag2=3;
}
else if(A3<=data0[4])
{
flag2=2;
}
else
{
flag2=0;
sound=1;
}
}
void huanjing()
{
A0= FDC2X14ReadCH(1)/1000;
A1= FDC2X14ReadCH(2)/1000;
A2= FDC2X14ReadCH(3)/1000;
A3= FDC2X14ReadCH(4)/1000;
data0[0]=A2-1500;
data0[1]=A2-6500;
data0[2]=A1-1500;
data0[3]=A0-1500;
data0[4]=A3-5000;
}
实物展示说明
图13 系统分块示意图
如图13所示,本装置一共可分为4个部分:
-
-
-
-
-
-
- 区域1为铜板部分,它与FDC2214电容传感器模块的四个通道直接相连,为了便于采集和处理数据,我们将铜板切割成了六块精确采集手势,避免识别错误。
- 区域2为FDC2214电容传感器模块,通过IIC与STM32进行通讯,将识别到的电容值反馈到处理器,进行阈值比较等后续操作。
- 区域3为语音播报模块,控制核心通过串口向JQ8400-FN发送语音播报指令,语音提示手势状态以及猜拳模式胜负关系。
- 区域4为STM32F103单片机,作为微处理器模块的控制核心。并采用TFTLCD屏幕显示系统菜单及判别结果,增强可视化程度。
-
-
-
-
-
六、注意事项
在设计时应注意环境变化情况对电容读取值的影响,本设计在初始化模块中会读取受系统受所处环境影响后的电容,并通过该值重设判断阈值,以排除环境对系统的影响,提高系统抗干扰能力。
七、演示视频和相关代码
基于STM32和FDC2214的手势识别装置_哔哩哔哩_bilibili
https://pan.baidu.com/s/1Ds68Q_7TBd-86sYmqVSudQ?pwd=6666
设计图

BOM


评论