Back to Projects

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.

MechatronicsGantryPythonSolidWorksRaspberry Pi

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

Scent-o-Matic gantry assembly with oil reservoirs and pipette mechanism
The completed Scent-o-Matic gantry assembly showing the XY axis rails, oil reservoir array, and servo-actuated pipette positioned above the mixing zone.
Scent-o-Matic machine during the hackathon demonstration
The Scent-o-Matic during the live hackathon demonstration, showing the full machine setup including the Raspberry Pi touchscreen UI and vial output ramp.
Scent-o-Matic system diagram or CAD overview
System overview showing the mechanical layout, gantry travel range, and oil reservoir positioning relative to the pipette home and cleaning station.
Animated loop of the pipette dispensing cycle, showing the gantry positioning over an oil reservoir, the servo actuating to draw and dispense a measured volume, and the return to home position.

Tools & Methods

SolidWorksPythonArduinoRaspberry PiDRV88243D Printing

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