LUMEN BREATH — an Interactive Spatial Light Column Device Based on the Tyndall Effect

by smartasianboiii in Workshop > Tools

17 Views, 0 Favorites, 0 Comments

LUMEN BREATH — an Interactive Spatial Light Column Device Based on the Tyndall Effect

cover.jpg
图片1.png

We built a desktop-scale interactive spatial light installation! We call it LUMEN BREATH — an interactive spatial light column device based on the Tyndall effect. It draws an ultra-fine, transparent, perfectly suspended ray of light through the air, and automatically switches its fill-light mode in response to ambient illumination, endowing the light itself with breath and dynamic life.

We designed this project to step away from the traditional, function-oriented optical research instrument paradigm and evolve it into a teamLab-style optical art installation. It is no longer dependent on natural conditions or specific viewing angles, nor limited by weather or day–night cycles. Instead, it operates around the clock and never dies. It can serve equally well as a piece of desktop art or as an exhibition-grade interactive medium, inviting the viewer to stop and gaze at a suspended ray of light at any moment.

Supplies

Building this installation requires only a handful of common electronic components and optical parts. The overall structure is clean, the wiring is simple, and the Arduino board handles almost all the control logic for us.

Hardware:

  1. HE-30A Ultrasonic Mist Module (the core mist generator — produces a stable micron-level water mist inside the acrylic tower, which is the medium that carries the Tyndall effect)
  2. PMMA Transparent Acrylic Square Tube (50 × 50 × 400 mm, wall thickness 2 mm — serves as the “Tyndall Column Tower”, providing a sealed micro-climate environment)
  3. 50 × 50 mm Fresnel Lens, focal length 40 mm (the first-stage large Fresnel lens, responsible for large-area light collection)
  4. 50 × 50 mm Fresnel Lens, focal length 99 mm (the second-stage Fresnel lens, responsible for core collimation and precise beam compression)
  5. WS2812 LED Ring (16 LEDs) (the top light-source layer — individually addressable full-colour LEDs that realise dual-source intelligent switching and colour-breathing effects)
  6. 4010 Micro Fan Module (assists in guiding airflow inside the tower, building a slow and stable rising airflow)
  7. Arduino Uno R3 Development Board (the “central brain” of the system, coordinating all sensors and actuators)
  8. LM393 Infrared Photo-Comparator Module (ambient brightness sensing — judges day/night state to trigger automatic fill-light)
  9. Dupont Wires (for connections between modules)
  10. Frosted Glass Stickers (applied to the acrylic tube surface or internal baffle, softens light spots and prevents stray reflections)

Software:

Arduino IDE (for writing, compiling and uploading code to the Arduino Uno R3)

FastLED library (the core library for driving the WS2812 LED ring — installable in one click via the Library Manager)

Pure Optics — Tuning the Dual-Lens Light Path

图片2.png
图片3.png

The “soul” of the entire installation is the Tyndall light column, and the foundation of that column is a clean, stable, non-divergent light path. So the very first step does not involve any complex circuitry — we manually test the dual-lens system alone and “tame” the scattered light into a suspended column.

Optical principle: the WS2812 LED ring on top acts as the “dual-source inlet” emitting scattered light; the first stage (40 mm focal-length large Fresnel lens) collects the light over a wide area and gathers the otherwise scattered rays; the second stage (99 mm focal-length small Fresnel lens) serves as the core collimation element, further compressing and shaping the beam, finally outputting a perfectly straight, loss-free column of light in space.

Alignment tips:

1、Fix the LED ring as the light source first, then place the two Fresnel lenses in order.

2、Adjust the spacing between the two lenses by hand, repeatedly, until the light spot projected onto a wall is small and sharp.

3、Do not mount a lens the wrong way around! The grooved face of a Fresnel lens should always face toward the focal point.

4、You can apply a small piece of frosted glass sticker inside the acrylic tube as a visual aid during alignment.

Pneumatic Canvas — Building a Stable Tyndall Effect

图片4.png

Once the light path is clean, the next job is to make the column visible. We use the PMMA high-transparency acrylic square tube to build a sealed “Tyndall Column Tower”, and create a tiny climate system inside: mist enters from the bottom, rises slowly through the middle, and exits gently through the top.

Assembly steps:

1、Build the tower: fix the 50 × 50 × 400 mm PMMA transparent acrylic tube vertically on the base, fully sealed except for a mist inlet at the bottom and a micro-vent at the top.

2、Install the atomiser: fix the HE-30A mist module at the base of the tower so that the ultrasonically produced micro/nano mist enters the tower evenly from below.

3、Install the fan: mount the 4010 micro fan on top of (or on the side of) the tower as the top micro-vent. It slowly exhausts air to keep internal pressure balanced and assists in forming an extremely slow, stable rising airflow.

4、Apply frosted layer: stick frosted glass film on parts of the outer wall of the acrylic tube. This effectively softens external light leaks and eliminates stray reflections, making the suspended light column look purer.

Key principle: the mid-section of the tower develops an extremely slow yet stable rising airflow — this is the secret behind the floating energy column. Mist particles suspend evenly in this airflow; when they encounter the compressed beam from above, the Tyndall effect appears, and a true ray of light suspended in the air is born.

All-Weather Hub — Adding Environmental Sensing and Auto Fill-Light

图片5.png

As beautiful as a pure light column is, it remains at the mercy of changes in ambient illumination. Under bright daylight the column gets washed out; in dark or cloudy environments it becomes harshly bright. So we introduce an “auto fill-light” mechanism, allowing the installation to run all day and never go out.

