Simple DIY DMX-Interface
Find a file
2026-03-05 23:37:49 +01:00
assets chore(format): optimize svg 2026-03-05 23:29:34 +01:00
components chore(format): initial formatting 2026-03-05 23:05:35 +01:00
data chore(format): optimize svg 2026-03-05 23:29:34 +01:00
main chore(format): initial formatting 2026-03-05 23:05:35 +01:00
.clang-format add(format): implement formatting and format check tasks for source files 2026-03-05 23:03:04 +01:00
.editorconfig add(format): implement formatting and format check tasks for source files 2026-03-05 23:03:04 +01:00
.envrc add initial flake configuration and environment setup 2026-03-05 15:50:51 +01:00
.gitignore Add sdkconfig.defaults and tasks.py for project configuration and build automation 2026-03-05 16:29:29 +01:00
.prettierignore add(format): implement formatting and format check tasks for source files 2026-03-05 23:03:04 +01:00
.prettierrc.json add(format): implement formatting and format check tasks for source files 2026-03-05 23:03:04 +01:00
CMakeLists.txt add(storage): implement LittleFS initialization and static file handling 2026-03-05 19:50:59 +01:00
dependencies.lock add(dmx): initialize DMX component 2026-03-05 22:00:22 +01:00
flake.lock add initial flake configuration and environment setup 2026-03-05 15:50:51 +01:00
flake.nix refactor(format): enhance formatting tasks with tool existence checks and improved output 2026-03-05 23:29:02 +01:00
partitions.csv init esp-idf project 2025-11-15 22:15:54 +01:00
README.md add(documentation): development notes added 2026-03-05 23:37:49 +01:00
sdkconfig.defaults add(storage): implement LittleFS initialization and static file handling 2026-03-05 19:50:59 +01:00
tasks.py refactor(format): enhance formatting tasks with tool existence checks and improved output 2026-03-05 23:29:02 +01:00

DMX-Interface

Art-Net interface for controlling DMX devices via WiFi or Ethernet.


🛒 Parts

Count Part
1x ESP32
2x RS485
1x W5500-ETH
1x LED-Button
1x ♂️-DMX-socket
1x ♀️-DMX-socket

Additionally you need: some wires, soldering equipment, 3D-printer, small screws, shrink tubing, hot glue gun


📱 Implemented microcontrollers

  • Lolin S2 mini
  • ESP 32 WROOM
  • ESP 32 C3

For other microcontrollers you may need to adjust the platformio.ini


🔌 Wiring

You have to short-circuit R0 on the RS485 boards to enable the termination resistor required for DMX before the first and after the last device in line.

Circuit diagram

GPIO Usage
GND GND to others
3,3V VIN on RS485
5V/VBUS VIN on W5500
0 Onboard Button
5 Ext. Button
7 Ext. LED
15 Onboard LED
17 U1TXD
18 U1RXD
21 U0TXD
33 U0RXD
34 SPI CS
35 SPI MOS
36 SPI SCK
37 SPI MISO

🚀 Installation

  1. make sure you have PlatformIO installed
  2. open the project folder in PlatformIO
  3. click Upload Filesystem Image
  4. click Upload and Monitor
  5. 🏁 you are done 🎉

🧑‍💻 Development

Required tools

  • ESP-IDF (includes idf.py)
  • Python 3
  • invoke (for project tasks)
  • Optional but recommended formatters:
    • clang-format
    • black
    • prettier
    • svgo
    • nixfmt

Environment setup

This repository includes a flake.nix with a ready-to-use development shell.

nix develop

Alternatively, you can use direnv to automatically enter the development shell when you cd into the project directory.

Without Nix, install ESP-IDF and Python dependencies manually (especially invoke) and ensure idf.py is available in your shell.

Run invoke --list to see all available tasks.

Examples:

invoke flash
invoke reset
invoke config

📦 Case

All print files (STL, STEP, X_T) can be found in assets/case. Alternatively you can view the project on OnShape where you can export the files in a format you like.

Prusa Slicer with case loaded


💡 Status LED

LED Description
off no power; LED deactivated
static powered on; normal
slow startup; warning
fast resetting; error

⚙️ Default config

To reset the settings, hold down the button and connect the ESP to the power supply, the LED will flash quickly. After 3 seconds the LED should light up static and the settings are reset. If you release the button early you abort the reset and the LED flashes slowly.

Setting Value
TYPE WiFi AP
SSID ChaosDMX-□□□□
PASSWORD mbgmbgmbg
IP-Address 192.168.4.1
DMX1 (Left) OUTPUT; Universe 1
DMX2 (Right) INPUT; Universe 2
LED Brightness 10 %

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check the issues page.


👥 Authors

Chaostreff Backnang

@HendrikRauh

@RaffaelW

@psxde