鄭慧珍,沈周鋒
(漳州職業技術學院 電子工程學院,福建 漳州 363000)
手勢是人們在日常生活中最直觀和自然的交流方式,能在特定的場合表達一些特殊的意義,是人類的基本動作之一[1].隨著智能化設計技術發展,手勢識別技術在部分消費類產品上的應用已成為一大熱點,無論是智能家居、智能可穿戴,還是VR 等方面的應用,都在試圖增加這一識別功能,這在豐富產品應用場景的同時,也增加了新的賣點[2].人機交互的設計越來越受人們青睞,手勢識別作為人機交互的一部分,對它的研究具有重要的意義.
根據系統設計的目標,需完成對任意人員手勢識別的訓練,然后經確認后訓練員在感應區域內做出手勢,系統便能夠給出準確的判斷.筆者設計了一套符合系統需求的電路.該電路的系統主要由電源模塊、控制模塊、檢測采集模塊和人機交互模塊4 部分組成[3].控制模塊采用STM8 單片機作為主控制芯片,STM8 是基于8 位框架結構的微控制器,內部資源豐富,內部自帶16 MHz 的RC 振蕩電路作為系統時鐘.程序執行速度快,一個時鐘周期幾乎可執行一條指令. FDC2214 芯片是Ti 公司的一款低功耗高精度的電容傳感器芯片,其供電電壓為2.7~3.6 V,諧振頻率從10 kHz 到 10 MHz,數據位數為28 位,即精度為1/228,FDC2214 有4 個采集通道,其與MCU 的通信方式為I2C[4]. FDC2214 電容傳感芯片具有4 個檢測通道,可作為手勢識別的采集器,完成手勢識別的采集.另外本系統采用晶聯訊電子所設計生產的JLX12864G-086 液晶顯示屏來作為人機交互界面,從而完成具有訓練模式、判決模式和提示用戶如何進行訓練模式這樣比較復雜的顯示界面,該系列的顯示屏通信接口采用單向的SPI 接口,與標準SPI 接口完全兼容,同樣不需要過多的軟件介入.單片機與傳感器芯片和顯示模塊進行數據通信占用CPU 時間片極少,便于系統擴展其他產品功能.系統總體框架見圖1.

圖1 系統總體框圖
整機硬件電路見圖2.系統由單片機的最小系統及其外圍電路構成,采用內部振蕩器作為時鐘信號,無需外部晶振.J1 接口作為單片機的程序燒寫和在線調試接口,連接ST-LINK 調試器即可完成程序的單步執行和在線調試.通過觀察單片機內部寄存器的變化情況來調整程序參數,以便于修改程序中存在的bug.系統采用單片機內部集成的I2C 單元與FDC2214 通信,大大增加了I2C 通信的速度,接口時鐘頻率選取1 MHz,幾十微秒即可完成一次數據讀寫.采用單片機內部自帶的SPI 接口單元與12864 屏幕通信.接口時鐘頻率采用4 MHz,大大加快了屏幕刷新的速度.單片機在訓練模式下采集各種手勢對應的4 個通道數據,存入單片機EEPROM 中.EEPROM 具有斷電保存功能,保證用戶訓練數據永久保存,無需擴展外圍存儲芯片.每種手勢采集3 次,提高識別的穩定度.在判決模式下采集實時的數據,與訓練數據進行比對,完成手勢識別.下面對主要模塊FDC2214 電容式感應模塊來進行闡述.

圖2 整機硬件電路
檢測采集模塊采用電容式傳感芯片FDC2214.電容式感應是一種低功耗、低成本、高分辨率非接觸式感應技術,適用于接近檢測、手勢識別、遠程液位監測等應用場景.電容式傳感模塊,以其低成本、高度靈活等特點,具有廣泛的應用范圍.限制電容式傳感器主要問題在于噪聲敏感性度過高. FDC2214 采用創新的抗EMI 技術架構,在高噪聲環境中仍能保持較好的精度.它是面向電容式傳感的解決方案,具有抗噪聲、抗電磁干擾、高分辨率、高速、多數字化通道等特點.該芯片采用基于窄帶技術的創新型架構,可對噪聲進行高度抑制,在高速情況下仍保持高分辨率. FDC2214是基于LC諧振電路原理的電容檢測傳感器[5-6],其基本原理見圖 3. FDC2214 的特點是最大輸出速率(一個活動通道)4.08 ksps;最大輸入電容是250 nF(10 kHz,1 mH 電感);傳感器激勵頻率是10 kHz 至10 MHz;通道數量4 個;分辨率28 位;系統本底噪聲是100 sps 0.3 fF;2.7~3.6 V 的電源電壓;有效功耗為2.1 mA;低功耗睡眠模式35 uA;關機電流200 nA;數據接口采用I2C.

