STM32 based USB (+ Art-Net) to DMX512 Interfaces
An Art-Net·USB → DMX512 lighting interface on STM32 + WIZ850io (W5500), using the W5500 hardware UDP socket directly and supporting MIDI, ASCII, and MiniDMX.
How a Bare-Metal STM32 USB+Art-Net-to-DMX512 Interface Uses the WIZnet W5500 (WIZ850io) Hardware UDP Socket for Reliable Lighting Control
Overview
Controlling stage lighting from a PC needs an interface that converts the PC's commands into the DMX512 signal that fixtures understand. This project is a USB + Art-Net → DMX512 interface built on an STM32 microcontroller — a DIY build offered in two hardware versions (STM32 Nucleo-L476, and the compact STM32F042).
Its defining trait is a two-way input path. It receives the lighting-standard protocol Art-Net over Ethernet, and MIDI, ASCII, and MiniDMX commands over USB, converting both to DMX512. Here the Ethernet (Art-Net) gateway is handled by WIZ850io, a module based on the WIZnet W5500. The project is programmed directly at the register level with no external libraries, and uses the W5500's hardware UDP socket directly.
Key Features
- Direct use of the W5500 hardware UDP socket: It sets the socket mode register (S0_MR) to UDP and receives Art-Net (UDP 6454) through the W5500's built-in hardware socket. Since no software TCP/IP stack runs on the STM32, stable Ethernet reception is possible at low overhead even on a small MCU — the very benefit of a hardware TCP/IP chip.
- Dual input: Art-Net + USB: It receives Art-Net over wired Ethernet and, in parallel, MIDI/ASCII/MiniDMX commands over USB. You can use lighting software (Art-Net) and manual control (USB terminal / MIDI sequencer) together, and even block Art-Net by command to intervene via USB.
- Easy Ethernet via the WIZ850io module: Using the WIZ850io — which integrates the W5500, transformer, and RJ45 in one — it adds Ethernet with just an SPI connection and no separate Ethernet-circuit design. A good fit for a compact DIY board.
- Low-level, register-level implementation: It controls the W5500, USB, and DMX directly via registers, with no external libraries or drivers. The code is transparent, easy to learn from and port, and light enough to run on the small STM32F042.
- Rich lighting features: 512-channel individual control, soft fades up to 12.7 seconds, channel-count limiting, level readback, and nonvolatile scene storage (127 on the Nucleo / 14 on the F042). It packs the features real lighting control needs.
System Architecture
[Lighting SW / console] [PC: MIDI sequencer / terminal]
│ Art-Net (UDP 6454) │ USB (MIDI / ASCII / MiniDMX)
│ wired Ethernet │
▼ ▼
[WIZ850io (W5500)] [USB Full-Speed]
│ hardware UDP socket │
│ SPI │
▼ ▼
[STM32 (Nucleo-L476 / F042)]
│ Art-Net·USB commands → DMX buffer
│ (soft fade / scenes / channel limit)
▼
[DMX512 signal generation]
│
▼
[Stage lighting fixtures]
The W5500's role in the data path: The W5500 (WIZ850io) is the Ethernet entrance linking lighting software to the interface. It receives Art-Net UDP packets through a hardware socket and hands them to the STM32. Although USB and Ethernet inputs exist side by side, the W5500 reliably handles Art-Net — the standard path for networked lighting control.
Role and Application of the WIZnet Chip
- Chip/module used: WIZnet W5500 (in module form as the WIZ850io — W5500 + transformer + RJ45 integrated)
- Connection: Wired to the STM32 via SPI. As a WIZ850io module, it needs no Ethernet physical-circuit design (magnetics/RJ45).
- Its role: Wired-Ethernet reception of Art-Net (UDP 6454) data, which the STM32 converts to DMX512.
- Uses hardware TCP/IP (UDP socket) directly:
- The source opens the W5500 socket in UDP mode (S0_MR=0x02), sets IP, subnet, gateway, and MAC directly, then confirms the hardware socket status (SOCK_UDP).
- That is, it uses the W5500's hardwired UDP handling for its intended purpose. (It uses neither MACRAW nor an external software stack.)
- Why wired Ethernet + hardware socket:
- MCU resource savings: Since the W5500 handles TCP/IP, even a small MCU like the 20-pin STM32F042 can manage Ethernet lighting control.
- Stability: In lighting control, delay or dropouts are instant failures. Wired + hardware socket gives deterministic reception.
- What weakens without the W5500: A small STM32 would need a software Ethernet stack plus MAC/PHY. On a resource-scarce MCU like the F042 that's effectively impractical, making Ethernet (Art-Net) support itself hard to achieve.
Related Existing Contents
Compared here with cases whose content we verified directly on GitHub / WIZnet Makers.
stm32_artnet_dmx (max-verem, GitHub) An Art-Net → DMX512 gateway built on STM32F411 + W5500, doing low-level control of the W5500 hardware socket with a hand-written driver.
- Similarities: STM32 + direct use of the W5500 hardware UDP socket, a register-level implementation with no external libraries, and Art-Net→DMX512 conversion — the core is nearly identical. The "low-level optimization" orientation is the same too.
- Differences: max-verem weights SPI-DMA / TIM-DMA performance optimization plus OLED and CLI. This project's strengths are Art-Net + USB (MIDI/ASCII/MiniDMX) multi-input, lighting-operation features like soft fade and scene storage, and DIY accessibility including the tiny F042.
M5AtomPoeArtnet2DMX (maker.wiznet.io lineage / GitHub) A bridge that converts Art-Net↔DMX512 bidirectionally with an M5Stack Atom (ESP32) + W5500 PoE base.
- Similarities: The purpose of receiving Art-Net over W5500 wired and converting to DMX512 is the same.
- Differences: M5Atom uses the W5500 via ESP32 + an Arduino socket library, with strengths in PoE, bidirectionality, and a web UI. This project handles the hardware UDP socket directly on an STM32, with weight on USB multi-input and a DIY low-level implementation.
In short, the approach of "receiving Art-Net with an STM32/MCU + W5500 and converting to DMX512" has several cases. What sets this project apart is using the W5500 hardware UDP socket directly at the register level while building a multi-input interface that takes both Art-Net and USB (MIDI/ASCII/MiniDMX) on a small STM32.
Market & Application Value
- Small performance / home-studio lighting (B2C): A lighting-control interface that uses PC lighting software (Art-Net) alongside a MIDI sequencer or terminal.
- DIY / maker / education: As register-level open source, it's a good teaching resource for learning STM32 + W5500 Ethernet, USB, and DMX. Two hardware versions offer a choice of difficulty.
- MIDI-integrated stage control: Live performances and installations that need to control lighting via MIDI commands.
- Equipment for lighting software: A low-cost node connecting to MiniDMX/Art-Net-capable software such as DMXControl3.
- Why it's advantageous in real use: Thanks to the WIZ850io module + W5500 hardware socket, even a small, low-cost MCU can do stable Ethernet lighting control, and the module removes the circuit-design burden.
WIZnet Strategic Value
- Demonstrating the essence of hardware TCP/IP: This project uses the W5500's hardware UDP socket directly at the register level, squarely showing the core strength of WIZnet chips — adding Ethernet to a small MCU with no software stack.
- A small-MCU + W5500-module reference: A case that implements Ethernet with the WIZ850io even on an ultra-small MCU like the 20-pin STM32F042 — a good reference for low-cost, small embedded network design.
- A module (WIZ850io) adoption case: Using a finished module rather than a bare chip lowered development difficulty, showing the value of WIZnet modules in the DIY / low-volume market.
- Addressing the lighting/entertainment market: A lighting interface spanning Art-Net, DMX512, MiniDMX, and MIDI, broadening WIZnet's applicability in the stage and performance lighting market.
- Reference-code value: The library-free, register-level W5500 implementation is transparent reference code for developers who want to drive the W5500 directly in custom firmware. (The author also notes it's "well suited as a template for further development.")
FAQ
Q. How are Art-Net and DMX512 different? DMX512 is the serial control signal that fixtures receive directly, while Art-Net is the protocol that carries that DMX data over Ethernet (UDP). Lighting software sends commands onto the network as Art-Net, and this interface converts them to DMX512 for the fixtures.
Q. What is the WIZ850io? Is it different from the W5500? The WIZ850io is a WIZnet Ethernet module that integrates the W5500 chip with a transformer and an RJ45 connector. The chip inside is the W5500; you just attach the module over SPI with no separate Ethernet-circuit design.
Q. Does it use the W5500's hardware TCP/IP? Yes. The source opens the W5500 socket in UDP mode and receives Art-Net through a hardware socket. It doesn't go through a socket library or MACRAW — it uses the W5500's built-in hardware socket directly.
Q. Why support both Ethernet (Art-Net) and USB? Lighting software usually controls via Art-Net (Ethernet), but sometimes you want manual control from a MIDI sequencer or terminal. This interface takes both paths so you can mix automatic control and manual intervention as needed.
Q. Why does it work even on a small MCU like the STM32F042? Because the W5500 handles networking (TCP/IP) in hardware. The MCU only needs to convert received data to DMX, so even an ultra-small 20-pin chip like the STM32F042 can do Ethernet lighting control.
Limitations / Notes
- The chip/module used is the W5500 (WIZ850io module). It's the Art-Net Ethernet reception gateway.
- Hardware TCP/IP usage: The source was confirmed to open the W5500 socket in UDP mode and receive via a hardware socket. It's a case of direct hardware UDP socket use, not via MACRAW or a software stack.
- What the W5500 does not do: DMX512 signal generation, USB (MIDI/ASCII/MiniDMX) processing, and soft fade / scene storage are not the W5500's roles. The W5500 is limited to receiving Art-Net UDP.
- A DIY project: Not a commercial product but a DIY project with a published build manual, firmware, and source (2017–2020, Wolfgang Schemmert). It's freeware, but commercial use requires respecting third-party software licenses.
- Information date: The page information is as of July 2020 (firmware v1.4). Any later changes are unconfirmed.
Source / Reference Links
- Project page: https://www.midi-and-more.de/stm32-usbdmxartnet.htm
- WIZnet W5500: https://docs.wiznet.io/Product/Chip/Ethernet/W5500
- WIZnet WIZ850io module: https://docs.wiznet.io/Product/ioModule/WIZ850io
Related Projects

