A hardware + software toolkit for driving a WS2811 LED tree with an ESP32 and generating 3D LED coordinates from camera captures.
demonstration.mp4
firmware/: ESP-IDF firmware exposingws://<device>/wsfor binary LED frames.animations/: Python animation engine and browser-based control UI.scanning/: Python tools for capture processing, triangulation, and coordinate cleanup.
- Create a virtual environment and install Python dependencies:
./venv_setup.sh source .venv/bin/activate - Set runtime environment values:
cp env.example.sh env.sh source env.sh - Flash firmware (see
firmware/firmware_esp32c6_ws2811/README.md). - Start control server:
python animations/python/control_server.py --host 0.0.0.0 --port 8080
- Open
http://<your-computer-ip>:8080and start an animation.
Run from repository root:
python animations/python/run_animation.py rainbowInteractive picker:
python animations/python/run_animation.pyTypical flow:
- Capture per-vantage LED images
- Triangulate rough 3D points
- Clean/repair coordinates
- Use
scanning/data/led_coordinates_3d_clean.txtfor animations
Detailed script usage is in scanning/scripts/README.md.
Install developer tools:
pip install pre-commit ruff
pre-commit installRun checks:
ruff format animations/python scanning/scripts
ruff check animations/python scanning/scripts