We set out to create a lamp that responds to emotional states through biometric sensing. The guiding question was:
What if your internal physiological rhythms could directly shape the atmosphere of your domestic space?
The idea emerged from a convergence of our research interests:
- Ivan's work on exo-organs explores how technology can externalize internal biological processes, making the invisible visible
- Hannah's research on technological intimacy questions how biometric data can create relational experiences rather than extractive ones
- Madlen's focus on domestic curation examines how everyday spaces are designed, controlled, and experienced
Rather than building another quantified-self device that turns your heartbeat into numbers on a screen, we wanted to create something atmospheric, ambient, and emotionally legible. If you're nervous or excited, the room's lighting would reflect that energy differently than when you're calm or sleepy. The artifact becomes a kind of extended sensory organ. A way of making your internal state perceivable to yourself and others in your environment.
As a reference to the spectrum, where we found people's perception on body modification and its relationship with the hypothesis of an intervention.
The guidelines for the ideation of the object took into account the concept of an organ and it's tissue composition, the ability to receive and communicate signals as a receptor to biometrics and later translation of data into sensorial outputs.
By consequence not only the device aknowledges your present state, it also rises the awareness of the wearer over its own phisical state, boosting the process of centering within one self.
Original version: THE MAGNETIC FIELD PROJECTION SYSTEM
The System Architecture:
- Input: Pulse/heart rate sensor connected to a person captures biometric data
- Processing: Raw sensor data (ADC values) sent to a microcontroller connected to an AI agent via MCP (Model Context Protocol)
Intelligence: AI agent converts raw ADC to BPM (beats per minute) and categorizes emotional states:
- 60-90 BPM = Calm;
- 90-120 BPM = Excited/Active;
- 120+ BPM = Anxious/Stressed;
- <60 BPM = Deeply relaxed/Sleepy.
- Output: Based on emotional category, manipulate an electromagnetic field to move small magnetic pearls in a petri dish into mood-specific patterns;
- Projection: The petri dish pattern projected through a lamp structure onto a wall, creating an ambient, morphing visualisation of internal state.
We began brainstorming lampshade designs and materials, experimenting with conductive wires in SCOBY (symbiotic culture of bacteria and yeast, a living, bio-material) as seen in our early prototypes. The idea was to create an organic, almost alive housing for the projection mechanism aligning with Ivan's exo-organ concept where technology becomes "biologized" rather than the body becoming "mechanized".
The material choice for coating the "wire-able" has been tested since December 2025 on weather it would be corosive or not to electronic circuits. As seen in the image above, there is a clear distinction between a coated wire from a non-coated one. Further producing the Aura input, we made sure the electronic system was projected from any leakage or erosion from a bacterial cellulose that is bio-active.
This vision was ambitious: combining electromagnetics, projection optics, AI categorisation, biometric sensing, and bio-materials into a single domestic ensemble. As you'll see in the sections below, the reality of a one-week intensive workshop led us to iterate, fail, pivot, and ultimately arrive at something both simpler and more direct.
Day 1: Building the Foundation: Agentic System + Prototyping Lamp StructureWe started coding the AI agentic system that would bridge biometric input and intelligent output. The plan was to:
- Read raw ADC (analog-to-digital converter) values from the pulse sensor on Pico A
- Establish an MCP (Model Context Protocol) server on the Pico 2 W
- Connect an AI agent (via Zapier or similar) to access the pulse data as a tool
- Have the agent convert raw ADC → BPM (beats per minute)
- Agent sends categorized state to Pico B to control magnetic field patterns
Initial Success: The basic MCP setup worked! We could establish communication between the Pico and the AI agent.
First Major Problem - Network Instability:
We were running everything over a phone's hotspot, which turned out to be a critical mistake. The Cloudflare tunnel (needed for MCP communication) kept getting interrupted because the hotspot aggressively shuts down when not actively being called. This created constant connection drops.
We couldn't use the IAAC Wi-Fi because it requires web login authentication, which the Pico can't handle programmatically. Lesson learned: This system would work fine with a standard home/office Wi-Fi network, but our testing environment became a blocker.
Second Major Problem - Pulse Detection Stability:
Even when the connection worked, we encountered a fundamental timing issue:
- The Problem: Pulse detection requires continuous sampling at 50-200 Hz with signal filtering to detect heartbeats reliably
- The Reality: An AI agent calling the MCP tool only 1-10 times per second (or irregularly) cannot provide reliable beat detection
- The Result: BPM values jumped erratically or stayed at 0 most of the time
The Solution (Architectural Revision):
We redesigned the system to split responsibilities:
- Pico A (Input): Runs a background sampling loop, continuously reads pulse sensor, stores the latest computed BPM/raw data in global variables, exposes
read_pulse_statevia MCP (the agent just reads the latest state, not real-time streaming) - Pico B (Output): Receives BPM value from agent, locally generates solenoid pulses (magnetic field rhythm) + LED strip pulses synced to that rhythm
- AI Agent (Zapier): Doesn't attempt real-time beat streaming (Zapier isn't fast enough), instead polls Pico A every few seconds and updates Pico B's BPM target
This decoupled architecture meant the pulse detection could run stably on the hardware while the AI agent acted as an intelligent intermediary, not a real-time processor.
(Code for this system available in attachments: Python Code for Agentic AI System)
Lamp Structures: The concept was to create a geometric, fragmented projection surface. The mirrors were cut and assembled with hot glue into modular structures that could scatter and multiply the projected light pattern from the petri dish.
Those same elements were designed to be displayed freely. Meaning, the three element set, allows wide range of configurations, also according to the interior infrastructure it was positioned in. Regarding the mirror/chrome surface, as a final product, they would be produced as a single sheet, with a layout to fold and reach its 3d shape.
We experimented with different angular configurations to see how the magnetic pearl patterns would appear when reflected and refracted through the mirror assembly.
We then focused on Pico B, which was supposed to be the output side of the system. We built and coded the circuit to control:
- A solenoid (electromagnet) via a MOSFET (transistor switch)
With the goal to create pulsing magnetic fields that would move small magnetic pearls through the medium in the petri dish.
The Sourdough Experiment
We added living sourdough to the petri dish as the medium through which magnetic pearls would move. This aligned perfectly with our conceptual framework:
- A living material responding to human biological rhythm
- Viscous enough to create slow, aesthetic movement
- Ties to domestic space (sourdough as bread-making, nourishment, care)
Test Result: When we tested mechanically (moving a magnet by hand under the dish), the pearls moved beautifully through the sourdough! The viscosity was perfect—slow, organic, almost meditative movement.
Day 2: The Magnetic Field ProblemThe solenoid circuit worked electrically, the MOSFET switched, the solenoid activated, but the magnetic field was too weak to actually move the pearls through the sourdough from beneath the petri dish.
We tried:
- Increasing voltage to the solenoid;
- Moving the solenoid closer to the dish;
- Reducing the amount of sourdough;
- Using fewer/lighter magnetic pearls.
None of it worked. The electromagnetic force just wasn't strong enough for the desired effect. The metal casing, even tho the solenoid was off, was locking the movement of the pearls.
Decision Point: Pivot Away from Magnetic Field
By the end of Day 2, we faced a hard choice:
- Spend Day 3 trying to source/build a stronger electromagnet (no guarantee of success);
- Abandon the magnetic field concept entirely and pivot to something we knew we could execute.
We chose Option 2. This meant:
- No magnetic pearls;
- No sourdough (no longer needed without magnetic movement);
- No electromagnetic field manipulation;
- Pivot to direct light control as the output.
The New Output: Instead of moving physical objects, we would use an addressable RGB LED strip (NeoPixel) inside the petri dish to create pulsing, rhythm-driven light patterns.
This was a significant simplification, but it had advantages:
- Reliable: We knew LED control worked;
- Still atmospheric: Pulsing light still creates ambiance;
- Direct mapping: Light rhythm directly mirrors heart rhythm (honest, literal translation).
After spending the morning trying once more to connect the AI agent to the MCP tool through the unstable hotspot connection, we made a final strategic decision:
Abandon the AI agent layer entirely.
Instead of:
Pulse sensor → Pico A → MCP → AI Agent → Pico B → LED output
Pulse sensor → Pico A → MCP → AI Agent → Pico B → LED output
We simplified to:
Pulse sensor → Pico A → LED strip in petri dish
Pulse sensor → Pico A → LED strip in petri dish
This meant:
- No AI agent categorizing emotional states;
- No network communication between Picos;
- Direct, real-time pulse-to-light mapping;
- Something that actually works.
The Trade-off:
We lost the intelligent interpretation layer (the AI deciding what 95 BPM "means"), but we gained immediacy and reliability. The light now pulses in exact sync with your heartbeat. There is no delay, no interpretation, just biometric translation.
Despite our initial enthusiasm for applying new techniques from Extended Intelligences II, the presented prototype demonstrated that traditional coding more effectively connects the project's intentions between inputs and outputs.
Initially, the concept of pure coding became secondary to the appeal of cutting-edge methodologies. An AI agent would be an essential addition for predicting and responding to a person's needs.
However, as a reactive device representing the wearer's pulses instantaneously, pure electronics proved to excel given the development time.
The Final Working System
The Hardware Setup:
Pulse sensor mounted in a wire-able earpiece (earlobe placement for stable pulse reading).
- Pico 2 W (Pico A) reads the sensor via ADC pin 26;
- NeoPixel LED strip (6 addressable RGB LEDs) connected to GPIO pin 14;
- LEDs placed inside the petri dish;
- External 12V light source (wall socket powered) shines through the petri dish;
- Light is projected through mirror structure onto a wall.
Software Behaviour (see attached code):
The Pico runs a continuous sampling loop at 100 Hz, implementing:
Contact Detection (Gating Mechanism):
- Sensor is VERY sensitive to light pollution, pressure, and contact quality.
Code implements hysteresis-based "touch detection" using peak amplitude:
CONTACT_PEAK_ON = 1200(signal must exceed this to count as "touched");CONTACT_PEAK_OFF = 700(must drop below this to count as "not touched");- Touch must persist for 600ms to register; release must persist for 1200ms;
- Only when touched does the system attempt beat detection;
- This prevents false beats from environmental noise;
- Pulse Detection:
Reads raw ADC value from pulse sensor;
Calculates dynamic baseline using exponential smoothing;
Centers signal around baseline;
Tracks peak amplitude with decay;
Detects beats when signal crosses threshold (35% of peak, minimum 60);
Implements 350ms refractory period (prevents double-counting single heartbeat); - BPM Calculation:
Stores last 8 inter-beat intervals (IBI);
Rejects intervals outside physiological range (273-2000ms = 30-220 BPM);
Averages valid intervals to calculate BPM;
Resets if no beat detected for 2.5 seconds (signal likely lost). - LED Output:
On beat detection: Flashes LEDs red(255, 30, 30)for 80ms;
Between beats (when touched): Shows dim idle glow(10, 10, 40)at 12% brightness.
When not touched: Very dim idle at 5% brightness (or off);
LEDs pulse in exact real-time sync with detected heartbeat.
Physical Form:
- Earpiece: Wearable housing for pulse sensor (earlobe placement);
- Petri Dish: Contains NeoPixel LED strip, visually diffuses the pulsing light;
- Mirror Structure: Geometric assembly of small pocket mirrors (cut and hot-glued), reflects and refracts the petri dish light onto wall;
- External Light: 12V constant light source illuminates petri dish for projection (does not respond to pulse—ran out of time to integrate).
Soldering for Stability;
With the core functionality working, we focused on making the system more robust and documenting our process.
The Breadboard Problem:
Throughout Days 1-3, we'd been prototyping on a breadboard with jumper wires connecting the pulse sensor, Pico, and LED strip. This was fine for rapid iteration, but the connections were:
- Extremely fragile (wires came loose constantly);
- Messy (difficult to see signal vs. power vs. ground);
- Unreliable for demonstration (any movement could break contact).
Solution: Direct Soldering
We decided to solder all connections directly to the Pico pins, eliminating the breadboard entirely. This would create a more permanent, stable assembly.
The Process:
- Stripped and tinned all wire ends;
- Soldered pulse sensor wires to ADC pin 26, 3.3V, and GND;
- Soldered NeoPixel strip to GPIO 14, 5V (VBUS), and GND;
- Added strain relief with hot glue at solder joints.
The Challenge:
We had to redo the soldering multiple times. The issues:
- Cable management: With everything soldered directly, the wire routing became tangled and messy;
- Fragility: Some solder joints were cold (not enough heat) and broke when flexed;
- Debugging: Once soldered, it was harder to isolate which connection was causing problems.
Each time a connection failed, we had to desolder, clean the pads, and re-solder more carefully. This was tedious but necessary.
After the Unpacking Tech Systems, we aimed to expand the project into what it would be as an electronic circuit. This ment excluding the breadboard from the presentation. The fast-paced chase in between production and coding, turned the project into a very delicate prototype.
Unexpected Problem: Sensor Degradation
When we tested the fully soldered system in the late morning, the pulse sensor became significantly less reliable than it had been on Day 3 with the breadboard.
Possible causes we identified:
- Heat damage: The pulse sensor's photodiode or LED might have been damaged during soldering (too much heat conducted through the wires);
- Wire stress: Soldering created tension on the sensor's delicate internal connections;
- Contact quality: The earpiece housing might have shifted slightly, changing pressure/angle on the earlobe;
- Accumulated wear: After 3 days of constant testing, the sensor itself might have degraded (these cheap pulse sensors aren't designed for continuous use).
We were able to get some readings, but they were less consistent than before. The contact detection gating helped (it wouldn't flash on noise), but finding the "sweet spot" of pressure and position took longer.
Lessons learned when working with fragile analog sensors:
- minimize heat exposure during soldering and test frequently during assembly.
- Consider using connectors (JST plugs) instead of direct soldering for components that might need replacement.
This week-long intensive workshop gave us a working prototype, but it's far from the complete vision. With more time and resources, here's what we would develop:
1. Make the MCP System Work (Untethered Operation)
Current limitation: The earpiece must stay connected to a computer running the code.
Goal: Create a fully standalone wearable system using the original MCP architecture:
- Pico A (in earpiece) runs pulse detection and hosts MCP server;
- Connects to stable Wi-Fi network (home/office, not hotspot);
- AI agent (Claude via Zapier, or local LLM) accesses pulse data as a tool;
- Agent interprets emotional states and sends control signals to Pico B (in lamp);
- Result: Wearable earpiece communicates wirelessly with room lighting, no laptop required.
What we learned: The code architecture for this already works; we just need proper network infrastructure. With a standard Wi-Fi setup (not university portal login or phone hotspot), the Cloudflare tunnel connection should be stable.
2. Integrate External LED into Pulse Response
Current limitation: The 12V external light is constant, not pulse-responsive.
Goal:
- Control the 12V light using a relay or PWM dimmer circuit triggered by Pico
- Sync brightness or pulse pattern with heartbeat
- This would create a dual-layer effect: NeoPixel strip inside petri dish + external projection light both responding to pulse
- More dramatic atmospheric impact on the wall projection
Implementation: Add a MOSFET or solid-state relay to Pico's output, triggered on the same beat detection that fires the NeoPixels.
3. Build a Better Lamp Structure
Current limitation: The mirror structure is rough prototype-quality, hot-glued pocket mirrors create an interesting but chaotic reflection.
The structure could be elevated into a laser cutted metallic sheet, polished and coated for a chrome and reflective finish.
Goal:
- Design a more intentional optical system for the projection
Options to explore:
- Precision-cut acrylic or glass mirrors at calculated angles
- Fresnel lens to focus/diffuse the petri dish light
- Enclosed lampshade structure that contains all components (petri dish, LED, mirror assembly)
- Adjustable projection distance and focus
- Create a cohesive physical form where the earpiece and lamp feel like parts of a unified system (shared material language, aesthetic)
Fabrication: This could involve laser-cut components, 3D-printed optical mounts, possibly CNC-milled aluminum for structure.
4. Implement the Magnetic Field (Original Vision)
Current limitation: Solenoid electromagnet was too weak to move pearls through sourdough.
Goal: Return to the magnetic pearl movement concept with proper electromagnetic components.
Solutions to explore:
- Stronger electromagnet: Salvage from a hard drive actuator, relay, or electric door lock (much stronger than hobbyist solenoids)
- Multiple coils: Array of smaller electromagnets positioned around/beneath the petri dish, selectively activated to "steer" pearls
- Neodymium magnet on servo: Instead of electromagnets, use a strong permanent magnet on a servo motor arm to physically move beneath the dish
- Ferrofluid: Replace magnetic pearls + sourdough with ferrofluid (magnetic liquid) for more dramatic, organic movement
- Reduce viscosity: Thinner sourdough starter or alternative medium (agar gel, glycerin solution) requires less magnetic force
Conceptual Relevance:
The magnetic field version is richer symbolically:
- Physical movement (not just light) = tangible manifestation of internal state
- Living sourdough = biological material responding to biological rhythm
- Emergent patterns = your nervous system literally shaping matter
- More aligned with Ivan's exo-organ concept (technology as biological extension, not just digital interface)
What we learned: We weren't far off. The system architecture worked (detect pulse → send signal → activate output). We just underestimated the electromagnetic force required. With industrial-strength components or a redesigned mechanical approach, this is absolutely achievable.
5. PCB design and wireless connection
Convert the circuit into a packable and organised element of the device ensemble;
Cut the umbilical cord of the prototype (from input to output), so the individual can walk freely in a space without being attached to the light installation.
6. Additional Explorations
Beyond fixing what didn't work, there are conceptual expansions worth exploring:
- Multi-user sensing: Multiple earpieces in a shared space, their combined rhythms creating a collective atmospheric field (what does a room full of heartbeats look/feel like?);
- Biometric memory: Record pulse patterns over time, replay past emotional states (what did your heartbeat look like during that conversation? That movie?);
- Threshold alerts: Not for health monitoring, but for self-awareness, like subtle light changes when your heart rate indicates stress you haven't consciously noticed yet;
- Other biometric inputs: Skin conductance (arousal), temperature (circulation), breath rate (via chest expansion sensor) could build a richer somatic picture.
We pivoted twice, from magnetic field to LED, from AI agent to direct mapping. Each pivot felt like "giving up" in the moment, but the final system is more honest and immediate because of it.
Making something that touches your body and responds to your body is hard. Sensors are finicky. Contact matters. Skin is different every day. The technical challenges of biometric sensing forced us to think deeply about intimacy, trust, and the vulnerability of letting technology "read" you.
We wanted to create infrastructure, not a gadget. The difference is that infrastructure is ambient, persistent, woven into the background and doesn't demand attention. It just is. Whether we succeeded is an open question, but that framing of biometric rhythm as utility, not novelty guided our decisions.
Three different research lenses (exo-organs, biometric intimacy, domestic curation) could have pulled in three directions. Instead, they converged on a shared question: How do we make the internal external in a way that feels relational, not extractive?
That alignment made iteration possible, even when we were cutting features.













Comments