历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2020年10月12日 | 单片机+FDC2214手势识别装置设计

发布者:快乐航程 来源: 51hei关键字:单片机  FDC2214  手势识别装置 手机看文章 扫描二维码
随时随地手机看文章

随着时代的发展与科学技术的广泛应用,现代化科技化生活理念也越来越越多的被人们所接受,高科技为人们带来了很多方便,利用科技手段解决生活生产中的实际问题也就成了当今科技开发者们的共同话题。


本次设计实现手势识别装置,通过人手接近传感端引起电容的变化来判决手势代表含义。该项目基于FDC2214芯片以及KEIL5开发平台,利用18μH电感、22PF电容构成LC谐振电路,设计开发一套手势识别装置,该手势识别装置可实现的模式有:训练和判决。判决模式分别对划拳游戏、猜拳游戏的准确判决;训练模式下根据检测员在有限次的训练后能有效的在判决模式下指出相应手势。该项目灵活的运用电容检测传感器和 LC 谐振电路对频率的控制,为智能化的识别系统提供了全新的设计理念。


第一章:系统方案


1.1 系统总体构成

本次手势识别装置设计主要由IAP15W4K58S4最小系统板、FDC2214模块、OLED显示屏、测试所需极板组成系统总体构成实物图如图1-1


0.png

图1-1 系统总体构成实物图

1.2 系统总体实现方案

手势识别装置可实现两种模式:判决模式和训练模式。判决模式下分为划拳游戏和猜拳游戏极,划拳游戏根据极板检测到不同的手势,然后由电容检测传感器和LC谐振电路产生相应的频率值,根据频率值计算出各个手势对应的电容值,最后在OLED显示屏上显示相应的比划“1”,“2”,“3”,“4”,“5”,同理在猜拳游戏下,根据不同的电容幅值判定出“石头”,“剪刀”,“布”三种结果。训练模式同样分为划拳训练和猜拳训练两种测试,在任意一种模式下进行不大于三次的训练后,切换到判决模式对刚才训练的结果进行判定,此上为本次设计总体设计方案。

1.3 方案理论分析与计算


根据电容和频率的有着密切的曲线关系,在LC谐振电路中当在谐振点之前

电容回随着频率的增加而减少,在谐振点之后电容回随着频率的增加而增加,根

           Z=(ESR+jwL-j/wC)                   (1-1)

据公式(1-1)计算各个手势所对应的容抗,相应的一些干扰是不能避免的由电容计算公式 C=εS/4πkd 得出电容不只是受外界磁场的干扰,而且受极板的面积、直径、极板间的电阻、电感同时受引线中的电阻等等一系列不可避免的干扰,在此我们忽略这些干扰利用公式(1-2),因为利用FDC2214四个通道同时进行测值,可以减少误差达到目标预期效果,进行的计算实现判决、训练和输赢模式。

                            F=1/C                          (1-2)                              

第二章:系统硬件设计

2.1 总体硬件框图

设计硬件主要由测试者在测试版上测试不同手势,经FDC2214模块检测传送给主控芯片IAP15W4K58S4单片机,最后通信给OLED显示结果,以此重复测试,框图如2-1

图2-1 总体框图

2.2 硬件设计  

手势识别系统主要采用 IAP15W4K58S4 单片机为主控芯片,其原理图如图2-2、PCB图如图2-3



图2-2 原理图



图2-3 PCB图

2.3 电容检测模块硬件设计

FDC2214 是基于 LC谐振电路原理的一个电容检测传感器。其基本原理如图2-4 所示,在芯片每个检测通道的输入端连接一个电感和电容,组成 LC电路, 被测电容传感端与 LC 电路相连接,将产生一个振荡频率,根据该频率值可计算出被测电容值。


图2-4 FDC2214模块电路图

2.4  单片机模块硬件设计

方案一:AT89S52单片机。AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。但是架构太简单,片上外设少,不适合本次使用。

方案二:STM32单片机。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。STM32单片机程序都是模块化的,接口相对简单些,有一定的不足,比如串口中断标志位缺陷。

方案三:IAP15W4K58S4单片机(图2-5)。IAP15W4K58S4系列基于专为要求高性能、高速A/D转换、低成本、低功耗、片内有高达4KB的RAM数据存储空间、采用了增强型8051内核,比传统的8051速度快5~12倍。IAP15W4K58S4单片机程序都是模块化的,几乎包含了数据采集和控制中所需的所有单元模块,适合本次设计所需。

总结:综合比较上述几种方案,发现IAP15W4K58S4的性能最符合我们的题目控制要求,并且我们对IAP15W4K58S4单片机使用的经验,故决定采用方案三。

