Football, basketball, and badminton are all well and good, but no game requires more skill and determination under pressure than good old fashioned beer pong. Just about everyone has played that classic drinking game at one time or another, but few people are legitimately good at it. Don’t worry, it’s not your fault; unlike most games, beer pong gets harder the worse you’re doing, as a result of all of those beers you’ve had to drink. Those of you who frequently find yourselves on the losing team may want to check out Grant Galloway and Nils Opgenorth's PongMate CyberCannon Mark III.
The PongMate CyberCannon Mark III is a wrist-mounted ping pong ball launcher that is equipped with hardware to ensure that you never miss a shot. The device tells you exactly how to position your arm so that the ping pong ball always sails perfectly into the targeted red Solo cup. Galloway and Opgenorth's tutorial goes into great detail about how the PongMate CyberCannon Mark II, and is hilarious to read even if you have no interest in beer pong or being a winner. From an engineering perspective, the design of this device is a great example of how to reduce the number of variables in your calculations by utilizing a clever user interface.
In order for a player to successfully launch a ball using the PongMate CyberCannon Mark III, they just need to move their arm to the proper height and angle. That removes two of the variables needed to calculate the ball's trajectory. The two remaining variables are the distance to the cup and the speed of the ball. A time-of-flight sensor is used to detect the distance to the cup. That leaves just one variable: the launch speed. The onboard controller can easily calculate the needed speed, since the other three variables are already known.
That controller is built around an Arduino Uno. An MPU-6050 accelerometer is used to make sure the device is at the proper angle, and five LEDs act as indicators. An additional 2D gravity bubble level provides redundancy. A VL53L1X time-of-flight sensor measures the distance, and is aimed with a laser module. The ball is pushed into the launcher by a small servo motor, and is launched by a pair of DC motors. The speed of those motors is set by the Arduino through a L293D motor driver. Power comes from six rechargeable AA batteries. The PongMate CyberCannon Mark III may not look polished, but it is the result of ingenious problem solving.