圖3 FDC2214 電路原理圖
設計采用FDC2214 芯片作為核心來設計手勢識別器.該芯片內Resonant circuit driver 單元和芯片外L和C 組成的并聯諧振電路組成振蕩電路(見圖3).振蕩頻率f ≈1/2/π/sqrt(L*C),當物體接近電容一極時,C 的值發生變化,從而影響振蕩頻率f.傳感器芯片實時的監測4 個振蕩電路的頻率,并轉換為28 位位寬的數字信號.不同的物體接近極片,由于形狀、距離和介電常數的不同,C 變化量有所不同,振蕩頻率變化量也將不一樣.因此整機訓練模式所得數據,可以大大提高了對人手的識別正確率.手勢特征點總共包括5 根手指和一個手掌,而FDC2214 只有4 個電容檢測通道.為了降低成本,本設計采用通道復用的方式,完成1 片FDC2214 檢測6 個特征點.筆者設計的四路傳感器分布見圖4,當手接近電容一極時,該極片對地電容發生微弱變化,從而改變諧振頻率.設計時在感應面板下方安裝一定數量的極片,若食指接觸感應面板時,通道2 的諧振頻率會降低一定值,若此時手掌也接近感應面板,通道2 的諧振頻率會降低更大的值,同時通道1 的諧振頻率也會下降一定值(見圖4).大拇指和半個手掌采用通道1 來檢測.用戶出示手勢時,只有手掌貼合檢測面和拇指手掌同時貼合檢測面,所引起的通道1 頻率變化值不同,軟件可以通過檢測通道1 的變化量大小判斷拇指.通過判斷4 個通道的諧振頻率值的減小情況,即可判斷五根手指和一個手掌的接近情況,即可判斷出當前手勢.

圖4 感應面板極片位置示意圖
系統程序總體設計見圖5,各單元初始化完畢后先判斷是否是訓練模式.若標志位等于1,則進入訓練模式,否則進入判定模式.在訓練模式下采集4 個通道的值,并對這4 個通道的數據進行預處理,每個通道采樣3 次并取得平均值Kn,然后等待確認鍵按下,再將數據存入相應的訓練數據緩存中.然后刷新屏幕,提示用戶出示特定手勢供下一輪的數據采集,待所有手勢訓練已經結束后返回.在判定模式下,需要對采集到的手勢值進行比對,從而獲得正確手勢并進行顯示.手勢識別算法的編程思路是基于K-NN模式識別算法(鄰近算法)設計的[7-8].將各通道采集的數值Xn 與各通道的訓練數據Kn 相減后取絕對值,然后再相加得到Zn.其表示當前手勢與訓練手勢的相似度,值越大則相識度越低.對比實時數據與各組訓練數據相似度,即可判定當前手勢,最后液晶屏顯示手勢.

圖5 系統軟件控制流程圖
不同使用者,手掌的粗糙程度不同,手掌大小和手指長短都存在個體差異,因此設計如下測試方案:選取10 個測試員,其中5 個男性,5 個女性,手掌大小不一.對測試器進行了多次重復的測試:先讓10 個人分別進行手勢1(測試采用猜拳)訓練和手勢1 判決,然后10 個人分別進行手勢2(測試采用劃拳)手勢訓練和手勢2 判決.選取一人作為指導員,指導測試員手勢的放置.
經測試,10 人在面板手型圖案的指導下進行的測試,按規定放置手勢,每人測試10 次,多數情況均可在1 s 以內判決出手勢成功率達到100%.偶爾手勢安放位置偏差大于1 cm,判決結果會出錯.測試結果見表1.
測試結果表明:用戶按要求安放手勢,1 s 內,可以實現手勢識別;對不同粗糙程度和成年人手型不同大小,均可以完成功能目標.基于本設計成果,可廣泛應用于智能家居系統或企業門禁的人機交互界面.通過識別出的手勢控制電視、空調、照明燈等一系列家電,真正實現手勢識別在實際中的應用.

表1 測試正確率