Skip to content

Latest commit

ย 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ›๏ธ ESP32 Wireless Art-Net to DMX512 Node (ZZLIGHT)

Hardware Status Protocol Support Architecture License Creator

A high-performance, ultra-reliable, zero-jitter DIY Wireless Art-Net 4 to DMX512-A Converter Node powered by ESP32 Dual-Core (FreeRTOS SMP), built-in Captive Portal Web Config, and 16x2 LCD Status Monitor.


๐Ÿ“ Visual Assets & Documentation Links

  • ๐ŸŽฌ RESULT.png โ€” Live stage setup banner (Acer Swift 3 running QLC+, Box X4 enclosure, 4 PAR LED 54-eye fixtures).
  • ๐Ÿ“„ REPORT.pdf โ€” Complete PDF project report with all 58 indexed figures, schematics, and build logs.
  • ๐Ÿ“ฆ images/ โ€” Catalog of 22 hardware tools & components.
  • ๐Ÿ“ schematics/ โ€” 5 High-resolution engineering schematics & architecture diagrams (300 DPI).
  • ๐Ÿ“ธ docs/ โ€” 30 Step-by-step fabrication & testing photos.
  • ๐Ÿ“‹ PRD.md โ€” Product Requirements Document.
  • ๐Ÿ“‘ REVIEW.md โ€” Architectural & Signal Integrity Review.
  • ๐Ÿ“ CHANGELOG.md โ€” Version history and roadmap notes.

โšก Quick Navigation


โœจ Key Features

  • ๐Ÿš€ FreeRTOS Dual-Core SMP Engine:
    • Core 0 (Dedicated DMX): Generates strict USITT DMX512-A serial timing (Break $\ge 88,\mu\text{s}$, MAB $\ge 8,\mu\text{s}$) at an ultra-stable 44.1 Hz refresh rate with zero jitter ($<0.05,\mu\text{s}$).
    • Core 1 (Networking & UI): Handles Art-Net UDP (Port 6454), Captive Portal DNS (Port 53), HTTP WebServer (Port 80), and NVS flash storage.
  • ๐Ÿ”„ Atomic Double-Buffering (Ping-Pong Memory):
    • Thread-safe pointer swapping between writeBuffer and readBuffer protected by an atomic spinlock (portENTER_CRITICAL), totally eliminating frame tearing and stage light flicker.
  • ๐Ÿ“ฑ Smart Captive Portal (Auto Pop-up):
    • When disconnected from WiFi, the node automatically broadcasts an Access Point (ZZLIGHT-AP at 192.168.4.1). Connecting with any smartphone (Android/iOS) or PC instantly opens the web setup portal.
  • ๐Ÿ“Ÿ 11-State Machine 16x2 LCD Display:
    • Real-time status display with differential I2C rendering: Booting animation, WiFi status, connected IP, active Art-Net Universe, and live DMX packet counter (FPS).
  • ๐Ÿ›ก๏ธ 10-Second Fail-Safe Blackout:
    • Automatically blacks out all 512 DMX channels if the host lighting software stops broadcasting for >10 seconds, protecting stage fixtures from overheating.
  • ๐Ÿ“ฆ Rugged Box X4 DIY Enclosure:
    • Compact, road-ready ABS plastic case with metal 3-pin XLR female chassis socket and top-mounted blue LCD screen.

๐Ÿ›’ Hardware & Bill of Materials (BOM)

Total estimated cost to build this module is under $10 / Rp 150.000. Here are all 22 parts and tools:

No Component / Tool Specification & Details Purpose
1 ESP32 DevKit V1 30-Pin, Dual-Core 240MHz, 520KB SRAM Main MCU & WiFi Engine
2 MAX485 Module 5V TTL to RS-485 Differential Transceiver Converts UART TX to DMX512
3 LCD 16x2 + I2C Blue Backlight, PCF8574 Backpack (0x27) Real-time Status Display
4 XLR 3-Pin Female Socket Round Metal Panel-Mount Chassis DMX Cable Output Socket
5 Box X4 Enclosure Black Matte ABS ($120 \times 85 \times 40\text{ mm}$) Road-ready Protective Casing
6 Perfboard / Rawboard Single-Sided Matrix PCB ($50 \times 70\text{ mm}$) Circuit Board Base
7 Pin Headers 2.54mm Pitch Male & Female Strips Modular Socket for ESP32 & MAX485
8 DuPont Jumper Wires AWG 24-26 Multi-Color Wires Internal Power & Signal Wiring
9 USB to Micro-USB Cable High-Quality Copper Data Cable (1.0m) 5V Power Supply & Flashing
10 Solder Wire 60/40 Rosin Core Tin (0.8mm) Electrical Soldering
11 Soldering Iron 60W Adjustable Temperature Ceramic Tool for Soldering
12 Desoldering Pump Manual Aluminum Solder Sucker Solder Cleaning & Fixes
13 Digital Multimeter Voltage, Continuity Buzzer & Resistance Short-Circuit & Rail Verification
14 Breadboard 830 Points Solderless Prototyping Breadboard Testing Circuit Before Assembly
15 Side Wire Cutters Precision Flush Cutters Trimming Header Pins & Wires
16 Step Drill Bit Titanium Nitride HSS 4โ€“22mm Cone Drilling XLR Socket Hole on Box X4
17 Precision Screwdrivers Phillips (+) & Flathead (-) Fastening XLR & Box Screws
18 3m DMX XLR Cable 120-Ohm Shielded Twisted Pair Signal Transmission to Lights
19 Host Laptop (Acer Swift 3) Windows 11 / Linux Host Running QLC+ Art-Net Software Controller
20 PAR LED 54 Fixtures 54x3W RGBW Stage Wash Lights Physical DMX Actuation Load
21 Soldering Flux Paste Rosin Soldering Flux Grease Paste Clean & High-Quality Solder Joints
22 Craft Scissors Sharp Stainless Steel Scissors Cable & Heat-Shrink Trimming

