Wiznet makers

Benjamin

Published August 28, 2026 © MIT license (MIT)

163 UCC

11 WCC

26 VAR

0 Contests

0 Followers

2 Following

Original Link

How Does a W5500 Pico Node Drive Four DMX512 Ports from Art-Net and sACN at 40 Hz?

ND-PicoDMX-System pairs a Raspberry Pi Pico with a WIZnet W5500 that receives Art-Net and sACN; dual-core firmware and PIO drive four DMX512 outputs at 40 Hz.

COMPONENTS Hardware components

WIZnet - W5500

x 1

SPI Ethernet module and the node's only network interface. Hardware sockets receive Art-Net (UDP 6454), sACN unicast and up to four multicast groups (UDP 5568), and serve the dashboard on TCP 80. Wire


PROJECT DESCRIPTION

What Is ND-PicoDMX-System and Who Builds It?

ND-PicoDMX-System is an open-source, four-port Art-Net and sACN to DMX512 node assembled from a Raspberry Pi Pico, a WIZnet W5500 SPI Ethernet module, and four auto-direction RS485 transmitters. The firmware receives lighting data over wired Ethernet through the W5500's hardware sockets and generates four independent DMX512 universes with the RP2040's PIO blocks, while a web dashboard stored inside the firmware flash handles configuration and diagnostics.

The maker publishes as Andy Truong (duongtruongdp), lists Vietnam as his location, and introduces himself in his GitHub bio as "Just a video production guy with a passion for tech, dedicated to finding budget-friendly DIY solutions that optimize every stage of the production pipeline." That background shows in the project's stated goal: the Vietnamese half of the README prices the complete four-port build at 1.200.000 VND.

The repository went public on 2026-08-01 and received its latest push on 2026-08-11, and every fact in this article was checked against the repository on 2026-08-28. The documentation is unusually complete for a DIY node: a bilingual English and Vietnamese README covers DMX fundamentals, firmware internals, a hardware BOM, wiring tables, and a REST API reference.

Screenshot of the ND DMX NODE 4U web dashboard header and system overview, showing the device IP 10.10.10.10, an Ethernet link card reading CONNECTED for the W5500 physical connection, four of four active sources, and the live protocol readout sACN plus Art-Net The node's own web dashboard, served from firmware flash. The Ethernet link card reports the W5500 physical connection. Screenshot: ND-PicoDMX-System repository.

From Console Packet to Four XLR Sockets

DMX512 is the wired control protocol behind most stage and event lighting: one DMX universe carries up to 512 channel values over an RS485 differential line, and each fixture reads its assigned channels. Art-Net and sACN (E1.31) carry those universes across an ordinary Ethernet network as UDP packets, on port 6454 for Art-Net and 5568 for sACN. A node sits at the network edge and turns the packets back into physical DMX signals.

In ND-PicoDMX-System, a lighting console or PC sends Art-Net or sACN into the LAN, the W5500 receives the packets, and the RP2040 splits the work across its two cores. Core 0 parses network traffic and serves the dashboard, while Core 1 and the PIO blocks generate DMX timing on GP8, GP9, GP14, and GP15, each pin feeding an RS485 module wired to a female XLR-5 connector. Default routing maps ports 1 through 4 to universes 1 through 4.

Generated technical diagram of the ND-PicoDMX-System data path: a lighting console sends Art-Net UDP 6454 and sACN UDP 5568 packets to the WIZnet W5500 hardware sockets, the RP2040 splits network work on Core 0 from the Core 1 PIO DMX engine, and four RS485 transmitters feed four XLR-5 outputs Generated technical diagram. Ports, pins, and timing values are quoted from the project README, checked 2026-08-28.

The W5500 Is the Node's Only Network Interface

The README overview states the chip's role in one line: "W5500 Ethernet for wired Art-Net and sACN reception." There is no Wi-Fi code anywhere in the firmware; wired Ethernet through the W5500 is the only transport.

The firmware, a single 1,837-line Arduino sketch at firmware/v2.1/ND_DMX_NODE_4U_v2_1_STABLE.cpp, opens every network path on the W5500's hardware TCP/IP engine through the Arduino Ethernet library. It runs one EthernetUDP socket for Art-Net, one unicast sACN socket, up to four sACN multicast sockets joined on 239.255.x.x group addresses derived from each universe number, and an EthernetServer on TCP port 80 for the dashboard and REST API. The setup code makes the wiring explicit:

SPI.setRX(PIN_MISO); SPI.setCS(PIN_CS); SPI.setSCK(PIN_SCK); SPI.setTX(PIN_MOSI);
SPI.begin();
Ethernet.init(PIN_CS);
Ethernet.begin(mac, staticIP, dnsServer, gateway, subnetMask);

Core 0 polls Ethernet.linkStatus() once per second; when a dropped cable returns, the firmware restarts the Art-Net and sACN sockets and logs "Ethernet link restored", so recovery needs no reboot. The node ships with a static IPv4 configuration of 10.10.10.10/24, gateway 10.10.10.1, and MAC address 02:4E:44:34:55:01.

