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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

2018TI杯大學生電子設計競賽FDC2214手勢識別設計報告

  [復制鏈接]
跳轉到指定樓層
樓主
ID:240626 發表于 2018-8-2 11:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
拿了省賽2等獎
2018年大學生電子實驗競賽

手勢識別裝置(D題)


手勢識別裝置

摘   要


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

    本項目利用傳感芯片 FDC2214 設計制作一個手勢識別裝置, 實現對猜拳游

戲和劃拳游戲的判決, 裝置具有訓練和判決兩種工作模式。在判決模式下實驗裝置能對指定人員進行猜拳游戲和劃拳游戲的判決,主要是對手勢比劃“石頭”、

“剪刀”和“布”的判定,劃拳游戲的判定是指手勢比劃“1”、“2”、“3”、“4”和“5”的判定;而在訓練模式下能對任意人員進行猜拳游戲和劃拳游戲的手勢訓練,經過有限次訓練后,能進行正確的猜拳游戲和劃拳游戲的手勢判決。

目  錄
  • 系統方案.....................................................3
1.1 系統總體構成...................................................3
1.2 系統總體實現方案...............................................3
1.3具體實現方案...................................................3
  • 電路與程序設計...............................................5
2.1 硬件實現原理...................................................5
2.1.1 整體原理.....................................................5
2.1.2 2214芯片.....................................................6
2.1.3 15單片機.....................................................7
2.2 軟件設計流程圖.................................................8
  • 測試方法及結果...............................................8
3.1 題目一的系統測試...............................................8
3.2 題目二的系統測試...............................................8
附錄 文章組成程序................................,.................9
參考文獻..........................................................17



第一章  系統方案

1.1 系統總體構成

本實驗主要由傳感芯片 FDC2214,最小系統版,降壓模塊,OLED,銅板組成。系統總體構成如圖1-1所示。

                       

                                        

                        

圖1-1  系統總體構成圖

1.2 系統總體實現方

以銅板作為導體材質,由于DC2214 是基于 LC 諧振電路原理的一個電容檢測傳感器,所以利用 FDC2214 的工作原理可實現手勢接近和識別的功能。當人手接近該導體傳感平面時,傳感端的電容發生了變化,這就會導致 LC 電路振蕩頻率的變化,從而反映出手勢接近,以及手勢的判定。

1.3具體實現方

針對于主控芯片:可以實現數據檢測的單片機有多種,比如STM32,TI公司的MSP5229以及STC公司系列。結合數據處理情況以及芯片使用難度,我們選擇STC15F2K60S2芯片,其性能符合要求且編程簡單。

從手勢識別方面講:關于手勢動作捕捉主要是通過光學和傳感器兩種方式來實現。手勢識別推測的算法,包括模板匹配技術(二維手勢識別技術使用的)、通過統計樣本特征以及深度學習神經網絡。而常見的紅外識別解析度低,易受干擾,成本高,維護困難,而2214可以在任意環境下實現接近度感測,成本低,在波動的條件下,可以穩定的顯示預期效果。故而我們選擇使用2214芯片。

從數據通信方面來講:芯片間的通信只能使用I2C協議,可以采用有限傳輸和無線傳輸兩種方式?紤]到FDC2214芯片靈敏度極高,無線協議會產生較大干擾使結果不準確,因此采用有線傳輸的I2C協議傳輸。

最后,通過修改試驗程序進一步對實驗數據進行調試,從而達到完美的數據范圍結果,完成訓練部分。再通過最初將手的大致輪廓畫在銅板上,再將寫好的程序下載到指定位置,通過比出的手勢在對數據進一步精準化,進而完成實驗。


電路與程序設計

2.1 硬件實現原理

2.1.1 整體原理

手勢識別裝置采用15單片機做為主控制器,其整體原理圖如圖2-1所示。PCB圖如圖如圖2-2 。

圖2-1 整體原理圖

圖2-2  PCB圖

2.1.2   2214芯片

FDC2214 是基于 LC 諧振電路原理的一個電容檢測傳感器。在芯片每個檢測通道的輸入端連接一個電感和電容,組成LC電路,被測電容傳感端與 LC 電路相連接,將產生一個振蕩頻率,根據該頻率值可計算出被測電容值。



圖2-3

2.1.3  15單片機

主控采用STC15系列單片機最小系統,原理圖如3-1所示.

圖 3-1

2.2軟件設計流程圖








第三章 系統測試





    • 題目一的系統測試

裝置工作在判決模式下,能對參賽者指定人員進行猜拳判決,給出手勢“石頭”、“剪刀”和“布”的準確判決,要求每一次判決的時間不大于 1 秒。測試結果見表3-1。

試驗項目

數據范圍

完成情況

石頭

[9-12] [0-1] [0-1] [0-1]

剪刀

[7-11] [0-1] [0-2] [2-3]

