手勢控制在移動設備上的應用越來越多,今天就來做一個范例,用手勢遙控led燈,透過手勢動作進行燈光的power on、off以及亮度調節控制。
手勢控制燈光的手勢
我們希望能控制燈光的 1.亮度調節 2.關閉 3.直接開最亮三種動作,因此設計其手勢動作如下:
手勢控制燈光的流程
在動作流程方面,基本上用戶的想法只有兩個「我想要控制燈光」以及「我的命令是xxx」:
step 1:用戶告知系統我想要控制燈光:當使用者打算控制燈光時,需要把手放在鏡頭前,此時led燈便會開始恒亮告知使用者從休眠狀態醒來了,這時使用者便可把手放開。
step 2. 系統進入控制模式等待手揮動作:在上一步使用者放開之后,會發現led持續閃爍,表示系統目前正在等待手揮控制。使用在可在此時在鏡頭前進行各種手勢動作以控制燈光。當系統發現持續了五秒鏡沒有任何手揮動作的話,便會再進入休眠狀態,使用者若想要再次進行手揮控制,必須從第一步開始。
我們可以把上述的兩個想法詳細拆解如下:
材料準備及接線
以下分為手勢控制端及燈具端兩部份來說明。
手勢控制端
手勢控制端此裝置可貼于墻壁或放置桌上,角度需方便一般人手部的上下左右揮動來控制遠距的燈光設備。為了讓用戶知道目前系統可否開始進行手勢揮動控制,因此加了一個led燈for模式告知用途。
材料準備
開發板(uno、nano…皆可)
創客手勢控制開發板egad-005
muart0-s-1-1 無線串行端口傳輸模塊(1對1) 的s0端
三色led(共陰)
egad-005是一款簡單好用的手揮控制板,它透過發出紅外線來偵測手部的上下左右以及遠近等動作,因此這款手揮模塊比較適合于室內使用,尤其在黑暗環境中更能發揮其手揮辨識的效果哦,因此相當適合用于室內燈光的控制。
muart0-s-1-1是與凌陽創新開發的rf uart模塊,簡簡單單就能讓我們將手揮控制接口無線化。
接線安裝
燈具被控端
一般led燈泡或燈具其使用的電壓為12v或24v,而arduino透過pwm pin最大的輸出僅為5v,因此需要使用tip 120晶體管來放大電流。(tip120最大可接至60v/5a)。如下圖,左側原本直接用pwm pin來控制小電流led,若改用大電流時須改接如右圖。(注意這不能用于交流只能用在直流電哦)
材料
arduino開發板(uno、nano…皆可)
muart0-s-1-1 無線串行端口傳輸模塊(1對1) 的s1端
tip120 三極管
12v led燈泡
升壓模塊 5v to 12v
接線安裝
接線示范
手勢控制端的程序中,egad_005.get_distance()是讀取前方手部的距離,這個距離不太長,回傳的值會介于18~63之間,如果超過了偵測距離library就會認定手部已離開,此時雖然使用者還舉著手以為正在距離偵測模式。因此,有個明顯的燈號提醒用戶是必要的,程序中使用紅燈讓表示目前正在距離偵測中(即調光的動作)。
當使用egad_005.get_distance()讀取前方手部距離時,library會不斷的傳回目前的距離值,當使用者移動到某距離確定了亮度離開時,注意此時library所回傳的距離不會固定在最終那個值,而會持續減少下去;由于使用者有在移動手部調整距離時,回傳的距離值會是多組介于18~63的相同數字數值排列,因此,在燈具控制端程序中,可用判斷前后兩次的距離值是否相同來解決手部離開時,回傳的距離值會持續減少的問題。
您還可以改良一下燈具控制端,把輸出到tip 120的pwm訊號接到muart0-s-1-1的input port,并且讀取手勢控制端output port,就可以判斷遠程的燈具在使用者手揮控制后,是否被正確的開啟或關閉了。
3d打印外殼及組裝
下載3d模型,打印
stand.stl:手揮座,lampcase.stl:燈具基座,lamptop.stl:燈具外罩
安裝好就可以開始操作了。
來源:網絡
以上是網絡信息轉載,信息真實性自行斟酌。