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

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

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

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

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

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

表1 測試正確率