[11-14] [1-2] [1-2] [5-8]

表3-1 測試結果表

3.2 題目二的系統測試

裝置工作在判決模式下,能對參賽者指定人員進行劃拳判決,給出手勢“1”、“2”、“3”、“4”和“5”的準確判決,要求每一次判決的時間不大于 1秒。測試結果見表3-2。

試驗項目

數據范圍

完成情況

1

[10-11] [0-1] [0-1] [1-2]

2

[7-9] [-1-1] [-1-1] [2-3]

3

[8-9] [0-1] [1-2] [3-4]

4

[9-11] [0-1] [1-2] [5-6]

5

[11-14] [1-2] [1-2] [6-8]

表3-2 測試結果表

附錄

該實驗所涉及的主要程序

  1. #include<FDC2214.C>

  2. #include<oled7.c>

  3.               unsigned char str1[1];

  4.                             unsigned char q[9]="0       ",k=0,w=0,l=0;

  5. float te0,te1;

  6. float xdata shitou1,shitou2,shitou3,shitou4,shitou5,shitou6,shitou7,shitou8;

  7. float xdata jian1,jian2,jian3,jian4,jian5,jian6,jian7,jian8;

  8. float xdata bu1,bu2,bu3,bu4,bu5,bu6,bu7,bu8;

  9. float xdata one1,one2,one3,one4,one5,one6,one7,one8,one9,one10,one11,one12;

  10. float xdata tw1,tw2,tw3,tw4,tw5,tw6,tw7,tw8,tw9,tw10,tw11,tw12;

  11. float xdata th1,th2,th3,th4,th5,th6,th7,th8,th9,th10,th11,th12;

  12. float xdata fo1,fo2,fo3,fo4,fo5,fo6,fo7,fo8,fo9,fo10,fo11,fo12;

  13. float xdata fi1,fi2,fi3,fi4,fi5,fi6,fi7,fi8,fi9,fi10,fi11,fi12;

  14. void dushu()

  15. {

  16.               temp1 = ReadRegfdc2214(0x00);

  17. temp2 = ReadRegfdc2214(0x02);

  18. temp3 = ReadRegfdc2214(0x04);

  19. temp4 = ReadRegfdc2214(0x06);

  20.                                           DelayMS(100);

  21.                             temp1= (aemp1-temp1);

  22.                             temp2= (aemp2-temp2);

  23.                             temp3= (aemp3-temp3);

  24.                             temp4= (aemp4-temp4);

  25. }

  26. void keyscan()

  27. {

  28.                                           if(P20==0)

  29.                             {

  30.                                           DelayMS(2);

  31.                                           if(P20==0)

  32.                                           {

  33.                                                                       k+=1;

  34.                                                         if(k>=3)

  35.                                                         {k=0;}

  36.                                                         while(P20==0);

  37.                                           }

  38.                             }

  39.                             if(k==3)

  40.                             {

  41.                                           if(P24==0)

  42.                             {

  43.                                           DelayMS(2);

  44.                                           if(P24==0)

  45.                                           {

  46.                                                                       w+=1;

  47.                                                         if(w>=4)

  48.                                                         {w=0;}

  49.                                                         while(P24==0);

  50.                                           }

  51.                             }

  52.               }

  53.                             if(P26==0)

  54.               {              DelayMS(2);

  55.                             if(P26==0)

  56.                             {l=1;}

  57.               }

  58. }

  59. void main()

  60. {

  61.                             P4M0=0X00;

  62.               P4M1=0X00;

  63.                                           P1M0=0X00;

  64.               P1M1=0X00;

  65.                                                         P5M0=0X00;

  66.               P5M1=0X00;

  67.                                                                       P2M0=0X00;

  68.               P2M1=0X00;

  69.                 LCD_CS= 0;

  70. LCD_Init();

  71.                 LCD_Fill(0xff);

  72.               DelayMS(100);

  73.   LCD_Fill(0x00);

  74.               DelayMS(100);   

  75.   LCD_CLS();

  76.                             delay_ms(500);

  77.               InitMultifdc2214();

  78.                             delay_ms(150);

  79.                 aemp1= ReadRegfdc2214(0x00);            

  80.     aemp2= ReadRegfdc2214(0x02);            

  81.                 aemp3= ReadRegfdc2214(0x04);            

  82.                 aemp4= ReadRegfdc2214(0x06);            

  83. while(1)

  84.               {

  85. dushu();

  86. lcd_printf(buf1, (int)temp1);

  87. lcd_printf(buf2, (int)temp2);

  88. lcd_printf(buf3, (int)temp3);                           

  89. lcd_printf(buf4, (int)temp4);

  90.               /*              LCD_P6x8Str(6,1,"CH1:");

  91.                             LCD_P6x8Str(40,1,buf1);

  92.                  LCD_P6x8Str(6,2,"CH2:");

  93.                 LCD_P6x8Str(40,2,buf2);

  94.                  LCD_P6x8Str(6,3,"CH3:");

  95.                 LCD_P6x8Str(40,3,buf3);

  96.                             LCD_P6x8Str(6,4,"CH4:");

  97.                 LCD_P6x8Str(40,4,buf4);*/

  98.                             delay_ms(100);

  99.                             q[0]=k+0x30;//q[2]=w+0x30;

  100.                                           keyscan();

  101.                             if(l==1)

  102.                             {LCD_Fill(0x00);

  103.                                           DelayMS(100);

  104.                             l=0;}

  105.                             if(k==0)

  106.                             {LCD_P6x8Str(6,0,"Please start!");

  107.                             LCD_P6x8Str(6,1,"CH1:");

  108.                             LCD_P6x8Str(40,1,buf1);

  109.                  LCD_P6x8Str(6,2,"CH2:");

  110.                 LCD_P6x8Str(40,2,buf2);

  111.                  LCD_P6x8Str(6,3,"CH3:");

  112.                 LCD_P6x8Str(40,3,buf3);

  113.                             LCD_P6x8Str(6,4,"CH4:");

  114.                 LCD_P6x8Str(40,4,buf4);}

  115.                             //else

  116.               /* {LCD_P6x8Str(6,1,"        ");

  117.                             LCD_P6x8Str(40,1,"        " );

  118.                  LCD_P6x8Str(6,2,"        ");

  119.                 LCD_P6x8Str(40,2,"        ");

  120.                  LCD_P6x8Str(6,3,"         ");

  121.                 LCD_P6x8Str(40,3,"        ");

  122.                             LCD_P6x8Str(6,4,"         ");

  123.                 LCD_P6x8Str(40,4,"        ");

  124.                             LCD_P6x8Str(6,0,"Type:  ");//6,4

  125.                             LCD_P6x8Str(40,0,q);//40,4

  126.     }*/

  127.               keyscan();

  128.                             if(l==1)

  129.                             {LCD_Fill(0x00);

  130.                                           DelayMS(100);

  131.                             l=0;}

  132.               if(k==1)

  133.               {            

  134.                             LCD_P14x16Ch(0,0,6);

  135.                             LCD_P14x16Ch(18,0,7);

  136.                             if((temp1)>=10&&(temp1)<=14&&(temp2)>=1&&(temp2)<=2&&(temp3)>=1&&(temp3)<=2&&(temp4)>=5&&(temp4)<=8)

  137.                             {

  138.                                           //LCD_P8x16Str(6,5,"bu      ");

  139.                                           LCD_P14x16Ch(6,5,0);

  140.                                           LCD_P14x16Ch(24,5,5);

  141.                                           LCD_P14x16Ch(24,12,5);

  142.                             }

  143.                             if((temp1)>=9&&(temp1)<=12&&(temp2)>=0&&(temp2)<=1&&(temp3)>=0&&(temp3)<=1&&(temp4)>=0&&(temp4)<=1)

  144.                             {

  145.                                           //LCD_P8x16Str(6,5,"shitou  ");

  146.                                           LCD_P14x16Ch(6,5,1);

  147.                                           LCD_P14x16Ch(25,5,2);

  148.                             }

  149.                             if((temp1)>=7&&(temp1)<=11&&(temp2)>=0&&(temp2)<=1&&(temp3)>=0&&(temp3)<=2&&(temp4)>=2&&(temp4)<=3)

  150.                             {

  151.                                           //LCD_P8x16Str(6,5,"jiandao");

  152.                                           LCD_P14x16Ch(6,5,3);

  153.                                           LCD_P14x16Ch(25,5,4);

  154.                             }

  155.                             if((temp1)>=-1&&(temp1)<=1&&(temp2)>=-1&&(temp2)<=1&&(temp3)>=-1&&(temp3)<=1&&(temp4)>=-1&&(temp4)<=1)

  156.                             {

  157.                                           LCD_P8x16Str(6,5,"          ");

  158.                             }

  159.               }

  160. //********************************************************

  161.                             keyscan();

  162.                             if(l==1)

  163.                             {LCD_Fill(0x00);

  164.                                           DelayMS(100);

  165.                             l=0;}

  166.               if(k==2)

  167.               {

  168.                             LCD_P14x16Ch(0,0,8);

  169.                             LCD_P14x16Ch(18,0,7);

  170.                             if((temp1)>=11&&(temp1)<=14&&(temp2)>=1&&(temp2)<=2&&(temp3)>=1&&(temp3)<=2&&(temp4)>=6&&(temp4)<=8)

  171.                             {

  172.                                           LCD_P8x16Str(13,6,"5");

  173.                             }

  174.                             if((temp1)>=9&&(temp1)<=11&&(temp2)>=0&&(temp2)<=1&&(temp3)>=1&&(temp3)<=2&&(temp4)>=5&&(temp4)<=6)

  175.                             {

  176.                                           LCD_P8x16Str(13,6,"4");

  177.                             }

  178.                             if((temp1)>=8&&(temp1)<=9&&(temp2)>=0&&(temp2)<=1&&(temp3)>=1&&(temp3)<=2&&(temp4)>=3&&(temp4)<=4)

  179.                             {

  180.                                           LCD_P8x16Str(13,6,"3");

  181.                             }

  182.                             if((temp1)>=7&&(temp1)<=9&&(temp2)>=-1&&(temp2)<=1&&(temp3)>=-1&&(temp3)<=1&&(temp4)>=2&&(temp4)<=3)

  183.                             {

  184.                                           LCD_P8x16Str(13,6,"2");

  185.                             }

  186.                             if((temp1)>=10&&(temp1)<=11&&(temp2)>=0&&(temp2)<=1&&(temp3)>=0&&(temp3)<=1&&(temp4)>=1&&(temp4)<=2)

  187.                             {

  188.                                           LCD_P8x16Str(13,6,"1");

  189.                             }

  190.                                           if((temp1)>=-1&&(temp1)<=1&&(temp2)>=-1&&(temp2)<=1&&(temp3)>=-1&&(temp3)<=1&&(temp4)>=-1&&(temp4)<=1)

  191.                             {

  192.                                           LCD_P8x16Str(6,5,"                          ");

  193.                             }

  194.               }


  195. }

  196.               }
