簡(jiǎn)單手勢喚醒便攜設備的設計思路及其代碼
本文討論如何喚醒平板電腦等觸控裝置,無(wú)需接觸設備,而是采用基本的手勢識別及新穎的接近檢測傳感器。本文討論了相關(guān)設計的物理布局、速度限制、檢測門(mén)限、系統集成,以及人為因素的影響;給出了軟件實(shí)時(shí)的例程。
廚房里的突發(fā)奇想
如果做飯時(shí)使用觸控設備,您可能會(huì )注意到按照設備列出的食譜烹飪并非想象得那么簡(jiǎn)單。技術(shù)達人(例如鄙人)走進(jìn)廚房時(shí),喜歡看著(zhù)平板電腦或智能手機上的菜譜做飯。您可能會(huì )說(shuō):“好吧,這有什么難度?”由于屏幕始終開(kāi)啟會(huì )消耗很大電量,通常手持裝置在1、2分鐘后沒(méi)有操作時(shí)將自動(dòng)進(jìn)入休眠狀態(tài)。那么,當您需要參照食譜時(shí),設備已進(jìn)入休眠狀態(tài)。此事,您面臨兩個(gè)選擇:要么強制屏幕保持永久開(kāi)啟;要么用沾滿(mǎn)食物的手開(kāi)啟裝置,而在屏幕上留下斑斑油漬。當然,您可以在每次查看時(shí)把手清洗干凈,但不斷重復洗手、擦干即繁瑣,又費水。
我時(shí)常問(wèn)自己:“怎樣才能既不讓屏幕始終開(kāi)啟,又不會(huì )弄臟裝置?”實(shí)際上,有一種辦法一舉兩得,即通過(guò)一個(gè)手勢(不用接觸屏幕)開(kāi)啟顯示屏。聽(tīng)起來(lái)似乎很復雜,是嗎?幸運的是,做起來(lái)可能比聽(tīng)起來(lái)容易一些。
接近檢測傳感器
許多觸摸屏裝置,尤其是智能手機,內部已經(jīng)安裝了紅外(IR)接近檢測傳感器。這些傳感器一般在通話(huà)期間自動(dòng)打開(kāi)/關(guān)閉屏幕,以避免意外操作手機的輸入界面。這種傳感器,加上精明的軟件設計,就能實(shí)現利用一個(gè)手勢喚醒裝置的功能。
基本的設計思路是:設備進(jìn)入休眠狀態(tài)時(shí),觸摸屏關(guān)閉,應用處理器處于低功耗模式,依靠接近檢測傳感器“觀(guān)察”背景的變化,當接收到的信號足夠大時(shí),做出適當反應。這與接近檢測傳感器在通話(huà)期間關(guān)閉屏幕的功能幾乎完全相同。只是,我們的應用對數據有了不同的解釋。
首先記錄傳感器在“正?!北尘跋碌挠嫈抵?,此時(shí)得到的數值可能為零,但實(shí)際設計中需要考慮系統失調(例如:散射或串擾)。然后將得到的數值設置為檢測門(mén)限,當接收信號超過(guò)門(mén)限時(shí)觸發(fā)中斷或向應用處理器發(fā)送信號,以喚醒系統并打開(kāi)屏幕??傮w而言,這種方法非常簡(jiǎn)單、直觀(guān),可利用環(huán)境光檢測器和IR接近檢測傳感器實(shí)現。
本文介紹的方案采用MAX44000,接近檢測的數據讀取時(shí)間間隔可以設置在1.56ms至100ms (與環(huán)境光檢測傳感器輪流讀取數據)。假設最大檢測距離為10cm,LED的輻射角為±15°,那么,可以覆蓋的面積大約為22cm2或跨距大約為5.35cm,只有該區域內的移動(dòng)目標才能捕捉到。由此,能夠以最慢(即最低功耗)的采樣速度可靠檢測的最快手勢動(dòng)作大約為0.53mps。在此,我們還假設傳感器只需要采集到一次高于門(mén)限的信號,即可識別經(jīng)過(guò)覆蓋區域的目標。
舉手之勞...
理論上講,該方案的實(shí)施非常簡(jiǎn)單。當裝置進(jìn)入休眠模式時(shí),將接近檢測傳感器置為環(huán)境掃描模式,并在檢測到目標時(shí)發(fā)出中斷信號,指示捕捉到超過(guò)預設門(mén)限的信號??赏ㄟ^(guò)I2C接口輪詢(xún)傳感器的狀態(tài)。不幸的是,這種方式會(huì )消耗過(guò)大功率,超出了大多數用戶(hù)的預期。
這也是接近檢測傳感器的設計重點(diǎn),MAX44000傳感器能夠在許多方面擺脫應用處理器的干預,減輕處理器負荷(降低功耗)。
使能MAX44000的內部接近檢測中斷(寄存器0x01的第1位),可將喚醒門(mén)限寫(xiě)入內部寄存器(0x0B和0x0C)。當接近檢測傳感器的讀數超過(guò)該門(mén)限時(shí),觸發(fā)中斷標識置位,將MAX44000的/INT引腳置為低電平。當應用處理器檢測到該引腳驅動(dòng)為低電平時(shí),可喚醒裝置退出低功耗模式,并打開(kāi)屏幕,或完成其它需要的動(dòng)作。
…但不容忽視
實(shí)際應用往往不如理論那么容易,非接觸喚醒的具體實(shí)施并非只是簡(jiǎn)單地檢測高于門(mén)限的信號。實(shí)際上,具體的設計需要考慮諸多因素。
信號電平與電路布局
最關(guān)鍵的考慮應該是觸發(fā)喚醒條件的信號電平,需要在系統響應靈敏度與誤報概率之間進(jìn)行權衡。如果門(mén)限過(guò)低,則很容易檢測到輸入(手勢工作),但會(huì )增大瞬態(tài)噪聲或突發(fā)條件產(chǎn)生誤報的概率。反之,過(guò)高的檢測門(mén)限能夠把誤報概率降至幾乎為零,但卻只能檢測到非常接近的目標,甚至對任何輸入(即使您瘋狂晃動(dòng)手臂)都反應遲鈍。
解決這一問(wèn)題的最佳方式是:首先降低系統噪聲,可以通過(guò)光學(xué)方法或嚴謹的電路布局實(shí)現,降低的噪底有助于降低誤報概率;其次,選擇“平均”檢測距離(例如:4cm至5cm)并利用參考目標測量信號,18%的灰板比較理想,但如果觸摸屏上方安裝了黑色玻璃,測量時(shí)也應該使用這樣的玻璃,所測得的信號電平可以作為設置門(mén)限的最佳參考。通??梢宰裱@樣的原則:即將電平設置在滿(mǎn)幅的8%至15%,即使電平發(fā)生變化。
可以按照上述經(jīng)驗數據設置MAX44000傳感器的接近檢測門(mén)限寄存器,圖1所示為信號強度隨距離變化的關(guān)系曲線(xiàn),采用18%灰板,驅動(dòng)電流為100mA,傳感器上方?jīng)]有玻璃罩。藍線(xiàn)為可以選擇的喚醒門(mén)限。
圖1. MAX44000接近檢測傳感器信號強度隨距離變化的關(guān)系曲線(xiàn),采用18%灰板,100mA驅動(dòng)電流,沒(méi)有玻璃罩。
噪聲和低通濾波
需要考慮噪聲問(wèn)題時(shí),可利用低通濾波器處理信號;另外,MAX44000還有幾個(gè)控制位可以用作觸發(fā)中斷標識之前的屏蔽,采用這種設置時(shí),需要檢測到一定數量超出門(mén)限的采樣值時(shí)才會(huì )觸發(fā)中斷標示,能夠在一定程度上降低噪聲的影響。
一種稍微復雜的方法是將傳感器的讀數儲存在數據隊列中,然后利用定制的FIR軟件對其進(jìn)行濾波處理。但這種方法需要提高接近檢測傳感器的采樣速率,否則則會(huì )降低能夠捕捉到的傳感器可視范圍內的手勢動(dòng)作速率,特別是把采樣速率設置在100ms時(shí)。利用器件的控制位屏蔽檢測時(shí),速率可最多降低16倍(通常選擇4x屏蔽即可)。
手勢速度
手勢動(dòng)作的快慢是我們需要考慮的另一因素。最大速度取決于:1. 傳感器的可視范圍;2. 手與傳感器之間的距離;3. 采樣率;4. 檢測門(mén)限。前兩項很容易確定:傳感器的檢測角度,結合傳感器與目標之間的距離,利用基本的三角形即可計算出傳感器可視范圍內目標的移動(dòng)距離。例如,如果傳感器的視角為30度,最大有效檢測距離10cm,那么,傳感器可視范圍內允許的目標移動(dòng)距離為5.35cm,覆蓋面積大約為78cm2。直線(xiàn)距離結合采樣率,即可決定速度限值。具體地說(shuō),如果采樣率為T(mén),那么目標跨越可視區域的時(shí)間不得小于T。例如,如果T為100ms (MAX44000的最低采樣速率),那么按照上例,理論上最大允許的速率為1mps (這實(shí)際上已經(jīng)相當快了)。您可能希望捕獲到多個(gè)采樣值來(lái)確認觸發(fā)喚醒,這樣的話(huà),會(huì )降低允許的速率下限。
評論