VendiBaddie
Team E5: Anna Cai, Ashira Johara, and David Zhang
18-500 Capstone Design, Spring 2025
Electrical and Computer Engineering Department
Carnegie Mellon University
System Architecture
Product Pitch
Many students often struggle to maintain focus during long study sessions, leading to reduced productivity and motivation. Existing solutions often lack real-time user engagement and reward mechanisms that encourage session completion.
The Vendibaddie is a personal vending system that aims to tackle this issue, incentivizing focus and encouraging more structured studying through providing timed countdown study sessions enabled by user presence, reward based snack dispensing, and an all-in-one built-in UI designed to minimize distractions.
We aim for our solution to meet use case requirements which specify standards for UI functionality, timer and presence detection accuracy, physical size, as well as visual and auditory signal response times. With all components functional and integrated, we aim for our solution to have a 90% success rate in being able to accurately carry out a timed study session and dispense a selected snack, with a 10 second limit between session end, sound & light notifications, and snack dispensation.
Our vending machine is comprised of the laser cut physical enclosure, motors (one per snack selection) to dispense snacks, a pair of I2S speakers and LED strips to notify the end of a session, a PIR sensor to detect user presence throughout the session, as well as a touchscreen display, which hosts a custom built GUI for users to interact with and choose their snack & session settings.
https://course.ece.cmu.edu/~ece500/projects/s25-teame5/
System Description
System Evaluation
Conclusions & Additional Information
Our implementation is built around a Raspberry Pi 4 (RPi 4) as the central controller. It interfaces a touchscreen displays which runs a custom user interface built with a PyQt framework, providing session control, preferred reward selection options, and system feedback. Additionally, the RPi is directly connected with 6 motor drivers via GPIO pins, each responsible for driving a corresponding NEMA 17 stepper motor that dispenses snacks by rotating an aluminum coil. Moreover, LEDs and speakers offer visual and auditory cues to show different states of the machine. Passive infrared (PIR) sensors also monitor the user’s presence, pausing the timer based on infrared radiation detection to create a sense of accountability within the user.
We conducted over 20 iterations for each of our metrics. For snack dispensing, we found that the target holding torque was sufficient to dispense both heavy and light snacks; however, if a snack compressed the spring mechanism–regardless of size or weight–the dispensing would face issues.
Over the course of our project, we built a prototype of a personal vending machine from scratch. Through this process, we learned the importance of breaking down large tasks into smaller milestones to stay on schedule. We also realized that communication was critical to adjust to challenges, plan contingencies, and support one another to keep the project moving forward. Last but not least, that starting early is never too early. If continued, VendiBaddie could evolve into a more compact personal machine with a more accessible UI, potentially integrating with a web app or using ML to optimize the user’s experience or rewards based on study habits.
Use-Case Requirement Testing:
Back
Front
LED strip
Touchscreen
NEMA 17 Motors
PIR sensor
I2S speakers
Metric | Target | Actual |
UI functionality | 90% | 100% |
Timing consistency | ≤ 500ms | ~500ms |
User detection range | ≤ 1m | varies* |
Delay after user leaves | ≤ 1s | varies* |
Snack capacity | 3 × 6 types | ~3 × 6 |
Time to dispense snack | ≤ 10s | ≤ 5s |
Snack dispensing torque | ≥ 25in-oz | ~25in-oz* |
Notification feedback latency | ≤ 1s | ≤ 1s |
Design Requirement Testing:
System | Test Inputs | Passing Requirements |
Session Timer | Starting timed sessions at 25, 30, & 45 min | Timer displays and counts down with ≤0.5s latency |
Touchscreen | Touch event simulations at various points | Accuracy ~ 9 out of 10 trials |
Stepper motor | Push snack to last coil | Motor produces desired rotation to dispense snack |
PIR Sensor | User leaves detection range | Timer pauses if no detection registered |
Touchscreen Integration Test | Target touch event handling | Properly processes inputs and triggers outputs with ~90% accuracy |
System Integration Test | Timer completion signal to notification system | Motor rotation for 1 portion dispensation, LED and audio feedback are triggered |
End-to-End Test | Start timer, test pausing capability, allow countdown to reach 0 | 1 snack dispensation per study session + notification system through LEDs and sound |
Key GUI screens