復制代碼

參考文獻

[1]黃智偉,全國大學生電子設計競賽訓練教程【M】,北京:電子工業出版社,2010。

[2]王成智,鄒旭東,許赟,等.采用改進重復控制的大功率電力電子負載.中國電機工程學報,2009,29(12):1~9
[3]Madawala U K,Thrimawithana D J,Nihal K.An ICPT-supercapacitor Eletronics,2007,54(6):3287~3297
[4]戴忠達.自動控制理論基礎[M].北京:清華大學出版社,2001
[5]劉豹.現代控制理論[M].北京:機械工業出版社,1992
[6]李建林,王立喬,李彩霞,等.基于現場可編程門陣列的多路PWM波形發生器.中國電機工程學報,2005,25(10):55~59
[7]馬彧.數字電路與系統實驗教程[M].北京:北京郵電大學出版社,2008

[8]楊光祥,梁華,朱軍. STM32單片機原理與工程實踐[M].武漢:武漢理工大學出版社,2013



完整的Word格式文檔51黑下載地址:
CIDUT--09.doc (14.79 MB, 下載次數: 213)
CIDUT--05.doc (3.29 MB, 下載次數: 122)


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:396406 發表于 2018-9-24 12:52 | 只看該作者
就不能把代碼分享出來嗎?樓主
回復

