【手勢辨識】DIY一個可遙控手揮控制的LED燈

Description

Description
作者:chtseng

前言

EGAD-005是一款簡單好用的手揮控制板,它透過發出紅外線來偵測手部的上下左右以及遠近等動作,因此這款手揮模組比較適合於室內使用,尤其在黑暗環境中更能發揮其手揮辨識的效果哦,因此相當適合用於室內燈光的控制。

此外,與凌陽創新的RF UART模組搭配使用也是絕配,簡簡單單就能讓我們將手揮控制介面無線化,例如本文所將示範的手揮遙控LED燈,不但能透過手勢動作進行燈光的Power on、Off以及亮度調節控制,而且是遙控的哦。

A) 手揮控制的動作設計

手揮控制燈光的手勢

我們希望能控制燈光的 1.亮度調節 2.關閉 3.直接開最亮三種動作,因此設計其手勢動作如下:

手揮控制燈光的流程

在動作流程方面,基本上使用者的想法只有兩個「我想要控制燈光」以及「我的命令是XXX」:

Step 1:使用者告知系統我想要控制燈光:當使用者打算控制燈光時,需要把手放在鏡頭前, 此時LED燈便會開始恒亮告知使用者從休眠狀態醒來了,這時使用者便可把手放開。

Step 2. 系統進入控制模式等待手揮動作:在上一步使用者放開之後,會發現LED持續閃爍,表示系統目前正在等待手揮控制。使用在可在此時在鏡頭前進行各種手勢動作以控制燈光。當系統發現持續了五秒鏡沒有任何手揮動作的話,便會再進入休眠狀態,使用者若想要再次進行手揮控制,必須從第一步開始。

我們可以把上述的兩個想法詳細拆解如下:

B) 材料準備及接線

以下分為手揮控制端及燈具端兩部份來說明。

手揮控制端

手揮控制端此裝置可貼於牆壁或放置桌上,角度需方便一般人手部的上下左右揮動來控制遠距的燈光設備。為了讓使用者知道目前系統可否開始進行手勢揮動控制,因此加了一個LED燈for模式告知用途。

材料準備

  1. Arduino開發板(UNO、Nano…皆可) x1                                        約        $200
  2. 創客手揮控制開發板EGAD-005        x1                                                        $400
    http://www.sunplusit.com/TW/Shop/IoT/EGAD005
  3. MUART0-S-1-1 無線序列埠傳輸模組(1對1) 的S0端                        $125
    https://www.icshop.com.tw/product_info.php/products_id/25724
  4. 三色LED(共陰)x1                                                                                $5

接線安裝

燈具被控端

一般LED燈泡或燈具其使用的電壓為12V或24V,而Arduino透過PWM pin最大的輸出僅為5V,因此需要使用TIP 120電晶體來放大電流。(TIP120最大可接至60V/5A)。如下圖,左側原本直接用pwm pin來控制小電流LED,若改用大電流時須改接如右圖。(注意這不能用於交流只能用在直流電哦)

材料準備

  1. Arduino開發板(UNO、Nano…皆可) x1                                        約        $200
  2. MUART0-S-1-1 無線序列埠傳輸模組(1對1) 的S1端                        $125
    https://www.icshop.com.tw/product_info.php/products_id/25724
  3. TIP120 電晶體 x1                                                                                        $10
    http://goods.ruten.com.tw/item/show?21732886618732
  4. 12V LED燈泡
    http://goods.ruten.com.tw/item/show?21704177057685                 $35
  5. 升壓模組 5V to 12V                                                                                        $135
    http://goods.ruten.com.tw/item/show?21725536082832

接線安裝

接線示範

程式燒錄

如果您與上面接線方式完全相同,那麼直接使用本程式燒錄到Arduino即可work。需要注意的有:

  1. 手揮控制端EGAD-005的RDY pin腳一定要接在Arduino D2,雖然library中的EGAD_005.init(2) 似乎可動態指定,但測試過如果不是使用D2就無法work。
  2. 手揮控制端中的這段:
    1
    2
    3
    4
    5
    6
        while (gest & 0x40)
        {
          Serial.println("Prepare to enter control mode...");
          gest = EGAD_005.get_swipe(1);
          LED(1);
        }

是指當偵測到前方有手遮擋時,持續等待到手離開時才離開此迴圈進入控制模式,您也可以改成手部不需要離開自動進入控制模式,雖然感覺這樣使用更順手,但是會碰到一些問題:由於手部持續在前方沒有離開,因此要正確判斷何時開始是使用者想要的動作並過濾掉不要的動作,這部份需要花點時間study。

  1. 手揮控制端的程式中,EGAD_005.get_distance()是讀取前方手部的距離,這個距離不太長,回傳的值會介於18~63之間,如果超過了偵測距離library就會認定手部已離開,此時雖然使用者還舉著手以為正在距離偵測模式。因此,有個明顯的燈號提醒使用者是必要的,程式中使用紅燈讓表示目前正在距離偵測中(即調光的動作)。
  2. 當使用EGAD_005.get_distance()讀取前方手部距離時,library會不斷的傳回目前的距離值,當使用者移動到某距離確定了亮度離開時,注意此時library所回傳的距離不會固定在最終那個值,而會持續減少下去;由於使用者有在移動手部調整距離時,回傳的距離值會是多組介於18~63的相同數字數值排列,因此,在燈具控制端程式中,可用判斷前後兩次的距離值是否相同來解決手部離開時,回傳的距離值會持續減少的問題。
  3. 您還可以改良一下燈具控制端,把輸出到TIP 120的PWM訊號接到MUART0-S-1-1的Input port,並且讀取手揮控制端Output port,就可以判斷遠端的燈具在使用者手揮控制後,是否被正確的開啟或關閉了。

C) 3D列印外殼及組裝

您可以從https://github.com/ch-tseng/gesture-LED-control/tree/master/3d%20case下載3D模型。stand.stl:手揮座,lampcase.stl:燈具基座,lamptop.stl:燈具外罩

D) 實際使用示範

 

一般室內

未開燈室內

看到這裏,您有沒有很想趕快也來做一個試看看,或者乾脆來把家中的燈具給改裝一下呢?

Latest posts by Cheng Hsun Tseng (see all)

    Contact

    Contact
    • Category
      Light
    • Tags
      EGAD-005, LED

    Project簡述

    Project簡述
    • 簡述
      EGAD-005是一款簡單好用的手揮控制板,它透過發出紅外線來偵測手部的上下左右以及遠近等動作,因此這款手揮模組比較適合於室內使用,尤其在黑暗環境中更能發揮其手揮辨識的效果哦,因此相當適合用於室內燈光的控制。
    • 作者
      chtseng

    您的姓名 〈需填寫〉

    您的電子郵件信箱 〈需填寫〉

    主旨

    您的信件內容