Badminton Trainer DIY / 3D Printed Shuttlecock Launcher

by bastienator in Outside > Sports

154 Views, 2 Favorites, 0 Comments

Badminton Trainer DIY / 3D Printed Shuttlecock Launcher

PXL_20250120_162732886.MP.jpg
Gardentest.gif

Introducing the DIY Badminton Shuttlecock Launcher: A fully printable and modular training machine designed to practice your badminton skills, or having fun playing with it, or just having fun building it.

The machine features a simple shuttle delivery system that precisely releases individual shuttlecocks from a top-mounted supply, propelling them across the court using a dual-wheel mechanism powered by two 12V DC Motors. During testing, the machine demonstrated a throwing range of up to 7 meters, effectively covering the entire length of a standard badminton court when mounted on a stand.

By adjusting the motor speeds, players can practice a variety of shots, including delicate net shots, making it an versatile training tool for players of all skill levels. The current prototype successfully accommodated 22 shuttlecocks—limited only by workshop ceiling height—with potential for further expansion.


Supplies

Screenshot from 2025-01-23 11-50-47.png

All the 3D models and assemblies are available (for free of course) on my Thingiverse:


In addition to the printing files you need:

  1. 2x Rubber band
  2. 1x Silicone wristband (diameter 6,5cm x 1cm)
  3. Little Screws
  4. Epoxy glue
  5. Allarounder glue


Electronics:

  1. 1x Arduino UNO (or equivalent)
  2. 2x Servomotor (I used this one: https://www.amazon.de/gp/product/B0C1TXW74L)
  3. 2x 12V DC Motors (I used this one: https://www.amazon.de/gp/product/B075JFLCX5/)
  4. 3x Voltage Buck Converters (To drop the input voltage to the servos and the arduino)
  5. PWM Controller for the DC motors (To control the motors speed)

Building Instructions

DIY 3D printed badminton trainer / Shuttlecock launcher (2nd generation) - How to build it

The video shows how to assemble the machine, step by step, and with the tests you have to pass after each step.

Wiring the Electronics

ShuttleLauncher_Wiring.png

It's the circuit I used, but it's not the only solution.

I used 3x Step down buck converters, because it is convenient for prototyping, so I can easily switch the power source, with another voltage, or battery.

Arduino Code

Here is the Arduino Code I used.

Optionally, if you want to improve it, you can for example ad a button to start and stop the releasing of the shuttles (see the commented code for PIN one).


#include <Servo.h>

Servo servoDistrib; // create servo object for distributor (Upper Servomotor)
Servo servoLauncher; // create servo object for launcher (Lower Servomotor)

const int Digi_Switch_PIN = 1; // OPTIONAL: Pin for On/Off switch. A switch can be used to stop the distributor, while charging the shuttles.

int angle_Drop_deg = 0; // distributor: angle for droping the shuttle
int angle_Block_deg = 90; // distributor: angle for blocking the shuttle
int angle_Charge_deg = 185; // launcher: angle for charging the shuttle
int angle_Release_deg = 135; // launcher: angle for launching the shuttle

void setup() {
Serial.begin(9600);
pinMode( Digi_Switch_PIN, INPUT );
servoDistrib.attach(9); // wire the distributor (Upper Servomotor Signal pin) on pin 9
servoLauncher.attach(10); // wire the launcher (Lower Servomotor Signal pin) on pin 10
}

void loop() {
// ####### INIT POSITION ####################
servoDistrib.write(angle_Block_deg); // block distributor
servoLauncher.write(angle_Charge_deg); // bring launcher to charge position
delay(1000); // wait for launcher to be in position
// ####### OFF MODE ######################### // This part can be uncommented to use a switch on pin1
// // If switch is OFF, just stop the loop here
// if (digitalRead( Digi_Switch_PIN ) == LOW) {
// delay(1000);
// return;
// }
// ####### CHARGE AND LAUNCH ################
servoDistrib.write(angle_Drop_deg); // release the shuttle
delay(300); // wait for the shuttle to drop
servoDistrib.write(angle_Block_deg); // block the shuttles in the distributor
delay(500); // wait it's blocked
servoLauncher.write(angle_Release_deg); // bring the launcher to the wheels
delay(2000); // wait for the launch
}


Tipps for a Better Result

  1. Print the assemblies with supports
  2. You can print the wheels with a flexible filament (like TPU), it reduces the vibrations, and provide a better launching.
  3. For the other parts, you can use any solid filament (I used PLA+)
  4. Take some time to test thoroughly after each step, you will save time at the end

Further Improvements

This is a cool project to learn multiple disciplines like 3D Printing, Mechanics, Electronics ... and at the end of course Badminton :)


For advanced makers, there are many improvements possible for the machine:

  1. Lateral rotation
  2. Remote control for launching or stopping
  3. New launching programs (frequency, power)
  4. Sensor to recognize if a shuttle is at position
  5. AI camera to react on player (hmmm ok, maybe a bit overkill :p)