图2-5 IAP15W4K58S4单片机

  •    系统软件设计


3.1 软件总体设计


本次设计从大的角度观看分为两种模式:①判决模式、②训练模式;在电路接通后初始化成功,开始模式选择,对模式进行判决,假如选择一模式,进行判决模式,随机进入判决模式下的子模式:划拳和猜拳模式,在猜拳模式下判决“石头”、“剪刀”、“布”三种情况判决,在划拳模式下进行“1”、“2”、“3”、“4”、“5”五种情况判决,以上是选择模式一的环节;接下来选择模式二对系统进行训练,在训练模式下对其进行猜拳训练和划拳训练,对于猜拳训练不超过三次训练后进入判决模式下的猜拳验证,同理在划拳训练下对其进行不超过三次的训练,后回到模式一的划拳判别。以上就是本次手势识别装置总流程,具体流程图如图3-1

图3-1 流程图

3.2 电容检测模块软件设计

利用 FDC2214 的工作原理可实现手势接近和识别的功能,当人手接近该导体传感平面时,传感端的电容发生了变化,这就会导致 LC电路振荡频率的变化,从而反映出手势接近,以及手势的判定。如图3-2FDC2214核心程序


         

图3-2  FDC2214模块核心程序

3.3 单片机模块软件设计

IAP15W4K58S4单片机包含中央处理器、程序存储器、数据存储器、定时器I/O口、高速A/D转换、看门狗、超高速通信口1、2,1组高速同步串行口片内高精度R/C时钟和高可靠复位,拥有数据采集和控制中所需模块,在本次设计中运用此单片机再好不过。            

第四章:测试方案与测试结果

4.1测试方案

本次设计共实现四种功能猜拳判决、划拳判决、猜拳训练、划拳训练,在训练模式下对其进行不大于三次的手势训练,后跳入判决模式,进行对训练结果的检测。

对模式输出结果的判决,我们运用了 FDC2214 芯片四个通道,根据每种手势面积大小的不同,在 OLED 显示屏上将显示出面积换算后的值,进行多次实验测试(取不同大小的手掌和握拳方式)后取最大值、最小值的平均值,然后对每个通道取得的数值进行汇总,此时所得到一定的区间范围,这个范围代表一个手势的数值,测试时运用这个范围值对照测试员在 FDC2214 芯片四通道下输出的结果值来判断手势,由此可以准确测出测试人所展现的手势。

4.2 测试结果

4.2.1 题目一的系统测试结果

装置选择模式一工作在判决模式下,能对实验人员进行猜拳判决,给出不同的手势“石头”、“剪刀”和“布”检测出相应的频率值,计算出对应的电容范围对其进行准确的判别,对此每一次判决时间不超过 1 秒。测试结果如表4-1

表4-1 测试结果表

判决模式

猜拳游戏



测试项目

数据

时间(s)


通道1

通道2

通道3

通道4


石头

0~1

0~1

8~12

0~1

< 1

剪刀

1~3

1~3

8~12

0~1

< 1

4~6

4~6

9~13

1~3

< 1


4.2.2 题目二的系统测试结果

在题目一的测试结束后,需要将电路复位,重新选择装置模式一工作在判决模式下,对实验人员进行划拳判决,划拳包括“1”、“2”、“3”、“4”和“5”五种手势,每一次判决时间不超过1秒。测试结果如表4-2

表4-2 测试结果表

判决模式

划拳模式




测试项目

电容值

时间(s)


通道1

通道2

通道3

通道4


1

1~2

0~1

8~12

0~1

< 1

2

3~5

0~1

7~12

0~1

< 1

3

3~5

2~4

8~12

0~1

< 1

4

3~5

5~6

7~10

0~1

< 1

5

4~6

4~6

8~12

0~1

< 1






4.2.3 题目三的系统测试结果

经过模式一的测试,接下来装置选择模式二对其进行训练模式,在训练模式下首先选择猜拳训练,对任意测试者进行猜拳的手势训练,每种动作训练次数不大于 3 次,总的训练时间不大于 1 分钟;然后切换工作模式到模式一判决模式的猜拳游戏,对被训练的人员进行猜拳判决,要求每一次判决的时间不大于 1 秒。测试结果如表4-3

表4-3 测试结果表


训练项目

猜拳训练( <= 3次 )




测试项目

电容值

时间(s)

测试次数

石头

8~12

< 1

2

剪刀

3~12

< 1

2

9~13

< 1

2


4.2.4 题目四的系统测试结果


装置继续工作在模式二训练模式下,对任意测试者进行划拳的手势训练,每种动作训练次数同样不大于 3 次,总的训练时间不大于 2分钟;然后切换工作模式到模式一判决模式的划拳游戏,对被训练的人员进行划拳判决,要求每一次判决的时间不大于 1 秒。测试结果如表4-4

