This repository provides the open-source hardware and software materials for Kaolid+, a lid-type olfactory interface that routes aroma either toward the nose (orthonasal) or through a Y-shaped straw (retronasal) while illuminating the beverage with an RGB light, in order to modulate the perceived sweetness of a drink.
Kaolid+ is a cup-lid device, housed in a 3D-printed enclosure, integrating:
- Olfactory unit — a compact piezoelectric air pump pushes air through a scented cotton pad in a scent container; the aroma is routed either toward the nose (orthonasal) or into a Y-shaped straw (retronasal).
- Visual unit — an RGB LED illuminates the beverage from the lid (no-light / orange / blue conditions).
- Control unit — a SparkFun Pro Micro reads a manual switch and drives both the pump (via a transistor and a boost/driver circuit) and the RGB LED.
kaolid/
├── hardware/
│ ├── cad/ 3D models of the lid, cover, scent container
│ ├── electronics/ Schematics, wiring diagrams, BOM
│ └── assembly/ Step-by-step assembly guide
├── firmware/ Arduino sketch (SparkFun Pro Micro) + flashing notes + reproducing the experiment
└── docs/ Figures, photos, supplementary documentation
| Component | Part used in the study | Notes |
|---|---|---|
| Air pump | Murata microblower MZB1001T02 (piezoelectric diaphragm) | Driven at 14 V, ~1.6 kPa |
| Microcontroller | SparkFun Pro Micro 5V / 16 MHz | Reads the switch, drives pump + LED |
| RGB LED | OptoSupply OSTAMA5B31A (5 mm, common-anode) | 8-bit value per channel |
| Pump driver | Transistor + boost converter | Piezo pump cannot be driven directly by the MCU |
| Enclosure | 3D-printed lid body, cover, scent container | See hardware/cad/ |
| Straw | Custom Y-shaped straw | One branch = beverage, one branch = aroma airflow |
The LED is common-anode with the cathodes wired to the PWM pins, so in the
firmware a lower analogWrite value is brighter (0 = full on, 255 = off).
These are the actual values used to reproduce the colors:
| Condition | R | G | B |
|---|---|---|---|
| No light | 255 | 255 | 255 |
| Orange | 30 | 220 | 255 |
| Blue | 255 | 255 | 0 |
hardware/cad/— 3D models (editable source (Autodesk Fusion), STL).hardware/electronics/— schematics, wiring,BOM.csv.hardware/assembly/— assembly guide.
4. Firmware — firmware/
Kaolid+ is controlled by a single Arduino sketch on a SparkFun Pro Micro (5 V / 16 MHz); there is no separate PC application. The microcontroller reads a manual tact switch and locally drives the RGB LED and the air-pump transistor.
Aroma is delivered while the switch is pressed and held during sipping. The piezoelectric pump
cannot be driven directly by the MCU, so it runs through a boost/driver circuit
at 14 V (~1.6 kPa). The RGB LED is an OptoSupply OSTAMA5B31A 5 mm
common-anode LED; the visual condition is selected by uncommenting the
matching block in setup() and re-uploading.
| Pro Micro pin | Function | Note |
|---|---|---|
| 3 | RGB common anode | held HIGH as a pseudo-Vcc |
| 5 | Red cathode | 330 Ω series resistor |
| 6 | Green cathode | 680 Ω series resistor |
| 9 | Blue cathode | 270 Ω series resistor |
| 2 | Tact switch | INPUT_PULLUP; LOW = pressed |
| 4 | Pump transistor | HIGH = pump on |
- In the Arduino IDE, install Arduino Micro and select Pro Micro (5 V, 16 MHz) with the correct port.
- Open
firmware/src/kaolid_controller.ino, uncomment the desired condition block, and click Upload. - Press and hold the switch while sipping to run the pump.
See firmware/README.md for the full RGB value table.
- Print and assemble the hardware.
- Flash the firmware.
- Follow the 8-step preparation in
hardware/assembly/assembly-guide.md. - Run the six conditions (C1–C6) described in the paper.
This work was supported by JST, PRESTO Grant Number JPMJPR21P7, Japan.