W5500 signalPico GPIOFirmware symbolFunction
MISOGP16PIN_MISOSPI data from W5500 to Pico
CS / SCSGP17PIN_CSChip select
SCKGP18PIN_SCKSPI clock
MOSIGP19PIN_MOSISPI data from Pico to W5500
RSTGP20PIN_RSTHardware reset, active LOW

A 40 Hz DMX Engine on Core 1 and PIO

DMX timing is strict: 250,000 bit/s in 8N2 format with a 4 microsecond bit. The firmware clocks each PIO state machine at 1 MHz and drives a 105 microsecond BREAK, a 14 microsecond mark-after-break, then a 513-byte frame of start code plus 512 channels, repeating every 25 ms for roughly 40 frames per second on all four ports.

Each port keeps two 513-byte buffers. Core 0 writes incoming network frames into a back buffer, Core 1 transmits from a front buffer, and a hardware spinlock guards the copy at frame boundaries, so a half-written network packet can never tear a DMX frame and a static scene keeps refreshing even when packets stop. Core 1 feeds at most 16 bytes per loop pass to keep all four outputs serviced evenly.

The v2.0.2 release of 2026-08-05 hardened this engine: the changelog records a switch to the official Pico SDK spin_lock_blocking() pair, a 35 ms PIO FIFO timeout with automatic state machine recovery, and a controlled watchdog reboot if Core 1 stops producing its heartbeat for three consecutive seconds.

Screenshot of the dashboard's DMX output ports panel with four port cards, each showing its universe number, channel activity, input FPS around 36 to 40 Hz, DMX output locked at 40 Hz, the active protocol, sender IP, and a row of local output test buttons Per-port telemetry in the dashboard: input packet rate, physical DMX output rate, protocol, sender IP, and local test controls. Screenshot: ND-PicoDMX-System repository.

Dashboard, REST API, and the v2.1 OLED

The dashboard is a single static page compiled into the firmware, with no CDN, external fonts, or Internet requirement. Since v2.0.2 the page is stored gzip-compressed, cutting the transfer from about 34 KB to about 9 KB, sent in 512-byte chunks with UDP serviced between chunks so DMX input never starves during a page load.

A small REST API sits underneath. GET /api/status returns device, network, per-port, and event-log telemetry as JSON, GET /api/test switches a port between network data and local test output (blackout, 50 percent, full, and channel chase), and GET /api/config writes routing, protocol filters, and merge policy to EEPROM. Each port can accept Art-Net only, sACN only, or both, with LTP, simplified HTP, or first-source BLOCK conflict handling, and the README warns that there is no authentication or TLS, so the node belongs on a trusted lighting LAN.

The V2.1-OLED1.3 release of 2026-08-11 adds a hardware face to the same data: a 1.3-inch SH1106 OLED with a rotary encoder, drawn through the U8g2 library. The release notes state that screen updates are rate-limited to 150 ms and the display sleeps after 60 seconds, so the UI never blocks W5500 packet polling.

Screenshot of the dashboard's core diagnostics and device information panels, listing Core 0 at 3,686 loops per second, the Core 1 DMX engine at 130,063 loops per second, and a hardware identity row reading RP2040 plus W5500 plus 4x RS485 Core diagnostics and device identity from the same dashboard. The hardware string names the W5500 directly. Screenshot: ND-PicoDMX-System repository.

Building One for 1.200.000 VND

The README describes the build as "built from common modules instead of a custom PCB". Everything is point-to-point wiring between off-the-shelf boards:

  • Raspberry Pi Pico (standard RP2040, 2 MB flash)
  • Pico expansion board with a 7 to 12 V input and regulated rails
  • W5500 SPI Ethernet module, 3.3 V logic
  • Four auto-direction TTL-to-RS485 modules rated for 250 kbit/s
  • Four female XLR-5 panel connectors
  • 12 V supply with a two-way fused distribution for node and router
  • Cat5e or Cat6 cable from the W5500 to a LAN router

The BOM links point to vi.aliexpress.com listings, AliExpress's Vietnamese storefront, matching the maker's location and the 1.200.000 VND target. The README also flags a trap: the status LED pin GP23 is an internal SMPS signal on a standard Pico, so builders should move it to GP25 or another exposed pin.

Compilation needs only Arduino IDE, the Earle Philhower RP2040 core, and the stock Arduino Ethernet library; no external DMX library is involved because PIO generates the signal. Builders who skip the toolchain can flash the precompiled .uf2 from the releases page and browse to 10.10.10.10.

Author-made wiring diagram for the ND DMX system showing the 12 V power input and fused distribution, the Pico expansion board with a full GPIO table, the W5500 Ethernet module connected over SPI to a router, and four RS485 modules feeding XLR-5 DMX outputs with a wire color legend The wiring diagram shipped in the repository, with the W5500 Ethernet module block and the GP16 to GP20 SPI assignments drawn in. Image: ND-PicoDMX-System repository.

Release History and Early Project Signals