表4-4 测试结果表

训练项目

划拳游戏( <= 3次 )



测试项目

电容值

时间(s)

测试次数


1

2~12

< 1

3


2

7~12

< 1

3


3

4~12

< 1

3


4

3~10

< 1

3


5

9~13

< 1

3


4.2.5 输赢模式

在实现赛方指定要求功能后,我们外扩了一个输赢模式,在系统随机生成的一种手势与测试者的手势进行比较,比较结果有平局、赢、输三种结果。如表4-5


表4-5测试结果表

随机手势

测试者手势

石头

剪刀

石头

平局

剪刀

平局

平局




第五章:设计总结

在学校里我们学习到的知识和简单的动手实践,要转化成为社会的生产力还需要一个平台。全国大学生电子设计竞赛给我们提供了一个培养创新、协作和钻研精神的平台,是大学生展现自己、积累经验的舞台。            

培训到竞赛是一个漫长的过程,期间心态很重要,会遇到很多问题,比如:做训练时不懂的知识,硬件、软件调不出来,队员之间的矛盾,外界压力等,都需要我们去克服。队员多交流!交流不仅能促进队员们的学习,还能及时发现问题处理问题,利用一切可以提高自己能力的资源。
  对我们而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这次电子设计大赛必将成为人生旅途上一个非常美好的回忆!

手势识别FDC2214的单片机源程序:

#ifndef __stc15f2k60s2_H__

#define __stc15f2k60s2_H__

#endif

#ifndef uint8

#define uint8    unsigned char

#endif

#ifndef uint16

#define uint16   unsigned int

#endif

#include

#include

#include             

#include

#include

sbit SCL=P1^3;                           

sbit SDA=P1^4;                           

float xdata temp1,temp2,temp3,temp4,aemp1,aemp2,aemp3,aemp4;

              unsigned char xdata buf1[2]="00";

              unsigned char xdata buf2[2]="00";

              unsigned char xdata buf3[2]="00";

              unsigned char xdata  buf4[2]="00";

uint8 dis[6];            

void Delay5us(void)

{

              _nop_();_nop_();_nop_();_nop_();

              _nop_();_nop_();_nop_();_nop_();

              _nop_();_nop_();_nop_();_nop_();

              _nop_();_nop_();_nop_();_nop_();

              _nop_();_nop_();_nop_();_nop_();

              _nop_();_nop_();_nop_();_nop_();

}

void delay_ms(unsigned int ms)

{                        

              unsigned int a;

              while(ms)

              {

                            a=1800;

                            while(a--);

                            ms--;

              }

              return;

}

void lcd_printf(uint8 *s,int temp_data)

{

              if(temp_data<0)

              {

                            temp_data=-temp_data;

                            *s='-';

              }

              else *s=' ';

              *++s =temp_data/10+0x30;

              temp_data=temp_data%10;     

              *++s =temp_data+0x30;              

}

void I2C_Start()

{

    SDA = 1;                  

    SCL = 1;                  

    Delay5us();              

    SDA = 0;                  

    Delay5us();               

    SCL = 0;                  

}

void I2C_Stop()

{

    SDA = 0;              

              SCL = 0;

              Delay5us();

    SCL = 1;                  

    Delay5us();               

    SDA = 1;                  

    //Delay5us();               

}

void I2C_SendACK(bit ack)

{

    SDA = ack;                 

    SCL = 1;                 

    Delay5us();               

    SCL = 0;                  

    Delay5us();              

}

bit I2C_RecvACK()

{

    SCL = 1;                  

    Delay5us();               

    CY = SDA;                  

    SCL = 0;                 

    Delay5us();               

    return CY;

}

void I2C_SendByte(uint8 dat)

