# Optional DIY Art-Net → DMX node
Already own an Art-Net node? Skip this entire download. Use its manufacturer's setup, enter its IP and Port-Address in DmxFx, and enable output.

## Choose a board
- **ESP8266 NodeMCU / D1 mini:** first DIY Wi-Fi option. Arduino ESP8266 core 3.1.2.
- **ESP32 classic WROOM DevKit:** more memory, alternate Wi-Fi option. Compile-checked with ESP32 core 2.0.17. C3/S3 pin layouts are not interchangeable with WROOM.
- **Mega 2560 + W5500 Ethernet shield:** preferred wired DIY option. Arduino AVR core 1.8.8 and Ethernet library 2.0.2.
- **Uno R3 + W5500:** experimental, constrained SRAM; use static IP (default on Uno), no Serial logging, validate prolonged operation. Mega is preferred for wired use.

## Install and upload
1. Install Arduino IDE 2: https://www.arduino.cc/en/software/
2. Add the required board package URL in Preferences → Additional boards manager URLs:
   - ESP8266: https://arduino.esp8266.com/stable/package_esp8266com_index.json
   - ESP32: https://espressif.github.io/arduino-esp32/package_esp32_index.json
3. In Boards Manager install the corresponding core/version. Uno/Mega use Arduino AVR Boards; install Ethernet 2.0.2 through Library Manager.
4. Extract the ZIP and open `DmxFxNode/DmxFxNode.ino`. The `.ino`, `config.h` and `ArtDmxReceiver.h` must stay together in that folder.
5. In `config.h`, set your SSID/password and `PORT_ADDRESS`. Set `STATIC_IP=true` if you want the configured fixed IP and edit NODE_IP/GATEWAY/MASK for your LAN. Otherwise reserve its DHCP address in your router. Give each wired node a unique MAC.
6. For ESP without a router, set `NODE_ACCESS_POINT=true`, change AP_PASSWORD (8+ characters) and upload. Connect the controller to DmxFx-Node and use receiver 192.168.4.1.
7. Select the exact board and USB port. Disconnect/disable the DMX driver, click Verify, then Upload.
8. Power down and wire the transceiver. Restart, enter the node IP and wire Port-Address in DmxFx, then enable output. Hardware tests below remain required.

## Wiring
| Board | UART transmit → driver DI | Driver enable → DE |
|---|---|---|
| ESP8266 NodeMCU / D1 mini | GPIO2 / D4 (UART1) | GPIO5 / D1 |
| ESP32 classic WROOM | GPIO17 (UART2) | GPIO21 |
| Mega 2560 | pin18 / TX1 | pin2 |
| Uno R3 | pin1 / TX | pin2 |

Use a 3.3V logic-compatible RS-485 transmitter for ESP (for example MAX3485), or an appropriate 5V part for AVR. Prefer an isolated transmitter and isolated power for a stage installation. GPIO is not DMX: never connect UART directly to XLR.

DI receives TX. DE receives the enable pin and has a 10k pull-down so the bus stays disabled at boot. /RE stays HIGH; RO is unused. Connect logic ground and supply as required by the chosen module. Keep ESP8266 GPIO2 pulled high at boot. Disconnect the Uno DMX driver during uploads because pin1 shares its programming UART.

3-pin and 5-pin XLR: pin1 signal common, pin2 data−, pin3 data+. Leave 5-pin pins4/5 unconnected. Use numbered pins; drawings viewed from the solder side are mirrored. A/B labels vary: confirm the transceiver datasheet. On an isolated module pin1 goes to isolated bus common. Do not short across the isolation barrier. Use a female output XLR, proper DMX cable, and 120Ω termination across data+/data− at the last fixture.

## Behavior
512 slots, zero start code, nominal 40 Hz. UART sends a 108µs break and at least 24µs mark-after-break, then 250kbaud 8N2. Rate changes use the hardware UART. Output starts at zero. The receiver validates headers, length, protocol version, universe, source port and sequence; one controller owns it until the 2.5s timeout. Loss clears all slots. No RDM, ArtPoll, merging, web configuration, OTA or certification is claimed.

## Hardware acceptance checklist
- Confirm logic levels, module power, isolation and XLR pin numbers before connection.
- With a scope/logic analyser, verify break, MAB, 250k 8N2 and 512 data slots at sustained load.
- Use one fixture first. Check addresses 1 and 512 and its dimmer/shutter personality.
- Stop DmxFx and disconnect Wi-Fi/router/controller; verify zero within 2.5s of the last accepted packet.
- Reboot both ends, test DHCP/static IP and reconnection, then run a long soak test.
- Test multiple packets, wrong universe and competing controller; confirm no unwanted output.
- Do not treat a compile pass as electrical or live-performance validation.

Art-Net™ Designed by and Copyright Artistic Licence Engineering Ltd. This is a limited, experimental ArtDmx receiver. Review the official OEM/product requirements before distributing hardware: https://art-net.org.uk/art-net-specification/
