Custom vending machine controller
VMCU v4 Control Board
A custom ESP32-S3 control board connecting vending motors, sensors, and a browser-based test interface.
01 / Context
The problem
A vending machine needs a controller that connects product-selection commands with physical motors and sensor feedback. Bringing up custom hardware also needs a practical way to test individual outputs.
02 / My contribution
What I built
I designed a custom vending machine control board and developed its ESP32-S3 firmware, including motor-matrix control, sensor inputs, and a Wi-Fi web interface for board testing.
- 10 × 6 motor matrix addressed through two daisy-chained 74HC595 shift registers
- Browser-based slot selection and motor on/off testing
- Door and product-drop sensor inputs
- Firmware motor timeout and explicit motor-off control
- KiCad schematic and PCB design files
03 / Under the surface
Technical decisions
Address motors as a matrix
The firmware selects one of ten rows and six columns through a 16-bit shift-register output. This maps 60 logical slots onto shared row and column controls.
Make board testing accessible from a browser
The ESP32-S3 runs an Arduino-based Wi-Fi web interface with slot selection, motor testing, and sensor status. PlatformIO defines the firmware build environment.
Separate motor bring-up from payment integration
The inspected v4 entrypoint initializes hardware and the web motor-test interface with MDB disabled. A firmware timeout turns off an active motor instead of relying only on a browser stop command.
Project notes
This case study covers custom board design and the motor-test firmware. Payment integration is disabled in the inspected test build; the workflow illustration represents the control flow, not a production vending transaction.