{

    uint8 i;

[1] [2]
关键字:单片机  FDC2214  手势识别装置 引用地址:单片机+FDC2214手势识别装置设计

上一篇:51单片机+hx711电子秤
下一篇:单片机四组按键控制LED的不同状态

推荐阅读

在欧洲的市场,主导者是法国车和德国车,法国的汽车工业主要以标志和雷诺为主,由于雷诺跟着日产一直在做纯电动汽车。在巴黎车展上,标志的插电式混合动力亮相,准备要在欧洲市场弄出点动静来。 法国的新能源汽车市场,由于政策的原因,也是以纯电动为主的。法国对每辆售出的电动汽车提供6000欧元的补贴,对于插电式混合动力汽车提供每车1000欧元的补贴,...
下面就是我学习ARM的第一阶段的记录,这段时间的学习基本上是使用Proteus配合KEIL做简单的实验(最后有实验的目录以及下载地址)。通过该阶段的学习,算是对ARM的基本结构有了了解。该阶段主要学习资料是《基于PROTEUS的ARM虚拟开发技术》,以及另外一本ARM体系结构的书籍,感觉这类书都差不多。学习ARM前需要的基础前辈学习ARM的经验! (我是在嵌入式开...
今天,小米宣布推出UWB技术——一种具备空间定位的新一代连接技术,可以赋予手机和智能设备空间感知能力,犹如「室内GPS」。手机指向智能设备,控制卡片就能自动弹出,直接就能操控。UWB全称Ultra Wide Band,也就是“超宽带通信”。小米UWB技术区别于现存的窄带宽通信系统,拥有500MHz超大带宽来传输信息,将定位精度缩减至厘米级别,这一技术也曾应用...
冷媛 南方电网能源发展研究院   10月12日上午,国家发展改革委召开专题会议并印发《关于进一步深化燃煤发电上网电价市场化改革的通知》(发改价格〔2021〕1439号)(以下简称《通知》),全面放开煤电发电上网电价和推动全部工商业用户进入市场。自2020年冬季以来,我国部分省份陆续出现了不同程度的电力供应紧张问题;今年二、三季度,受电力需求...

史海拾趣

问答坊 | AI 解惑

[原创]我的DSP之路-关于中段向量的一些心得与问题

原文作者:chenxkj  文章来源于:DSP交流网 中断向量表的编写     .ref    _bad_trap    ; 这个标号外部没有定义,为什么还用.ref,而不是用..global?         .ref&nb ...…

查看全部问答∨

Polar SI9000_V7_1

Polar SI9000_V7_1 [ 本帖最后由 dreamerjun 于 2009-12-31 22:45 编辑 ]…

查看全部问答∨

讨人喜欢的28个原则

1.长相不令人讨厌,如果长得不好,就让自己有才气;如果才气也没有,那就总是微笑。 2.气质是关键。如果时尚学不好,宁愿纯朴。 3.与人握手时,可多握一会儿。真诚是宝。 4.不必什么都用“我”做主语。 5.不要向朋友借钱。 6.不要“逼” ...…

查看全部问答∨

DSP板子炸机体验

我在今天的周报上提到了我炸机经验的缺乏,没想到下午就立即体验了一把。 公司的产品是基于DSP的电机伺服系统,我目前接触的是一款将DSP控制模块、电源模块和电力电子模块放在一块板子上的产品。刚进公司不久,还没有炸机的体验,倒是听老员工提到 ...…

查看全部问答∨

我调试的TI 给出的 DSPBIOS 例程

TI给出的DSP BIOS例程里面有一个 mbxtest 程序,大概是教一下邮箱的用法,该程序有三个写任务和一个读任务,,优先级相同。彼此靠MBX来激发。我新建了一个工程,除了cpu工作时钟和swwsr的设置不同外,以下全部相同,可是在我的实验箱上的编译连接以 ...…

查看全部问答∨

S3C6410的SD卡问题,不能从SD卡启动???

请教shuiyan专家,以及各位同行前辈高手: 最近在调三星的6410处理器,遇到一个非常怪异的问题,一个星期了仍无一个完整的结果 我们先后打了两次板,第一次算是个开发板吧,只为验证功能; 第二次打的是生产板。 两个板的SD卡电路完全相同,641 ...…

查看全部问答∨

c#引用TCPMP

最近在用TCPMP生成一个dll,通过c#去做UI,音频文件播放是可以实现的,但在视频窗口不知道怎么样去弄,有这方面的高手请多指点,谢谢!zhunan_1981@163.com qq:37412973…

查看全部问答∨

请教 怎么对地址总线的某一位赋值???[

我的硬件是PXA270 通过16位数据总线连接到64MBYTE的FLASH P33,地址总线是26位 p33是由两块32M的flash组成的,在程序中不能同时访问上下两块FLASH的地址 而是需要有一个地址总线,即最高位的A25作为内部片选,选择当前访问的是BOTTOM 还是top flas ...…

查看全部问答∨

关于NandFlash驱动的问题

驱动三星的flash,型号是K5E1G13ACA。 为什么我读数据的时候读出来的数据是错位的呢?比如,我把0xFF号页面全部写0x11,然后读出来,结果是(我是把读的结果保存到一个unsigned int的数组里面的): 0x30303030 0x30303030 .... 0x30303030 0x11 ...…

查看全部问答∨

13号比赛怎么准备啊,大家讨论下呗

本帖最后由 paulhyde 于 2014-9-15 03:53 编辑 什么都不让带,最小系统板会不会就是瑞萨的啊?  …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved