2016年7月16日 星期六

Make Electric current stick game by Arduino (使用Arduino製作電流急急棒)


    這是用Arduino 自製的電流急急棒範例.
其實我主要是想要測試智能串口HMI 顯示屏的功能,剛好小朋友的媽媽有學校園遊會的活動
於是應老婆大人要求做了這個小專案.


<前面> 螢幕為一HMI panel 型號為TJC4832T035_011R.綠色阻礙棒子接在一顆MG 90伺服馬達上,當開始計時時,馬達會每隔3秒揮動一次,另外也可以在綠色棒子上再貼上鋁箔,並把鋁箔連接上路徑鋁箔,當急急棒碰觸時一樣可以做到導電失敗.


主要功能及製作說明:
1.有兩隻粗細不同的棒子可以選擇,原因是怕小朋友很難過關所以原本是用3DP印出一
   直徑1.5CM 的棒子,測試過覺得難度太高,所以又增加了一隻用竹筷的細棒子.

2.路徑寬度原本是規劃2.5CM ,但是由於木板不好切割所以不是很均勻,建議用瓦楞板或是
厚紙箱做地圖即可,然後在路徑上可以貼上會導電的烤箱用的鋁箔,我在鋁箔有貼上銅箔膠帶
當固定膠帶,銅箔膠帶電子材料行買的到,但是一捲要好幾百(不至於全部用完),只是用來固定鋁箔.我之前就有買了這次剛好可以用到.

3.左側為一起始紅外線感測器,右端為一終點紅外線感測器,這個感測器跟用來做尋跡車用的紅外線感測器是一樣的,當棒子經過感測器左端上方即會自動開始計時,在時限60秒內,棒子沒碰觸到即可過關.當棒子經過右端終點感測器時會自動感應.

4.中途有架設一伺服馬達接上一綠色棒子當阻礙,每隔3秒會揮動一次,當然時間是由程式控制,可以自行改成是改變時間.

5.使用一串口HMI 的觸控panel當顯示,基本上主用是用來顯示狀態及倒數計時,可以參考下面實際圖片的說明. ㄧ般來說要顯示數字也可以用七節顯示器來做,所以這個顯示屏並非必要也可以用七節顯示器替代,不過我提供的Arduino source code 只有我使用的HMI 處屏的code,如果用七節顯示器則這部分的code就要自行修改.

    PS.這個HMI觸屏為一USART傳輸可控制的螢幕,透過簡單的UART跟Arduino連線
  可以透過文字指令跟這個觸屏作互動切換顯示.事先在HMI 觸屏提供的控件軟體編輯好
切換畫面或是按鈕或是文字欄,再透過UART序列傳輸指令即可以跟Arduino作互動.
  可以在掏寶上搜尋 "hmi觸摸屏"即可找到相關產品,至於使用方式,通常賣家都會提供資料.



6.使用一小喇叭來做出音效,在接線上我有使用一9013 電晶體當放大器以放大聲音音效,但是為了接線方便就沒再特地使用電容當濾波,所以有時聲音會有雜音尤其開關機時,這一部分的電路設計大家可以自行google參考相關喇叭的電路設計,基本上如果沒有使用任何電阻電容或是電晶體,直接把訊號接到喇叭上還是可以發出聲音.在我的code 定義裡,喇叭是接在D13 Pin.

7.最基本也是最重要的,如何感測當急急棒碰觸到鋁箔路徑的事件?在這邊我使用一個繼電器當作開關.請看以下的圖片.一般繼電器的用法都是從IN 端(下圖右側)輸入一個訊號(Low active),然後右邊輸出端接上另一個電源,例如家裡的電風扇,藉由IN 的訊號來控制電風扇電源的ON/OFF.  我在這邊的使用上只把它當單純開關如同三隻腳的指撥開關一般,所以共用Arduino的5V+電源即可.而且是反過來把右側的Com Pin接到Arduino 的D4 pin,D4 pin 設定為數位輸入pin. 而右端IN 則接到急急棒.而右側的GND也接到鋁箔,於是當急急棒碰觸到鋁箔時,就會從IN端 有一個Low的訊號產生,這時會啟動繼電器作動,而對應的左端原本<常開端>就會跟<Com>變短路,於是D4 pin就會變成 +5V準位,而原本的<常閉端>就會跟<COM>斷開,藉由這個機制我可以感應到急急棒是否有碰觸到鋁箔路徑.



8.其餘線路接法請看程式定義,如:
SoftwareSerial panel(2, 3); // RX | TX for HMI panel
//D2,D3 設定為 RX,TX接到HMI panel的TX,RX
const int LedPin12=12;
const int LedPin11=11;
//D12,D11 是一般的LED ,我使用了一個紅色及綠色LED.
const int Triger=4;
//D4 當輸入,即是如上所說的接到繼電器<COM端>
const int Startpin=5;
//D5 pin 當輸入,即接到左端紅外線感測器信號pin
const int EndPin=6;
//D6 pin 當輸入,即接到右端紅外線感測器信號pin
const int ServoAPin=7;
//D7 pin 當輸出,接到伺服馬達信號pin
const int speaker=13;
//D13 pin 當輸出,接到喇叭+端,(在這一端你可以再自由加上電晶體放大或濾波電路)
   喇叭另一端接地

剩餘的pin還沒接的應該只剩接地跟+5V電源.


<背面接線>


<右下角唯一繼電器>


<HMI panel 開始畫面>開機時或重來時的預設畫面


<HMI panel過關畫面>當棒子有從左側開始感測器開始並過程都沒失敗而且在60秒內,經過右側
紅外線感應器即過關,自動切到底下畫面並發出過關音效.


<HMI panel 開始倒數計時畫面> 當棒子經過左側開始的感測器即自動切到倒數計時並每隔0.5秒發出BEEP聲.



<HMI panel 失敗時畫面> 觸碰到或是60秒倒數時間到都算失敗並發出失敗音效.




完整的Arduino source code 下載:

https://github.com/Ashing00/CurrentStick/blob/master/currentstick.ino

DEMO:










加入阿布拉機的3D列印與機器人的FB粉絲團
https://www.facebook.com/arbu00/

Scan QRcode to join FB Fans.