|
@@ -0,0 +1,63 @@
|
|
|
|
|
+# WLED 48x32 Modular LED Matrix & DDP Control Daemon
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+A high-density 1,536-pixel (48x32) modular LED matrix built across 6 panels in a 3x2 landscape layout. Features custom 3D-printed prismatic diffuser lenses and a thread-safe Python HTTP daemon streaming real-time DDP (Distributed Display Protocol) frame buffers to WLED.
|
|
|
|
|
+
|
|
|
|
|
+3D CAD files, OpenSCAD scripts, and assembly specs are published on Thingiverse:
|
|
|
|
|
+**https://www.thingiverse.com/thing:7391918**
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Hardware Architecture
|
|
|
|
|
+
|
|
|
|
|
+- **Resolution:** 48 × 32 pixels (1,536 WS2812B LEDs)
|
|
|
|
|
+- **Panel Grid:** 6 modular tiles arranged in a 3×2 landscape grid (16×16 pixels per tile)
|
|
|
|
|
+- **Pitch:** 10mm center-to-center
|
|
|
|
|
+- **Diffuser System:** Modular 0.4mm transparent PLA sandwich film with integrated 1.5mm square pegs topped with 0.8mm micro-pyramid prismatic refractors to eliminate light bleed and LED hotspots.
|
|
|
|
|
+- **Protocol:** DDP over UDP (Port 4048)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Software & Daemon Features
|
|
|
|
|
+
|
|
|
|
|
+- **Multithreaded Engine:** Non-blocking Python daemon handling HTTP requests and real-time animation loops concurrently.
|
|
|
|
|
+- **Active DDP Keep-Alive:** Streams dynamic background frames during scroll sweep pauses to prevent WLED timeout drops.
|
|
|
|
|
+- **Display Modes:**
|
|
|
|
|
+ - **Scroll Text:** Variable scroll speed, adjustable sweep pauses, and custom text payloads.
|
|
|
|
|
+ - **Digital Clock:** Toggleable date, seconds, and blinking colon. Automatically restricts font selection to monospaced typefaces when active to eliminate horizontal layout jitter.
|
|
|
|
|
+ - **Analog Clock:** Procedural analog clock face rendering.
|
|
|
|
|
+- **Dual-Layer FX Pipeline:**
|
|
|
|
|
+ - Independent foreground (text/clock) and background canvas effect engines.
|
|
|
|
|
+ - Supported effects: `solid`, `rainbow`, `gradient-h` (horizontal), `gradient-v` (vertical), and `pulse`.
|
|
|
|
|
+- **Interactive Web Control Panel:**
|
|
|
|
|
+ - Integrated live WYSIWYG preview box with marquee scrolling animations.
|
|
|
|
|
+ - Native HTML5 color wheel selectors.
|
|
|
|
|
+ - Real-time cURL command generator for API automation.
|
|
|
|
|
+ - Automatic system TTF font detection and web preview font-loader.
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Quickstart
|
|
|
|
|
+
|
|
|
|
|
+### 1. Run as Daemon
|
|
|
|
|
+Start the HTTP controller on your host (e.g., Aurelia or hypervisor guest):
|
|
|
|
|
+```bash
|
|
|
|
|
+python3 matrix_billboard.py --daemon --listen-ip 0.0.0.0 --listen-port 8080 --ip 192.168.195.216
|
|
|
|
|
+
|
|
|
|
|
+### 2. restfulAPI example
|
|
|
|
|
+```bash
|
|
|
|
|
+curl -X POST "http://localhost:8080/" \
|
|
|
|
|
+ -H "Content-Type: application/json" \
|
|
|
|
|
+ -d '{
|
|
|
|
|
+ "mode": "scroll",
|
|
|
|
|
+ "text": "WOMAN CAVE",
|
|
|
|
|
+ "effect": "gradient-h",
|
|
|
|
|
+ "color": "#ff00ff",
|
|
|
|
|
+ "color2": "#00ffff",
|
|
|
|
|
+ "bg_effect": "solid",
|
|
|
|
|
+ "bg_color": "#000000",
|
|
|
|
|
+ "speed": 0.04,
|
|
|
|
|
+ "sweep_pause": 2.0,
|
|
|
|
|
+ "brightness": 255
|
|
|
|
|
+ }'
|