(All component photos are accessible in the images/ folder and indexed in REPORT.pdf).


๐Ÿ“ Schematics & Pinout Wiring

๐Ÿ”Œ Pinout Connection Table

+-------------------+--------------------+------------------------+-----------------------+
| Source Pin        | Source Label       | Target Component       | Target Pin            |
+-------------------+--------------------+------------------------+-----------------------+
| ESP32 DevKit V1   | VIN (5V)           | MAX485 Module          | VCC (5V)              |
| ESP32 DevKit V1   | GND                | MAX485 Module          | GND                   |
| ESP32 DevKit V1   | GPIO 4 (D4)        | MAX485 Module          | DE & /RE (Tied HIGH)  |
| ESP32 DevKit V1   | GPIO 17 (TX2)      | MAX485 Module          | DI (Data In)          |
+-------------------+--------------------+------------------------+-----------------------+
| MAX485 Module     | Pin A (Data +)     | XLR 3-Pin Female       | Pin 3 (DMX Data +)    |
| MAX485 Module     | Pin B (Data -)     | XLR 3-Pin Female       | Pin 2 (DMX Data -)    |
| MAX485 Module     | Pin GND (Shield)   | XLR 3-Pin Female       | Pin 1 (DMX Ground)    |
+-------------------+--------------------+------------------------+-----------------------+
| ESP32 DevKit V1   | VIN (5V)           | I2C LCD 16x2 Display   | VCC (5V)              |
| ESP32 DevKit V1   | GND                | I2C LCD 16x2 Display   | GND                   |
| ESP32 DevKit V1   | GPIO 21 (D21)      | I2C LCD 16x2 Display   | SDA                   |
| ESP32 DevKit V1   | GPIO 22 (D22)      | I2C LCD 16x2 Display   | SCL                   |
+-------------------+--------------------+------------------------+-----------------------+

๐Ÿ“Š Available Schematics (in schematics/)


๐Ÿ› ๏ธ Fabrication & Assembly Summary

The complete step-by-step physical build process (with 30 photos in docs/) consists of 4 main phases:

  1. Breadboard Prototyping & Testing: Validating UART2 DMX transmission and I2C LCD address (0x27).
  2. Box X4 Enclosure Machining: Drilling front panel hole with a step drill bit (4โ€“22mm) for the round XLR 3-pin female chassis and rectangular top cutout for LCD 16x2.
  3. Perfboard Soldering & Internal Wiring: Soldering header sockets, routing 5V power rails, hooking up MAX485 DE/RE pins to GPIO 4, and attaching XLR pins (1: GND, 2: Data-, 3: Data+).
  4. Final Assembly & Bench Testing: Fastening the PCB inside Box X4 with screws, closing the lid, and connecting to stage lighting fixtures for live actuation.

๐Ÿง  Firmware & Dual-Core Architecture

The production firmware firmware/artnet_dmx_final.ino is optimized for zero-latency stage performance:

// Core 0 Dedicated DMX Generation Loop (44.1 Hz)
void DMX_Task(void *pvParameters) {
    for (;;) {
        // 1. Generate Break Signal (LOW >= 88 us)
        digitalWrite(DMX_TX_PIN, LOW);
        esp_rom_delay_us(88);

        // 2. Generate Mark After Break (HIGH >= 8 us)
        digitalWrite(DMX_TX_PIN, HIGH);
        esp_rom_delay_us(8);

        // 3. Atomically transmit 513 bytes (Start Code + 512 channels)
        portENTER_CRITICAL(&dmxMux);
        Serial2.write((uint8_t*)readBuffer, 513);
        portEXIT_CRITICAL(&dmxMux);

        Serial2.flush();
        vTaskDelay(pdMS_TO_TICKS(1)); // ~22.7ms period = 44.1 Hz
    }
}