Wiring: connect every module to the Arduino Uno R3:

WS2812 LED ring: data line to pin D6, VCC to 5 V, GND to ground.

4010 fan module: signal line to pin D5 (PWM), VCC and GND to power and ground respectively.

LM393 photo-comparator module: digital output DO to pin D2, VCC to 5 V, GND to ground.

HE-30A mist module: powered by an independent supply (to avoid loading down the Arduino), switched manually or extended later through a relay.

Tip: the LM393 module has a built-in trim potentiometer. Turn it to set the bright/dark threshold. We recommend tuning it on-site so that the output is 0 when the room is bright and 1 when it is dark.

Injecting the Soul — Writing and Uploading the Code

图片6.png

Now it is time to bring the hardware to life. We use the Arduino IDE to write the control program. It drives the LED with colour cycles that feel alive, micro-tunes the airflow with the fan, and switches between “warm-white fill-light” and “colourful breathing” modes in real time according to the photo sensor.

Configuring the Arduino IDE:

1、Install the Arduino IDE (download from the official website).

2、Under Tools → Board, select Arduino Uno.

3、Under Tools → Library Manager, search for and install FastLED.

Full source code:

#include <FastLED.h>
#define NUM_LEDS 16
#define DATA_PIN 6
#define FAN_PIN 5
const int sensorPin = 2;
#define BRIGHT_WHITE 18
#define BRIGHT_COLOR 50
CRGB leds[NUM_LEDS];
uint8_t hue = 0;
int val = 0;
int lastVal = 0;
void setup() {
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
pinMode(sensorPin, INPUT_PULLUP); // enable internal pull-up, no floating
pinMode(FAN_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
val = digitalRead(sensorPin);
// simple debounce: act only when two consecutive reads match
if(val == lastVal){
int state = val;
Serial.println(state);
bool isDark = (state == 1);
hue++;
if (isDark) {
FastLED.setBrightness(BRIGHT_COLOR);
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV(hue + i * 14, 135, 220);
}
} else {
FastLED.setBrightness(BRIGHT_WHITE);
fill_solid(leds, NUM_LEDS, CRGB(255, 230, 190));
}
FastLED.show();
uint8_t fanSpd = map(hue, 0, 255, 40, 44);
analogWrite(FAN_PIN, fanSpd);
}
lastVal = val;
delay(50);
}

How the code works:

Light judgement: the LM393 module is read as a digital level. Only when two consecutive reads agree does the state update (debouncing), preventing false triggers from flickering ambient light.

Dark mode (colour breathing): when ambient light is low, the LED ring runs a rainbow flow at higher brightness, paired with the mist to evoke a “life in slumber” colour-breath.

Bright mode (warm-white fill): when ambient light is sufficient, the LED ring switches to a warm white (RGB 255, 230, 190) at lower brightness, keeping the light column visible even under natural light.

Fan micro-tuning: the fan PWM oscillates subtly between 40 and 44, producing a gentle “breathing” pulse in the airflow and giving the column a life-like rhythm.

Assembly and Iterative Debugging

Once the code has uploaded successfully, assemble every module according to the four-layer structure:

Layer 1 — Top light source: the WS2812 ring together with the dual-source intelligent switching logic.

Layer 2 — Dual-lens collimator: two Fresnel lenses fixed beneath the ring, responsible for light collection and precise beam shaping.

Layer 3 — Tyndall column tower: the PMMA acrylic tube + the HE-30A mist module at the base + the 4010 micro-vent fan at the top, forming the airflow-and-mist generation field.

Layer 4 — Base interaction layer: the Arduino Uno R3 and the LM393 photo module are hidden inside, acting as the electronic hub and environment-rendering engine.

Debugging tips:

1、Power n each module separately first (does the LED light up? does the fan spin? does the atomiser produce mist? does the photo sensor trigger?), then combine them.

2、Lens position must be fine-tuned repeatedly — a 1–2 mm offset already noticeably affects the column.

3、Too much mist makes the column blurry; too little, and it does not show at all. Tune the atomiser until you see a “gentle mist”.

4、If the mist inside trembles violently, the fan is too fast — lower the PWM (the 40–44 range in the code can be reduced).

How to Use Your LUMEN BREATH

图片7.png

After assembly, power it on. The device automatically cycles through three states — like an optical creature with a life of its own:

Standby → Awaken → Perpetual: the three-node interactive life logic

  1. Standby: in idle state, the device shows a faint warm breathing light and very light mist — like life in slumber.
  2. Perpetual: when the LM393 detects insufficient ambient light, the LED fill-light automatically engages and keeps the column at high brightness — the art installation never goes out.
  3. Awaken (extension mode): in the future, a microphone module can be added. When sound is detected the column suddenly intensifies, the base RGB ramps to blue-white, and mist output surges — the energy core is activated.

Power consumption and longevity: since both the LED and the atomiser are designed for long runtimes, the device can serve as a night light, desktop sculpture, or exhibition piece for extended periods. If no one is watching for a while, you can add a timed sleep routine to the code and wake it only when the environment changes.

Conclusion: Reshaping Light Into a Medium

This project attempts to translate the otherwise invisible process of light propagation into an interactive visual structure in space.

The system uses the Tyndall effect to make the light path itself visible, and combines environmental sensing with automatic fill-light to give the device a sense of breath and dynamic life.

It is not merely an optical experiment — it is a spatial medium that fuses physics, aesthetics and interaction design.