This is the ramen vending machine project. My girlfriend wanted to have a cool vending machine at her work to vend all kinds of ramen. I designed the whole system in CAD and programmed all the electronics. Manufacturing was done using hand tools to create this project (Dremel, 3d printed parts, screwdriver).
One primary design consideration was maintenance. Sure, you can create this vending system, but if it is a pain to load, it is not a good experience for the manager. I purchased extra long 28” drawer slides so that the user can pull out the trays and quickly load everything in a few seconds.
The stepper motors drive the soup coils to push the ramen. A4988 stepper motor drivers were initially used, but due to their loud noise and unreliability, it was switched to the TMC2209. The TMC2209 is a more modern stepper driver used on 3D printers to create smoother movements and almost no noise.
Instead of using an Arduino microcontroller, I wanted to challenge myself and use an STM32 Bluepill (STM32F103C8T6) using the STM32CubeIDE platform. I used the config GUI and HAL libraries to program the functionality. I created my own drivers to trigger the stepper drivers. I even used interrupt pins to increase button speed. All of these processes are trivial when using the Arduino IDE, but for the STM32, I had to ensure everything was correctly configured and dealing with interrupt flag issues.
The next step is to create a simple PCB that foregoes all the wiring to create a clean and reliable system. When debugging, I had a lot of inconsistency issues that could have been attributed to the breadboard and loose pins. I would also like to add a Particle Photon 2 for IoT capabilities, such as tracking how much ramen is left and updating remotely.