久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13384|回復: 2
打印 上一主題 下一主題
收起左側

單片機+FDC2214手勢識別裝置設計論文 電賽資料

[復制鏈接]
跳轉到指定樓層
樓主
FDC2214手勢識別裝置

摘要


隨著時代的發展與科學技術的廣泛應用,現代化科技化生活理念也越來越越多的被人們所接受,高科技為人們帶來了很多方便,利用科技手段解決生活生產中的實際問題也就成了當今科技開發者們的共同話題。


本次設計實現手勢識別裝置,通過人手接近傳感端引起電容的變化來判決手勢代表含義。該項目基于FDC2214芯片以及KEIL5開發平臺,利用18μH電感、22PF電容構成LC諧振電路,設計開發一套手勢識別裝置,該手勢識別裝置可實現的模式有:訓練和判決。判決模式分別對劃拳游戲、猜拳游戲的準確判決;訓練模式下根據檢測員在有限次的訓練后能有效的在判決模式下指出相應手勢。該項目靈活的運用電容檢測傳感器和 LC 諧振電路對頻率的控制,為智能化的識別系統提供了全新的設計理念。



目錄

第一章 系統方案3
11 系統總體構成3
12 系統總體實現方案3
13 方案理論分析與計算4

第二章 系統硬件設計5
21 系統總體硬件結構5
22 系統總體硬件設計5
   23 電容檢測模塊硬件設計6
   24 單片機模塊硬件設計7

第三章 系統軟件設計8
31 系統總體軟件設計8
32 電容檢測模塊軟件設計9
33 單片機模塊軟件設計9

第四章 測試方案與測試結果10
41 測試方案10
42 測試結果10
421 題目一的系統測試結果10
422 題目二的系統測試結果11
423 題目三的系統測試結果12
424 題目四的系統測試結果12
425 新增輸贏模式測試結果13
第五章 總結14參考文獻15
附錄 手勢識別主程序16   

第一章:系統方案


1.1 系統總體構成

本次手勢識別裝置設計主要由IAP15W4K58S4最小系統板、FDC2214模塊、OLED顯示屏、測試所需極板組成系統總體構成實物圖如圖1-1


