LumiFur Controller
Real-time firmware for animating HUB75 LED matrices with sensor-driven interactions, BLE control, and OTA updates on the MatrixPortal ESP32-S3 platform.

Firmware release
Current controller build and recent change notes.
Changelog highlights
- Automated firmware build and release pipeline.
- Web updater hosted on GitHub Pages.
- Sensor performance tuning and BLE service refinements.
Physical details
Connector access, input controls, and enclosure layout designed for wearable installs.
Concept
Enclosure sketch
Early layout exploring a slim profile with accessible ports and clean cable routing for HUB75 panels.

Expansion
12-pin ADC header
Dedicated analog header for external sensors, sliders, and custom inputs.

Controls
Side button cluster
Tactile controls for quick expression changes, pairing, and brightness tweaks.

I/O
Side ports
Accessible power and data ports for bench setup, updates, and maintenance.
Core capabilities
A performance-first firmware stack tuned for expressive LED wearables and interactive masks.
Visuals
Animated expression library
20+ real-time faces and effects including plasma, flame, fluid, and scrolling text tuned for dual HUB75 panels.
Sensors
Sensor-driven reactions
APDS9960 proximity and ambient light, LIS3DH gestures, and MEMS mic audio drive responsive animations.
Wireless
BLE command control
Switch expressions, toggle features, and adjust brightness remotely over NimBLE.
Updates
OTA firmware updates
Dedicated OTA characteristic plus web updater for fast wireless delivery.
Power
Power-aware runtime
Wake-on-motion, sleep dimming, ambient scaling, and persistent preferences in NVS.
Performance
Optimized HUB75 pipeline
DMA double buffering, optional virtual panel simulation, and extensible C++ effect modules.
Hardware + sensors
Reference hardware used by the firmware, ready for customization.
MatrixPortal ESP32-S3
ESP32-S3 controller board with APDS9960, LIS3DH, I2S MEMS mic, and a NeoPixel status LED onboard.
Dual 64x32 HUB75 panels
Two chained 64x32 RGB matrices (1/16 scan) for high-density face animations.
HUB75 ribbon + 5V power
Standard HUB75 ribbon cables plus dedicated 5V power delivery sized for LED load.
APDS9960 ambient light + proximity
Adaptive brightness plus proximity-triggered effects like blushing and eye bounce.
LIS3DH 3-axis accelerometer
Shake gestures, gravity-driven PixelDust physics, and wake-on-motion sensing.
I2S MEMS microphone
Onboard mic input for audio-reactive mouth animation.
NeoPixel status LED
Visual feedback for BLE advertising and connected states.
Onboard buttons + ADC header
View navigation buttons plus a 12-pin ADC header for external sensors.
Control + telemetry
Deep BLE control plus browser-based OTA tooling for quick updates.
- GATT service exposes expression switching, brightness control, and feature toggles.
- OTA characteristic streams firmware updates with live status acknowledgements.
- Telemetry includes temperature, build metadata, and buffered log retrieval.
- Web Bluetooth updater is hosted on the LumiFur site with a GitHub Pages fallback.