Physical 3D LED Block Campfire
Forget cheap LED tape stuffed inside plastic boxes. A museum-grade campfire requires 100% full-surface, edge-to-edge volumetric luminescence with zero dark corners, controlled dynamically across 3D space by a high-speed Central Electronic Brain.
The Central Electronic Brain
A believable campfire cannot run isolated, unsynchronized animations inside each block. The installation relies on a powerful Central Electronic Brain concealed within the base plinth. The brain computes a continuous, physics-driven 3D thermal noise fluid simulation across the entire hearth, treating every facet of every block as a high-resolution surface voxel sampling the global flame field.
• Local MCU: ATTiny1616 Slave Node
• Color: 1800K Planckian Crimson
• Local MCU: ATTiny1616 Slave Node
• Color: 2400K Warm Golden Flame
• Local MCU: ATTiny1616 Slave Node
• Color: 3200K Plasma White Sparks
The central brain handles 100% of mathematical modeling (Simplex noise, heat equations, audio synthesis). Individual blocks act as lightweight, ruggedized display nodes.
Using differential RS-485 / DMX512 ensures microsecond latency and immunity to electrical noise over exposed magnetic contacts, preventing flickering or packet loss.
Add 3 logs or 20 logs. The central brain dynamically scales the 3D bounding box and auto-assigns address offsets without reflashing firmware.
Full-Surface Optics: Eliminating The Strip Light Flaw
Why Internal LED Strips Look Wrong
- Point Source Hotspots ("Digital Pepper"): Diodes spaced 7mm apart project bright circular cones onto the plastic with harsh falloff between dots.
- Dark Corners & Black Seams: Diodes only fire perpendicular (120° cone). Chamfers, end-caps, and block corners receive zero direct flux, creating ugly black edges.
- Hollow Shell Illusion: The eye immediately detects light bouncing inside an empty plastic container rather than radiant incandescent timber matter.
- No Longitudinal Resolution: A strip is 1D. It cannot create realistic curling flame tongues wrapping around the 3D curvature of a facet.
The Full-Surface Emitting Solution
- 100% Luminous Surface Area: Every square millimeter of the log’s outer faces emits light. Zero dark borders, zero unlit joints.
- Lambertian Volumetric Radiance: Light emanates evenly at all angles ($L = \text{constant}$), making the block look like a solid chunk of heated volcanic rock or compressed glowing embers.
- Multi-Zone Per-Facet Addressing: Each face possesses independent 2D pixel resolution, allowing flames to swirl upwards while the base face radiates steady glowing heat.
- Tactile Physical Integration: Smooth, seamless touch without exposed diode domes, sealed against dust and moisture.
┌────────────────────────────────────────────────────┐ │ 1mm Monolithic Frosted Matte Polycarbonate Skin │ ├────────────────────────────────────────────────────┤ │ 3mm Optical PMMA Light Guide Plate (LGP) │ │ • Laser-etched micro-dot gradient grid │ │ • Total Internal Reflection (TIR) extraction │ │ [Micro-COB LED Edge] ───> ───> ───> [Reflective Rim│ ├────────────────────────────────────────────────────┤ │ 0.1mm Toray 99.2% Diffuse Back-Reflector Foil │ ├────────────────────────────────────────────────────┤ │ Heavy Solid Brass / Cast Mineral Core Weight │ └────────────────────────────────────────────────────┘
Adopted from LCD screen backlights. Edge-injected light bounces inside optical acrylic via TIR until microscopic laser pits scatter it outward with 98% planar uniformity.
┌────────────────────────────────────────────────────┐ │ 4mm Cast Frosted Optical Resin Shell │ ├────────────────────────────────────────────────────┤ │ Seamless Continuous Phosphor COB Sheet (Zero Dots) │ │ • 840 micro-dies/dm² under continuous silicone │ │ • 1800K Amber to 6000K Cool White (WWA) │ ├────────────────────────────────────────────────────┤ │ Hollow Isotropic Integrating Cavity Chamber │ │ • 98% BaSO4 white scattering internal lining │ ├────────────────────────────────────────────────────┤ │ Central Aluminum Heatsink & Slave Controller PCB │ └────────────────────────────────────────────────────┘
Continuous phosphor sheets wrapped around a hollow integrating cavity. Light bounces multiple times before emerging through the resin shell as a seamless glowing monolith.
Implementation Paths: Ready-Made vs. Bespoke DIY
Both ready-made commercial components and custom precision fabrication are completely viable. Here is how each path works in practice when connected to our Central Electronic Brain:
Industrial stage-lighting, architectural luminescent bricks, and museum kinetic installations use standardized full-surface modular pixel blocks:
For exact timber aspect ratios (long 4-sided timber logs, chunks, kindling) that mimic genuine split firewood:
Polarity-Agnostic Magnetic Interconnection
Seamless 360° Stacking Physics
Users will stack, flip, rotate, and cantilever logs in any orientation. The electrical and data connection must be 100% orientation-independent:
- Concentric Ring Magnetic Pogo Connectors: Center pin (Ring 0) carries 1-Wire discovery; Ring 1 carries Differential Data A; Ring 2 carries Differential Data B; Ring 3 carries DC Power Rail. Because each contact is a continuous circular ring, rotating the block around its axis never disrupts continuity.
- Dual Low-Drop Ideal Diode Rectifiers (LM74610 / MOSFET Bridge): If a log is placed upside-down, the power rails reverse without harm: onboard ideal diode MOSFET switches automatically route incoming 12V DC to the internal power rail with only a 0.03V forward drop (vs. 0.7V for lossy silicon diodes).
- Magnetic Latch & Snap: Countersunk N52 neodymium magnetic rings supply 1.8 kgf of holding force per facet, giving the stacked wood a satisfying tactile "snap" when docking.
3D Spatial Topology Discovery & Facet Mapping
In our 3D web simulator, block positions are known in code. In physical reality, when a user picks up a log and rests it diagonally at 45° across two other logs, how does the Central Brain know its spatial coordinate so flame eddies wrap across its surface seamlessly?
Step 1: 1-Wire Silicon ID Adjacency Graph
Every docking face on every log contains a Maxim DS2401 64-bit Silicon Serial Number chip. When two faces touch, the Central Brain scans the 1-Wire line to immediately discover which face of Log A is resting on which face of Log B or the Plinth.
LOG_01 (Top Face) ──> LOG_03 (Bottom Face)
LOG_03 (North Face) ──> LOG_05 (Cantilevered Face)
Step 2: 6-Axis Gravitational IMU Vectors
Each log incorporates a miniature 6-axis I2C accelerometer/gyroscope (LSM6DSOX or MPU-6050). At rest, the accelerometer reads the Earth’s gravity vector ($\vec{g} = [g_x, g_y, g_z]$), giving the Central Brain the exact roll and pitch tilt angle.
Transformation: $[x,y,z]_{\text{world}} = \mathbf{R}(\theta,\phi) \cdot [x,y,z]_{\text{facet}} + \mathbf{T}_{\text{dock}}$
By pairing the Adjacency Tree with Kinematic Tilt Vectors, the Central Brain computes the exact 3D world coordinate of every single emitting surface pixel in space!
Volumetric Flame Math & Blackbody Engine
Because each block is a 100% full-surface emitter, the Central Brain does not run static looped GIF animations. It evaluates a true mathematical 3D thermal field flowing continuously through the room:
For each facet pixel at world space $(x, y, z)$, the thermal energy $T$ is computed using buoyant noise offsets:
Upward convection velocity $v$ produces organic rolling flame tongues that leap between adjacent logs.
Touching facet junctions transfer simulated caloric heat units:
Placing a cold new block onto glowing logs causes it to "ignite" over 3 to 5 seconds as heat conducts into it!
Thermal energy $T$ maps into realistic non-linear Planckian blackbody chromaticity:
T = 0.55: Crimson Ember (1800K)
T = 0.80: Radiant Amber (2400K)
T > 0.95: Plasma White Flame (3500K)
Tactile Haptic Soundboard & Audio Engine
Instead of mounting a tiny, tinny speaker, the central hearth plinth incorporates a Dayton Audio DAEX25 Sound Exciter Transducer bonded to the underside of the solid wooden base.
The transducer vibrates the wood directly, transforming the entire wooden plinth and whatever table or floor it rests upon into a giant acoustic soundboard with deep sub-bass warmth!
┌────────────────────────────────────────────────────────┐
│ SOLID OAK / WALNUT PLINTH SURFACE (30mm Hardwood) │
└───────────────────────┬────────────────────────────────┘
│ High-Tensile Epoxy Coupling
┌───────────────────────┴────────────────────────────────┐
│ DAYTON AUDIO DAEX25FHE-4 HAPTIC EXCITER (24W) │
└───────────────────────┬────────────────────────────────┘
│ 4Ω Speaker Lead
┌───────────────────────┴────────────────────────────────┐
│ MAX98357A I2S 3.2W CLASS-D MONO AMPLIFIER DAC │
└───────────────────────┬────────────────────────────────┘
│ I2S DMA Audio Stream (BCLK, LRCLK, DIN)
┌───────────────────────┴────────────────────────────────┐
│ ESP32-S3 CENTRAL BRAIN CORE 1 (Real-Time Audio DMA) │
└────────────────────────────────────────────────────────┘
Bill of Materials (BOM) & Sourcing
| System Layer | Component / Specification | Sourcing / Reference Part | Qty | Est. Cost (USD) |
|---|---|---|---|---|
| Central Brain MCU | ESP32-S3-WROOM-1-N16R8 (Dual Xtensa LX7, 16MB Flash, 8MB PSRAM) | Espressif / Adafruit Feather S3 | 1 | $12.50 |
| Master Power Supply | Mean Well LRS-150-12 (12V DC, 12.5A, 150W Convection Cooled) | Mean Well LRS-150-12 | 1 | $22.00 |
| Full-Surface Emitters | Laser-Etched Optical LGP Prism Panels OR High-Density COB WWA Sheets | JLCPCB Optical Acrylic / BTF COB Sheet | 32 facets | $46.00 |
| Block Slave MCUs | Microchip ATTiny1616 SOIC-20 / RP2040-Zero (Local facet DMX driver) | Mouser / LCSC Electronics | 8 | $8.80 |
| Magnetic Couplers | Concentric 4-Track Magnetic Pogo Rings (Gold Plated, N52 Neodymium) | HytePro M411P Magnetic Array | 24 pairs | $34.00 |
| Kinematic IMUs | LSM6DSOX 6-Axis Accelerometer / Gyroscope I2C Breakout | STMicroelectronics LSM6DSOX | 8 | $19.20 |
| Silicon ID ROMs | DS2401 1-Wire Silicon Serial Number 64-bit ROM (TO-92) | Analog Devices / Maxim DS2401+ | 16 | $8.80 |
| Haptic Exciter | Dayton Audio DAEX25FHE-4 High Efficiency 25mm 24W 4Ω Exciter | Dayton Audio DAEX25FHE-4 | 1 | $14.50 |
| I2S Audio DAC | MAX98357A I2S 3.2W Class-D Mono Audio Amplifier | Maxim MAX98357A | 1 | $4.20 |
| Plinth & Ballast | Hardwood Oak Plinth + Solid Brass Ballast Slugs for Realistic Weight | Local Woodshop / Metal Stock | Batch | $24.00 |
| TOTAL ESTIMATED HARDWARE BUDGET: | $194.00 USD | |||
Central Brain Master Firmware (ESP32-S3 C++)
Here is the central engine running on Core 0 of the ESP32-S3. It solves the 3D continuous fluid field and transmits packet frames over RS-485 / FastLED to every full-surface log node:
#include <FastLED.h>
#include <SimplexNoise.h>
#define MAX_LOGS 12
#define FACETS_PER_LOG 4
#define VOXELS_PER_FACET 16
#define TOTAL_SURFACE_VOXELS (MAX_LOGS * FACETS_PER_LOG * VOXELS_PER_FACET)
// Central Brain Scene Graph: 3D Facet Voxel Map
struct SurfaceVoxel {
float x, y, z; // Absolute world coordinates (cm)
float nx, ny, nz; // Surface normal vector
float coreHeat; // Log core caloric level [0.0 - 1.0]
uint8_t logId;
uint8_t facetIndex;
};
SurfaceVoxel sceneVoxels[TOTAL_SURFACE_VOXELS];
CRGB surfaceFrameBuffer[TOTAL_SURFACE_VOXELS];
SimplexNoise simplex;
// Non-linear Planckian blackbody color radiation curve
CRGB blackbodyToCRGB(float temperatureKelvin, float radiance) {
// 1800K (Crimson Ember) -> 2400K (Radiant Amber) -> 3200K (Golden White Flame)
float t = constrain((temperatureKelvin - 1600.0f) / 1600.0f, 0.0f, 1.0f);
uint8_t r = (uint8_t)(255 * radiance);
uint8_t g = (uint8_t)(constrain(t * 185.0f, 0.0f, 185.0f) * radiance);
uint8_t b = (uint8_t)(constrain(pow(t, 2.4f) * 75.0f, 0.0f, 75.0f) * radiance);
return CRGB(r, g, b);
}
// 60 FPS Volumetric Solver: Samples continuous 3D field across all block surfaces
void computeVolumetricSurfaceFrame(float timeSec) {
const float riseVelocity = 2.2f; // Upward convection (cm/s)
const float spatialScale = 0.075f; // Turbulence spatial frequency
for (int i = 0; i < TOTAL_SURFACE_VOXELS; i++) {
SurfaceVoxel& v = sceneVoxels[i];
// Compute upward traveling turbulence coordinate
float sampleX = v.x * spatialScale;
float sampleY = (v.y - (timeSec * riseVelocity)) * spatialScale;
float sampleZ = v.z * spatialScale;
// Multi-octave Simplex fluid noise
float noise = simplex.noise(sampleX, sampleY, sampleZ);
noise += 0.5f * simplex.noise(sampleX * 2.2f, sampleY * 2.2f, sampleZ * 2.2f);
noise = (noise + 1.5f) / 3.0f; // Normalized [0.0, 1.0]
// Height gradient: Lower blocks form glowing ember foundation; upper facets flicker
float heightFactor = constrain(1.0f - (v.y / 50.0f), 0.18f, 1.0f);
float thermalEnergy = noise * heightFactor * v.coreHeat;
// Map thermal energy to Planckian blackbody color
float kelvin = 1600.0f + (thermalEnergy * 1600.0f);
float brightness = constrain(thermalEnergy * 1.35f, 0.04f, 1.0f);
surfaceFrameBuffer[i] = blackbodyToCRGB(kelvin, brightness);
}
// Broadcast complete frame over high-speed RS-485 / FastLED bus to all full-surface blocks
FastLED.show();
}
Test The Flame Physics in 3D Right Now
Experience the 3D block arrangements, camera orbit, dynamic light bounce, and multi-track audio matrix in the live simulator before starting your physical build.