Smart obstacle
Modular WLED block with UWB + IMU auto-map.

Engineering
Smart obstacle — modular WLED block planned
~15 modular barricades carry the arena’s ambient and spell-flight lighting (~250 m WS2815 / ~15,000 LEDs total). Strips mount at the bottom of each block so flying spells read as light racing through a darkened room at cover height. Each block has a custom PCB (LPKF E33) that self-locates via UWB + IMU so LED maps survive layout changes.
Production obstacle PCB
| On-board | Purpose |
|---|---|
| ESP32-C6 | MCU, WLED firmware, Art-Net / sACN |
| Qorvo DWM3001C | UWB tag for auto-mapping |
| MPU6050 (or similar) | Physical rotation → orientation matrix |
| Level shifter / power | 12 V LED drive + data conditioning |
| Class-D amp (PAM8610 / TPA3116) | Contact / impact drive for the on-block exciter |
| Tactile exciter | One per block — impact bang + haptic |
| 12 V amp feed | Dedicated rail to the Class-D (not from the 5 V logic buck) |
| Per-block PSU | 12 V, 300 W+ (e.g. MeanWell LRS) |
Contact audio only. Airborne spatial (whoosh, ambience, announcer) is the
Pi Audio Controller + perimeter PA, not this PCB.
Reference implementation: presentation smart block
(DFPlayer + PAM8610 + Visaton EX 30 S-8) in hw_schematics/smart_block/v1/.
Auto-mapping
- Obstacle powered on → WLED node registers on the LAN
- Gateway receives UWB fix (≥3 anchors visible)
- IMU yields rotation; gateway builds LED index map
- Spell trails / zone FX address the correct strips
Presentation Smart Block demo hardware
Hand-wired FX appliance for Range demos:
ESP32-C6-DevKitM-1, ~150× WS2815, DFPlayer + PAM8610 + Visaton exciter, 12 V.
KiCad + BOM in hw_schematics/smart_block/v1/; firmware smart_block_sw/.
Differs from production obstacles: demo board has no UWB/IMU — production PCBs add DWM3001C + MPU6050 for arena auto-map, and keep the Class-D + exciter path.