Pitching machines are everywhere. Machines that catch the ball and return it do not exist at any price, so our capstone team built one for under $700. I co-led the feeding subsystem and owned all of the machine's electronics and firmware.
Twelve of us split across three subsystems: capture, feeding and return. I co-led the 4 person feeding group and owned the machine's entire electrical and software system: motor drive, control firmware, wireless interface and safety logic.
A solo player can buy a machine that pitches, but someone still has to walk every ball back. We set out to close the loop: a machine that catches an incoming throw, feeds it internally and returns it, with nobody in the middle.
Nothing off the shelf does this at any price, and ours had to come in under a $700 cap.
The feeder is a rotating dual chamber indexer: catch a ball in one chamber, rotate 180 degrees, present it to the return flywheel. The failure mode that kills machines like this is a stall mid rotation.
So before any parts were made I modelled the load case in MATLAB, a 0.19 kg ball lifted through 180 degrees of rotation, and sized the NEMA 17 stepper and TB6600 driver to a 1.8x torque safety factor.
Everything runs on one ESP32. The firmware handles PWM speed control for the 120 W DC return flywheel through a MOSFET stage, stepper indexing for the feeder, and limit switch logic so the machine always knows where the chambers are.
A wireless remote gives start and stop from across the field, and the emergency cut-offs kill motor power independently of the microcontroller.
The MATLAB torque study felt slow while teammates were already printing parts, and then the feeder ran a full competition day without a single missed index. Analysis before fabrication is cheaper than iteration after it.
If I built it again I would close the loop on flywheel RPM, so return speed holds steady as the battery sags.