๐Ÿš€ Quick Start: Flashing the Firmware

  1. Install Arduino IDE 2.x.
  2. In Arduino IDE Settings, add ESP32 Board URL:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
    
  3. Install esp32 by Espressif Systems via Boards Manager.
  4. Install library LiquidCrystal_I2C by Frank de Brabander via Library Manager.
  5. Connect your ESP32 to PC with a Micro-USB cable.
  6. Select board DOIT ESP32 DEVKIT V1 and the correct COM port.
  7. Open firmware/artnet_dmx_final.ino and click Upload.

๐ŸŒ WiFi Setup via Captive Portal

  1. Power on the module.
  2. On your phone or laptop, connect to the WiFi network: ZZLIGHT-AP.
  3. A web configuration portal will automatically open (or navigate to http://192.168.4.1).
  4. Click Scan WiFi, pick your stage WiFi router, type the password, and choose your Art-Net Universe (default: 0).
  5. Click Save & Connect. The node will reboot and join your stage network. The LCD will display its newly assigned IP address!

๐ŸŽ›๏ธ Universal Software Compatibility

The node accepts standard Art-Net 4 DMX packets (OpCode 0x5000) on UDP Port 6454 from any lighting console:

  • QLC+: Go to Inputs/Outputs โž” Select ArtNet output plugin โž” Enter Node IP or Broadcast 255.255.255.255.
  • grandMA3 onPC: Go to Menu โž” Network โž” DMX Protocols โž” Art-Net (Enabled).
  • Resolume Arena: Go to Preferences โž” DMX โž” Add Lumiverse โž” Target Node IP.
  • TouchDesigner: Use DMX Out CHOP in Art-Net mode.
  • ZZLUXORA: Automated audio-reactive AI lighting control engine.

๐Ÿ“Š Test Results & Performance

Metric Target Requirement Measured Test Result Status
DMX Refresh Rate $40 - 44\text{ Hz}$ $44.1\text{ Hz}$ Deterministik ๐ŸŒŸ Pass
Serial Timing Jitter $< 1.0,\mu\text{s}$ $< 0.05,\mu\text{s}$ (Zero-Jitter) ๐ŸŒŸ Pass
WiFi UDP Latency $< 20\text{ ms}$ $1.8 - 4.2\text{ ms}$ (30m range) ๐ŸŒŸ Pass
Fail-Safe Blackout $10\text{ seconds}$ 10.0s Auto Blackout Trigger ๐ŸŒŸ Pass
Current Consumption $< 500\text{ mA}$ $180\text{ mA}$ @ 5V DC ๐ŸŒŸ Pass

๐Ÿ”ฎ Roadmap v5.0 (Community Edition) & Invitation to Fork

๐Ÿ’ก Project Status: This project is officially finalized and stable at v4.0.0 (Production-Ready). For anyone wanting to take this project further and build v5.0.0, you are warmly invited to fork, experiment, and contribute! (Silakan dikembangkan sesuka hati!) ๐ŸŽ‰

Recommended features for v5:

  1. ๐ŸŒ sACN (ANSI E1.31) Protocol Support alongside Art-Net 4.
  2. ๐ŸŽ›๏ธ Multi-Universe Outputs (2โ€“4 XLR Ports) using ESP32 UART/RMT peripherals.
  3. ๐Ÿ”„ Bidirectional RDM (ANSI E1.20) for remote fixture configuration and sensor telemetry.
  4. โšก Hardwired PoE Ethernet (W5500 / LAN8720) for stadium/arena setups.
  5. โ˜๏ธ Web OTA Firmware Update (Drag & Drop .bin).
  6. ๐Ÿ” ArtPoll & ArtPollReply Auto-Discovery for seamless grandMA3 / Avolites integration.
  7. ๐Ÿ“Ÿ OLED SSD1306 Graphic Display & NeoPixel RGB Status Indicators.
  8. ๐Ÿ’พ Standalone DMX Scene Recorder & Playback without needing a PC.

๐Ÿ’ฌ Message to Makers & Forkers

  • Feel free to DIY build this node: All schematics, BOM, and step-by-step photos are provided under the open-source MIT license.
  • Feel free to fork & create v5: Build custom KiCad SMD PCBs, 3D printed enclosures, or multi-port nodes. We'd love to see your creations!

๐Ÿ“œ License & Credits

  • Author: Andreas Restuawanta Christwara (@zzdree)
  • Institution: Universitas Negeri Semarang (UNNES), Computer Engineering.
  • Academic Reference: Part of Bachelor's Thesis research in Intelligent Stage Lighting Automation.
  • License: Distributed under the MIT License. Free for commercial, personal, and educational use!

โญ If you find this project helpful, give it a star on GitHub! โญ
Built with โค๏ธ for Stage Lighting Designers, DIY Makers, and Engineers Worldwide.

About

High-performance DIY Wireless Art-Net 4 to DMX512-A Converter Node powered by ESP32 Dual-Core (FreeRTOS SMP), Captive Portal, and 16x2 LCD Status Monitor.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages