王 鑫,陳成凱,陳梓威,霍非凡,林樂坤,吳 珂,劉 浩
(1.機電工程國家級實驗教學示范中心,天津 300384;2.天津理工大學 工程訓練中心,天津 300384)
在國家創新驅動發展戰略大背景下,人臉識別、語音識別等人工智能技術在現代社會多個領域廣泛應用[1]。手勢識別作為一種新興的人機交互智能識別技術,在ATM 取款、高鐵自助檢票等日常生活中開始大量應用[2-3]。電容式傳感器相比常見的攝像頭在一些特定手勢識別場合具有明顯優勢:測量精度高、不易受外界光線和電磁干擾、感測材料廣泛、功耗低、體積小、成本低等[4]。
TI 公司最新推出的FDC2214 芯片作為一款識別率高且功耗低的識別檢測芯片,能夠實現復雜環境條件下的人體和物體測量[5]。本文通過檢測電容感應板上不同區域的電容大小以及變化來判斷所對應的手勢,通過OLED 屏幕顯示識別結果。該系統經過金屬屏蔽處理,可抵抗外界的干擾,經過多次手勢訓練后具有快速、穩定的識別能力,使用Flash 實現了斷電記錄數據。
手勢識別系統的硬件主要包括STM32F103C8T6最小系統、FDC2214 識別、OLED 顯示、DC-DC 供電和4 個按鍵電路。STM32F103C8T6 通過I2C 接口與識別單元進行通信,其最大接口速度可為400 kbit/s,高速通信可保證電容數據的讀取和OLED 圖像的傳送[6]。基于FDC2214 的識別單元用來進行數據的采集、運算和傳輸。其中電容采集部分是一個L-C 諧振器[7]。該設備輸出一個與頻率成正比的數字值,可以轉換為等效電容。OLED 顯示用戶界面和識別結果。DC-DC 供電模塊將7.4 V 轉換成5 V。按鍵用于人機交互的指令輸入。
電路設計如圖1 所示。

圖1 電路設計圖
FDC2214 是電容式高分辨率、高速、多通道電容數字轉換器,分辨率高達28 bit,采樣速率高達每秒13.3×103次,便于實現識別快速移動目標的應用[8]。其I2C 外設接口簡化了與微控制器(MCU)的連接方式。每片FDC2214 含有4 通道電容檢測[9]。本文的手勢檢測識別系統通過算法優化,僅使用FDC2214 單通道即可實現較高識別率。圖2 是FDC2214 芯片的內部原理圖。

圖2 FDC2214 芯片的內部原理圖
不同手勢的電容值可根據兩極板間電容的計算公式得出:

其中:ε 是相對電介質常數;k 代表靜電力常量,k=9.0×109Nm2/C2;S 是極板的有效覆蓋面積;d 是兩塊極板之間的間距。FDC2214 通過LC 諧振的方式把電容的模擬量轉化成數字量輸入單片機進行處理。不同的手勢代表不同的S,在其他參數沒有變化的前提下,就可以通過電容值的變化識別不同的手勢。
將FDC2214 通道0 中的一相引出接到待測量的金屬板,將手放到極板上,測量金屬板和通道之間的電容,經過均值濾波之后儲存電容值[10]。電容采集電路如圖3 所示,使用LC 諧振電路采集極板電容。外部電路選擇一個18 μH 屏蔽SMD 電感與33 pF 電容并聯,產生6.5 MHz 振蕩頻率。諧振信號經由通道0 輸入FDC2214 轉換成諧振頻率 fSENSORx。

圖3 電容采集電路圖FDC2214
如圖2 所示,在FDC2214 內部,頻率 fSENSORx經過多路復用器連接到運算核心單元Core。該內核使用參考頻率 fREFx測算最終頻率。 fREFx來源于內部參考時鐘(振蕩器)或外部提供的時鐘。每個通道最終頻率的輸出是與 fSENSORx/fREFx成比例的。由于不同人的手在相同手勢下會有不同容值,對于給定的總傳感器板面積,單端配置允許比差分配置更高的感應范圍。最終的頻率值由式(2)得出:

通過對數據的統計發現,有些區域相鄰手指之間的容值變化相對較小,識別結果不準確。為了提高識別的準確度,需對大量的數據進行統一的處理。在此基礎上,使用“閾值”代表相鄰手指間容值的分界值,用iW 表示,電容值超過iW ,機器就會自動識別為手勢種類i。以手勢1 和2 為例,分界值為2W 。下面分別通過改變兩個手勢在銅板上放置位置以及與銅板接觸面積的大小各采樣10 次。手勢1 的最大值記為F1max,最小值記為F1min;同樣,手勢2 的兩個邊界值為F2max和F2min。從而得到了兩個閉區間[F1min,F1max]和[F2min,F2max],極板上接觸區域內的總容量分別用1U 和 U2表示。

圖4 比較情況一

圖5 比較情況二
如圖4、5 所示,在這四個邊界值中,由數據顯然可知:F1max 完成上述區分工作,將分界的電容值進行儲存,方便跳轉到主界面進行判斷顯示。為此采用數組存儲,將1~5 個手指最終的閾值儲存進1×5 維矩陣中,并依次將接下來r 名學習員的數據構成r×5 維矩陣。當檢測時,通過按鍵選取對應學習員數據,由主界面進行判決。從而完成整個機器學習算法的設計。 隨機選取三名手掌大小明顯不同的測試者進行測試。測試內容為手指數1、2、3、4、5 以及“剪刀”“石頭”“布”共計八個手勢。測試方式為每個手勢測取7 個數據,將所有數據進行MATLAB 數據分析,結果如圖6 所示,驗證閾值選取和手勢識別效果。 圖6 Matlab 數據分析—閾值的選取 圖6 中縱坐標為測試距離,即每次測試時手指偏離標準起始位置的位移。可以看到,不同手指間的區分度不盡相同。經實際圖像及數據驗證可較合理地選擇閾值iW ,根據式(3),將此算法用單片機實現,自動計算選取手指數1、2、3、4、5 以及“剪刀”“石頭”“布”的電容閾值分別為0.60、1.15、1.60、2.10、2.82、0.60、1.90、2.90 nF。 程序主要分為模式選擇、猜拳主界面、識數主界面、學習界面和判決界面五個部分。學習界面顯示學習模式、手勢信號以及每次學習所取得的數據,判決界面顯示通過學習所存儲記憶的數據,通過判決界面進行輸出。主體程序流程如圖7 所示。 圖7 程序流程圖 在學習模式下,將手指放入如圖8 左邊的銅板之上,便可讀取并記錄此時的容值,用按鍵輸入對應的手勢進行數據標注。隨機選取十名手掌大小明顯不同的測試者進行機器學習,每個人手指數1、2、3、4、5 以及“剪刀”“石頭”“布”共計八個手勢,每個動作學習10 次,共取得800 組數據進行學習訓練[11-12]。 圖8 實驗驗證 切換到識別模式下,十名測試者隨機打亂再進行測試,每人每個手勢測試識別20 次,共測得1 600 組數據,識別率統計結果如表1 所示。 表1 手勢識別率結果 % 本文系統的手勢總平均識別率為94.56%,識別效果較好。 本文利用電容傳感器芯片FDC2214 單通道電路設計了一種基于閾值分析的手勢識別系統,使得芯片外圍采集電路簡化,系統功耗降低,成本減少,穩定性增強。該系統經過大量數據實驗驗證,識別迅速、穩定且識別率較高,在智能交互、安全駕駛、手語認知等領域具有廣泛的應用前景。
3.2 閾值選取

3.3 程序設計

4 測量與驗證


5 結語