Currently in collaboration with the MIT Media Lab Responsive Environments Group.
Sweat-to-Scent Interface is a research-led olfactory machine that translates athletic exertion into scent. A wearable patch collects sweat while sensors read heat, humidity, movement and conductivity. These signals are interpreted as shifting body states, and a constrained AI composes a scent recipe that a transparent four-pump machine physically mixes. Rather than reducing the body to perfomance metrics, it makes a volatile portrait of effort - a somatic archive that can be smelled, carried and remembered.
01 · The idea Not a fitness tracker, not a medical device. A somatic olfactory machine that treats sweat, heat and movement as a bodily archive — translating exertion into an olfactory language.02 · How the system flows Body in exertion → wearable sweat patch → sensors (heat, humidity, movement, conductivity) → baseline-normalised signals → body-state model → constrained AI composes a recipe → four pumps dispense diluted oils → a scent vial / card to take away.03 · The wearable patch A sweat-collection patch gathers bodily residue: a mesh skin layer and absorbent pad wick sweat into a small reservoir, with a dry pocket for the electronics. Built to keep sweat sealed on the body side and the sensing reliable.04 · Sensing the body Heat and humidity (BME280), movement intensity (LSM6DS3 IMU), skin/pad temperature (DS18B20 probe) and sweat conductivity (DFRobot TDS via an ADS1115 ADC). The sensors don't read sweat perfectly — they offer interpretive signals, read against personal baselines rather than universal thresholds.05 · Reading exertion (not diagnosing it) A deterministic layer first classifies the readings into six body states — quiet baseline, warm-up, sustained endurance, thermal strain, recovery, or ambiguous. When signals conflict, the system stays with ambiguous rather than forcing a confident answer.06 · AI as scent composer The model isn't the scientist — it's a constrained composer. Within strict rules (only the four scents, percentages summing to 100, careful language, no medical claims) it returns a recipe as JSON, with a confidence and a one-line rationale.07 · The machine A transparent cast-acrylic enclosure (240 × 320 × 140 mm) holds four scent reservoirs above a pump shelf, with the electronics bay and a central mixing vial. Made transparent on purpose — the process is meant to be watched.08 · The four scents Each oil marks a quality of effort: green tea — cooling, recovery, return to baseline; cedar — endurance, rhythm, structure; mineral / ozone — sweat, salt, the electrical body; smoke / oud — strain, friction, the fatigue edge. Oils are diluted in DPG (~20%).09 · Pumps and electronics A Seeed XIAO ESP32S3 drives a four-channel MOSFET board and four 12V peristaltic pumps, with an OLED, rotary encoder and button for control. Pumps are timed to the composed recipe.10 · The live visual A somatic chromatogram in TouchDesigner: capillary channels, heat bloom, salt and mineral traces, pump-activation pulses and scent-vector columns — driven live over OSC by the same sensor and recipe data.11 · The output A scent vial or printed card: the body state, the recipe, a short trace, a time. A volatile data object — an exertion portrait you can carry and re-smell.
Arduino IDE code for working prototype system using an ESP32-S3.Working prototype integrating OLED interface, rotary encoder, MOSFET driver and peristaltic pump.
Close up of scripted code showing on the OLED screen. Showcasing the Sweat-to-Scent menu, options and process of mixing.
Sensor readings are normalised against personal baselines and classified deterministically into one of six body states — warm-up, endurance, thermal strain, recovery, quiet baseline, or ambiguous.The code holds the logic, not the interpretation: when signals conflict it returns ambiguous rather than forcing a result.The body state is passed to a constrained language model acting as a scent composer. It works within strict rules — only the four available scents, percentages summing to 100, no medical claims — and returns a recipe as JSON.Each output carries a confidence and a one-line rationale in careful language — 'anchors,' 'marks,' 'traces' — keeping the system poetic but disciplined.