The changelog reaches further back than the public repository. Version 2.0.0 is dated 2026-05-30, two months before the GitHub account and repository both appeared on 2026-08-01, which suggests the node was developed privately before publication.

VersionDateHighlights
2.0.02026-05-30 (changelog)First public feature set: 4 outputs, Art-Net, sACN, web config
2.0.12026-08-01 (changelog)Industrial-style dashboard redesign, FPS and event-log telemetry
V2.0.22026-08-05 (release)Spinlock and watchdog hardening, gzip dashboard, sACN validation
V2.1-OLED1.32026-08-11 (release)SH1106 OLED, rotary encoder, on-device menu system

One documentation seam is worth knowing: the README and its badge describe firmware v2.0.1, while the newest release is V2.1-OLED1.3, so the changelog and the per-version notes in firmware/ carry the current state. Community metrics are small, 3 stars and 0 forks as of 2026-08-28, normal for a three-week-old project. A second repository, ND-ImgConverter from 2026-08-14, is a media conversion toolkit for filmmakers, consistent with the maker's production-pipeline focus.

Where It Fits: Value and Limits

For WIZnet readers, the interesting part is how much of the node's reliability story runs through the W5500. Hardware sockets absorb the UDP load and the multicast group management, leaving Core 0 light enough to serve a dashboard while Core 1 holds 40 Hz on four universes, and the whole recipe costs 1.200.000 VND in commodity modules. The bilingual documentation also makes it an approachable reference for Vietnamese-speaking makers.

The limits are stated by the project itself. There is no RDM, because the RS485 stages are transmit-only, and no DHCP, so the static address must fit the show network. The HTTP API changes state through unauthenticated GET requests, galvanic isolation depends on the chosen RS485 modules, and the repository publishes a wiring diagram and dashboard screenshots rather than photos of a finished build.

Related WIZnet Maker Projects

  • FM-ArtNetNode_4U_V2 is the closest neighbor: a Pico plus W5500-Lite four-universe Art-Net node with web configuration. ND-PicoDMX-System differs by adding sACN multicast reception, per-port merge policies, and a REST API; two makers independently converged on the same W5500 recipe.
  • picoArtnet2DMX converts Art-Net to DMX512 with the same Pico and W5500 pairing at smaller scale. It is a simpler starting point; ND-PicoDMX-System scales the same parts to four ports with full diagnostics.
  • ESP-NODE-2RDM speaks the same Art-Net v4 and sACN protocols through a W5500 but on an ESP32-S3 with two ports. Its RDM support is exactly what ND-PicoDMX-System's transmit-only hardware gives up, so the pair maps the trade-off well.
  • rp2040-dmxsun is the OpenLightingProject's RP2040 DMX platform with a built-in web server, centered on a USB dongle form factor rather than a wired Ethernet node, a useful contrast on the same MCU.

FAQ

Q. What does ND-PicoDMX-System use the WIZnet W5500 for? The W5500 is the node's only network interface. Its hardware TCP/IP sockets receive Art-Net on UDP 6454 and sACN on UDP 5568, including up to four multicast groups, and serve the web dashboard and REST API on TCP 80, all over SPI on GP16 through GP20.

Q. Does the node support RDM or DHCP? No. The RS485 stages are transmit-only with no DE/RE control, so RDM is impossible on this hardware, and addressing is static IPv4 at 10.10.10.10 by default. The changelog's roadmap lists DHCP and RDM preparation as future items.

Q. Can the node receive Art-Net and sACN at the same time? Yes. Each of the four ports can be set to AUTO, Art-Net only, or sACN only, and conflicts between sources are handled by an LTP, simplified HTP, or first-source BLOCK policy with a one-second source timeout.

Q. Do I need a custom PCB or a DMX library to build it? No. The README describes the node as "built from common modules instead of a custom PCB", and DMX timing comes from the RP2040's PIO hardware, so the only libraries required are the Philhower RP2040 core and the Arduino Ethernet library.

Q. How do I install the firmware? Either compile the single .ino sketch in Arduino IDE with the settings table in the README, or copy the prebuilt .uf2 from the V2.1-OLED1.3 release of 2026-08-11 onto the Pico's BOOTSEL drive, then browse to http://10.10.10.10/ over the W5500 link.

Documents
  • ND-PicoDMX-System repository

    Bilingual English/Vietnamese README with DMX fundamentals, firmware internals, BOM, wiring tables, and REST API reference

  • Releases (prebuilt UF2 and BIN)

    V2.0.2 (2026-08-05) and V2.1-OLED1.3 (2026-08-11) with precompiled firmware images

  • Changelog

    Version history from v2.0.0 (2026-05-30) to v2.1, including the v2.0.2 stability and gzip dashboard work

  • v2.1 stable release notes

    SH1106 OLED and rotary encoder integration, with the Core 0 rate limits that keep W5500 polling unblocked

  • WIZnet W5500 documentation

    Hardwired TCP/IP Ethernet controller used as the node's network interface

  • Arduino-Pico core documentation

    Earle Philhower RP2040 Arduino core the firmware is compiled with, referenced in the README

Comments Write