[DIY]1000元自製桌球自動發球機



小孩開始學桌球後,跟他練習時,總嫌我們餵球不像教練那麼準確。好吧,那就作一台自動發球機吧。
製作過程中參考了滿多網路資料,想說也把我製作的細節記錄下來,供有興趣的人參考。

材料清單:

一開始的版本是使用Arduino UNO,但因為硬體的限制(Timer只有三個),無法再增加紅外線遙控及聲音回饋的功能,所以後來第二個版本就改用Arduino mega2560,它的Timer有六個。
如果不需要遙控和聲音的話,用Arduino UNO也是可以的,但就是要調整的話,要再跑過去發球機調整,較不方便。

接線圖:



機構部分:
擺動的機構是採用小型門鈕加上伺服馬達




微動開關是用來偵測球是否進到發球道了,控制板才知道是不是該往左或往右擺動了。



發球機構採用雙輪式,原因是小朋友才剛學,希望發球機發的球不要旋,小朋友比較打得到。不過也保留彈性,可以改成單輪,發球機構也可手動旋轉調整,以後可以練習上下/左右旋球。



餵球機構參考網路上的作法,很多人都是用這種轉盤式的進球機構。

(參考:https://youtu.be/qqoDK7DrOIM)

程式部分:
我使用到的程式庫:
AFMotor.h ( August 12, 2009 Adafruit Motor shield)
Servo.h
IRremote.h (## Version - 2.2.3)
Tone.h
https://github.com/adafruit/Adafruit-Motor-Shield-library
https://github.com/arduino-libraries/Serv
https://github.com/z3t0/Arduino-IRremote
https://github.com/bhagman/Tone

程式注意事項:
為了分配硬體timer資源,需作程式庫的小修改
1. irremote\boarddef.h
// Arduino Mega
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
//#define IR_USE_TIMER1 // tx = pin 11
//#define IR_USE_TIMER2 // tx = pin 9
//#define IR_USE_TIMER3 // tx = pin 5
#define IR_USE_TIMER4 // tx = pin 6
//#define IR_USE_TIMER5 // tx = pin 46

2. servo:
Servo\src\avr\ServoTimers.h
// Say which 16 bit timers can be used and in what order
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define _useTimer5
//#define _useTimer1
//#define _useTimer3
//#define _useTimer4

功能:

發球頻率,球速,左右擺動範圍調整
左1/右N (N=1, 2, 3, 4),左右對調,三落點發球
亂數發球mode1(亂數左右擺動),亂數發球mode2(亂數左右擺動+亂數球速)

實際運作影片:


後記:
作這樣一台雖然便宜,但需要有寫程式及手作的能力,好處就是可以依自已需求作修改、再進化。
不過後來看到有人在淘寶上買,台幣4000左右就有了,量產的商品應該還是會比較耐用吧,感覺也是個不錯的選擇。

只能說會想DIY的人,應該是喜歡動手作,享受這個過程吧。

參考資料:
「自動」自「發」、求新「球」變─自製桌球發球機之成效探討
阿玉Arduino研究區
葉難-arduino文章列表
2019-08-09 17:02 發佈
codyhsu wrote:
小孩開始學桌球後,跟...(恕刪)

厲害!佩服!
太強了
給個讚!!
有神...快拜!
大大真的太強了....
完全拜服!
敬佩,太強了!!!
好厲害
樓主,太神了
限制級
您即將進入之討論頁 需滿18歲 方可瀏覽。
根據「電腦網路內容分級處理辦法」修正條文第六條第三款規定,已於該限制級網頁,依台灣網站分級推廣基金會規定作標示。
評分
複製連結