Scent-o-Matic — Custom Fragrance Vending Machine
IAP Hackathon build: automated XY gantry and pipette system for custom perfume mixing. 6,748 possible scent combinations.
Overview
The Scent-o-Matic is a custom perfume vending machine built in 2.5 days at the Formlabs IAP Hackathon at Olin College. A motorized XY gantry with a servo-actuated pipette measures and dispenses fragrance and carrier oils into a vial, producing a ready-to-use custom perfume from user-selected ingredients.
Project Specs
- Team: Mateo Otero-Diaz (MechE), Kefan Wu (MechE), Jack Wei (ECE), Jacob Keller (ECE). Team name: “The Scent-a-Tubbies”
- Primary goals: Deliver a fully automated perfume-mixing MVP within a 2.5-day sprint, integrating the mechanical gantry, electrical motor control, and Raspberry Pi UI into a single working system
- Project artifacts: Working MVP demonstrated at hackathon, SolidWorks CAD, Python and Arduino firmware, Raspberry Pi touchscreen UI
The Machine
Inspired by the premium pricing of custom perfume shops, the Scent-o-Matic automates the actual mixing process to make a custom fragrance experience accessible and instant. A user selects up to 6 fragrance oils at intensities 0–5 through a touchscreen, and the gantry automatically pipettes the correct proportions of scent and carrier oils into a vial dispensed to the user via a ramp. With 6 scent choices at 6 intensity levels, the system supports 6,748 unique scent profiles.
Mechanical Design
The gantry provides XY positioning to align a servo-actuated pipette over the correct oil reservoir. Each oil was individually characterized to relate servo rotation to dispensed mass, accounting for density variation between oils. A ramp and paddle barrier guides the filled vial to the user pickup zone after dispensing. A cleaning cycle uses a water reservoir at a known XYZ position to flush the pipette between oils, with waste directed to a dedicated waste vial.
My role covered the mechanical design and integration: gantry structural layout in SolidWorks, pipette mount, oil reservoir fixturing, and fabrication of 3D-printed structural components.
Electrical & Software Integration
- Raspberry Pi running Python for UI and high-level sequencing; serial connection over USB to Arduino for low-level motor control
- Touchscreen UI for scent selection and intensity input
- DRV8824 stepper driver for gantry axes with tuned current limits; servo motor for pipette actuation
Issues & Pivots
The compressed build timeline required real-time problem-solving. The primary linear actuator overheated and was replaced mid-build with a rack-and-pinion mechanism. A press-fit tolerance issue on the roller-ball vial cap was resolved manually. An incorrect print setup was caught and corrected. On the electrical side, the DRV8824 current-limit pot was tuned to a safe operating level, and Raspberry Pi–Arduino communication was stabilized over USB serial.
Results
The team delivered a functional MVP at the end of the 2.5-day sprint. The machine successfully mixed a custom perfume from user-selected ingredients through the fully automated gantry-and-pipette process, demonstrated live at the hackathon.
Lessons Learned
- Verify BOM part availability and compatibility before build day
- Healthy working habits prevent compounding errors in fast-paced builds
- Account for mechanical interference early in dense multi-component mechanisms
- Establish electrical architecture and debugging process before integration
- Prioritize key features to reach MVP; avoid scope creep on non-critical details
Next Steps
- Integrate automatic vial loading system
- Replace linear actuator fully with rack-and-pinion for long-term reliability
- Increase X-axis travel to support more oil slots
- Package screen and electronics into a polished enclosure
- Automate roller-ball cap press-fit as a stretch goal
Project Media



Tools & Methods
Build followed rapid-prototyping methodology over a 2.5-day sprint.