Skip to content
16 channel RS-485 (DMX512 compatible) SSR.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


The dmxfire16 is an Arduino-compatible 16 channel solid state relay board with built-in RS-485 serial. It is the wired version of the wifire16 - much more information on the SSR side of the board is available there.

The RS-485 connection is DMX512 compatible with any number of Arduino libraries, so the dmxfire16 can be used to control LED strip lighting or flame effects with commercial off-the-shelf lighting controllers.

dmxfire16 photo

Feature Summary

  • Arduino compatible
    • Use "Duemilanove or Diecimila" as the Board in the Arduino IDE
  • Programmable via 6-pin FTDI header or 6-pin ICSP header
  • 16 DC load channels switched via MOSFET
  • RS-485 support (DMX512 compatible) via 8P8C connectors
  • Termination resistor and jumper for serial connection
  • All ATMega I/O pins are broken out on the board
  • DC load power is optoisolated from the control system power
  • Power connectors use 5mm screw terminals or Anderson Powerpole connectors
  • Load power status is reported to the microcontroller via an optoisolated input pin
  • Output power channels are controlled with a TLC5940 constant current driver that works like a shift register
  • Each output channel has a status LED for easy debugging
  • TLC5940 control lines are broken out to input/output headers, so boards can be chained without additional control systems


DMX Details

  • The DMXSerial library can be used.
  • A from the MAX-485 is positive signal, and goes to RJ-45 pin 1 / XLR pin 3.
  • B from the MAX-485 is negative signal (aka signal invert), and goes to RJ-45 pin 2 / XLR pin 2.
  • Many receivers implement A-B in hardware, so if these pins are swapped DMX is unlikely to work.

To send DMX data, CTRLDE (mapped to Arduino digital pin 6) must be set high:

  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
You can’t perform that action at this time.