圖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的單片機源程序:

  1. #ifndef __stc15f2k60s2_H__
  2. #define __stc15f2k60s2_H__
  3. #endif
  4. #ifndef uint8
  5. #define uint8    unsigned char
  6. #endif
  7. #ifndef uint16
  8. #define uint16   unsigned int
  9. #endif
  10. #include <stc15f2k60s2.h>
  11. #include <string.h>
  12. #include <intrins.h>            
  13. #include <math.h>
  14. #include <stdio.h>
  15. sbit SCL=P1^3;                           
  16. sbit SDA=P1^4;                           
  17. float xdata temp1,temp2,temp3,temp4,aemp1,aemp2,aemp3,aemp4;
  18.               unsigned char xdata buf1[2]="00";
  19.               unsigned char xdata buf2[2]="00";
  20.               unsigned char xdata buf3[2]="00";
  21.               unsigned char xdata  buf4[2]="00";
  22. uint8 dis[6];            
  23. void Delay5us(void)
  24. {
  25.               _nop_();_nop_();_nop_();_nop_();
  26.               _nop_();_nop_();_nop_();_nop_();
  27.               _nop_();_nop_();_nop_();_nop_();
  28.               _nop_();_nop_();_nop_();_nop_();
  29.               _nop_();_nop_();_nop_();_nop_();
  30.               _nop_();_nop_();_nop_();_nop_();
  31. }
  32. void delay_ms(unsigned int ms)
  33. {                        
  34.               unsigned int a;
  35.               while(ms)
  36.               {
  37.                             a=1800;
  38.                             while(a--);
  39.                             ms--;
  40.               }
  41.               return;
  42. }
  43. void lcd_printf(uint8 *s,int temp_data)
  44. {
  45.               if(temp_data<0)
  46.               {
  47.                             temp_data=-temp_data;
  48.                             *s='-';
  49.               }
  50.               else *s=' ';
  51.               *++s =temp_data/10+0x30;
  52.               temp_data=temp_data%10;     
  53.               *++s =temp_data+0x30;              
  54. }
  55. void I2C_Start()
  56. {
  57.     SDA = 1;                  
  58.     SCL = 1;                  
  59.     Delay5us();              
  60.     SDA = 0;                  
  61.     Delay5us();               
  62.     SCL = 0;                  
  63. }
  64. void I2C_Stop()
  65. {
  66.     SDA = 0;              
  67.               SCL = 0;
  68.               Delay5us();
  69.     SCL = 1;                  
  70.     Delay5us();               
  71.     SDA = 1;                  
  72.     //Delay5us();               
  73. }
  74. void I2C_SendACK(bit ack)
  75. {
  76.     SDA = ack;                 
  77.     SCL = 1;                 
  78.     Delay5us();               
  79.     SCL = 0;                  
  80.     Delay5us();              
  81. }
  82. bit I2C_RecvACK()
  83. {
  84.     SCL = 1;                  
  85.     Delay5us();               
  86.     CY = SDA;                  
  87.     SCL = 0;                 
  88.     Delay5us();               
  89.     return CY;
  90. }
  91. void I2C_SendByte(uint8 dat)
  92. {
  93.     uint8 i;
  94.     for (i=0; i<8; i++)      
  95.     {
  96.         dat <<= 1;            
  97.         SDA = CY;            
  98.         SCL = 1;               
  99.         Delay5us();           
  100.         SCL = 0;            
  101.         Delay5us();            
  102.     }
  103.       I2C_RecvACK();
  104. }
  105. uint8 I2C_RecvByte()
  106. {
  107.     uint8 i;
  108.     uint8 dat = 0;
  109.     SDA = 1;               
  110.     for (i=0; i<8; i++)      
  111.     {
  112.         dat <<= 1;
  113.         SCL = 1;               
  114.         Delay5us();         
  115.         dat |= SDA;                        
  116.         SCL = 0;               
  117.         Delay5us();            
  118.     }
  119.     return dat;
  120. }
  121. void WriteRegfdc2214(unsigned char add,unsigned int value)
  122. {
  123.     I2C_Start();
  124.     I2C_SendByte(0X54);            
  125.     I2C_SendByte(add);     
  126.     I2C_SendByte(value>>8);
  127.     I2C_SendByte(value&0xff);
  128.     I2C_Stop();              
  129.     delay_ms(10);            
  130. }
  131. unsigned int ReadRegfdc2214(unsigned char add)
  132. {
  133.     unsigned int status;
  134.     unsigned int a,b;
  135.     I2C_Start();
  136.     I2C_SendByte(0X54);               
  137.     I2C_SendByte(add);   
  138.     I2C_Start();           
  139.     I2C_SendByte(0X55);               

  140.     a=I2C_RecvByte();   
  141.               I2C_SendACK(0);
  142.     b=I2C_RecvByte();                           
  143.               I2C_SendACK(1);
  144.     status=(a<<8)+b;
  145.     I2C_Stop();

  146.     return (status);
  147. }
  148. void InitSinglefdc2214(void)
  149. {
  150.     WriteRegfdc2214(0x08,0x0000);

  151.     WriteRegfdc2214(0x10,0x0064);


  152.     WriteRegfdc2214(0x14,0x2001);
  153.     //    LDC_Write_Reg(0x0C,0x0F00);
  154.     WriteRegfdc2214(0x19,0x0000);
  155.             
  156.     WriteRegfdc2214(0x1B,0x020D);
  157.     WriteRegfdc2214(0x1E,0xF800);
  158.     WriteRegfdc2214(0x1A,0x1C81);
  159. }
  160. void InitMultifdc2214(void)
  161. {
  162.     WriteRegfdc2214(0x08,0x34FB);
  163.                 WriteRegfdc2214(0x09,0x34FB);
  164.               WriteRegfdc2214(0x0A,0x34ff);
  165.                 WriteRegfdc2214(0x0B,0x34ff);
  166.             
  167.               WriteRegfdc2214(0x10,0x001B);
  168.                 WriteRegfdc2214(0x11,0x001B);
  169.               WriteRegfdc2214(0x12,0x001B);
  170.               WriteRegfdc2214(0x13,0x001B);

  171.    WriteRegfdc2214(0x14,0x2002);
  172.    WriteRegfdc2214(0x15,0x2002);
  173.    WriteRegfdc2214(0x16,0x2002);
  174.    WriteRegfdc2214(0x17,0x2002);            
  175.             
  176.               WriteRegfdc2214(0x1E,0x7800);
  177.                 WriteRegfdc2214(0x1F,0x7800);
  178.               WriteRegfdc2214(0x20,0x7800);
  179.                 WriteRegfdc2214(0x21,0x7800);
  180.             
  181.                 WriteRegfdc2214(0x0C,0x0000);
  182.               WriteRegfdc2214(0x0D,0x0000);
  183.               WriteRegfdc2214(0x0E,0x0000);
  184. WriteRegfdc2214(0x0F,0x0000);
  185.                

  186.                 WriteRegfdc2214(0x19,0x0000);
  187.                 WriteRegfdc2214(0x1B,0xC20D);
  188.                
  189. //  LDC_Write_Reg(0x1A,0x1401);
  190.               WriteRegfdc2214(0x1A,0x1401);
  191. }
復制代碼

完整的Word格式完整論文51黑下載地址(里面有51單片機和stm32 2個實現方案):
http://www.zg4o1577.cn/bbs/dpj-130703-1.html


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:290141 發表于 2020-1-3 12:51 | 只看該作者
好東西
回復

使用道具 舉報

板凳
ID:816909 發表于 2020-9-6 15:47 | 只看該作者
想要完整代碼參考
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲另类自拍 | 国产视频一区二区三区四区五区 | 91黄在线观看| 国产精品久久国产精品99 | 日韩色在线 | 黄色香蕉视频在线观看 | 日本一二三区电影 | 亚洲一区| 日韩一级电影免费观看 | 国产精品久久欧美久久一区 | 日韩第一页 | 欧美视频在线播放 | 国产精品久久久久久久7777 | 精品中文字幕一区二区三区 | 成人精品久久日伦片大全免费 | 天天爽网站 | 国产h视频| 日韩电影免费观看中文字幕 | 亚洲永久精品国产 | 精品一区二区三区在线观看 | 成人国产综合 | 久久综合狠狠综合久久综合88 | 在线观看免费毛片 | 国产黄色免费网站 | 色播视频在线观看 | 亚洲精品日韩综合观看成人91 | 亚洲精品一区二三区不卡 | 久久激情视频 | 国产三区视频在线观看 | 精品国产成人 | 亚洲国产成人av好男人在线观看 | 求个av网址 | 国产精品视频一区二区三区 | 罗宾被扒开腿做同人网站 | 国产免费一区二区三区 | 男人阁久久 | 美女毛片| 欧美精品一区二区三区在线 | 亚洲网在线 | 一区二区不卡高清 | 亚洲精品乱码久久久久久按摩观 |