使用道具 舉報

板凳
ID:410674 發表于 2018-11-19 22:18 | 只看該作者
來學習一下
回復

使用道具 舉報

地板
ID:23397 發表于 2019-8-7 14:39 | 只看該作者
學習學習,資料全嗎
回復

使用道具 舉報

5#
ID:596698 發表于 2019-8-8 22:09 | 只看該作者
感謝分享
回復

使用道具 舉報

6#
ID:508119 發表于 2019-9-19 11:08 | 只看該作者
大佬還在嗎,初學者有幾個疑問想咨詢一下可以嗎?
回復

使用道具 舉報

7#
ID:511461 發表于 2019-10-12 19:00 | 只看該作者
大佬,可不可以分享一下源程序
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本亚洲欧美 | 精品一区二区电影 | 精品一区精品二区 | 亚洲欧美自拍偷拍视频 | 欧美日韩一二三区 | 狠狠av | 亚洲国产视频一区二区 | 欧美精品福利 | 中文字幕 在线观看 | 午夜播放器在线观看 | 91不卡 | 天天看天天干 | 中文字幕精品视频 | 日韩中文字幕在线免费 | 久草视 | 免费观看一级特黄欧美大片 | 极品国产视频 | 欧美极品在线观看 | 在线播放中文字幕 | 黑人巨大精品欧美一区二区免费 | 国产精品美女久久久免费 | 午夜影院在线观看免费 | 欧美日韩高清在线观看 | 日本a级大片 | 久久久精品影院 | 国产精品成人一区二区三区 | 狠狠干影院 | 亚av在线 | 天天澡天天狠天天天做 | 99精品久久99久久久久 | 国产精品明星裸体写真集 | 999国产视频 | 亚洲精品成人av久久 | 日韩一及片 | 精品久久久久久久 | 黄色在线网站 | 久久久国产精品 | 欧美精品一区二区三区在线播放 | 成人一区二区三区 | 久久久久久亚洲精品 | 精品中文字幕在线 |