Introduction: 4 Channel DMX Transceiver
The DMX IO Platform Module is a 4-channel DMX transceiver. In receive mode it can control up to four channels of low-current TTL (3.3v, e.g., for servos and small LEDs) or high-current (12v, e.g., lamps, relays, solenoids, stepper motor, etc.) output. In transmit mode, it can issue commands to an entire DMX universe (512 channels).
Dual XLR-3 connectors allow the module to act as a receiver or transmitter (master) node in a DMX network and A 9-position DIP switch allows for address configuration without changing firmware.
The RS-485 hardware design allows for software switching between RX and TX modes allowing advanced programmers to experiment DMX receiver projects as well as serial- to-DMX applications.
What is DMX?
DMX is a serial protocol that runs over a RS-485 hardware link. It was originally designed to control lights (Chauvet has a bunch of cool DMX lights), but it is also used to control servos, LED's, stepper motors, relays, and other devices (Like a DMX Skeleton). It's an easy-to-use, robust protocol that allows for 1,500 Feet + cable runs using inexpensive cable.A DMX network has 1 master device, and 1 or more slave devices. 512 control channels are available and many slave devices use more than one channel (e.g., a light might use 1 channel for pan, another for tilt). Each channel can support 256 possible values, although some slave devices will combine 2 channels for 65,535 possible values. Channel values can be changed about 44 times per second, or 44Hz.
About This Module
You can add the DMX IO Module to the Propeller Platform, a protoboard, or even a breadboard. I'll talk about using it with a Parallax Propeller or Arduino at the end of this instructable.The DMX IO module was designed by Jon Williams and is licensed under the MIT License. He reviewed DMX (and this module) in his November Nuts n' Volts column, which you can read here (pdf).
You can download the design file or buy the kit or a bare PCB from Gadget Gangster. Pre-assembled modules are also available.
Build time is about 45 minutes. Warm up your soldering iron and go to the next step!
Step 1: Using: Usage Ideas
While your iron is warming up, here are a few examples of the cool things you can do with DMX;
Christmas Display
There are a number of DMX dimmer/switch packs (here's one) that let you plug in a lamp or a strand of christmas lights (or anything else that can plug into the wall), turn it on or off, pulse, or dim it. The DMX IO module can issue commands through DMX to dimmer/switch packs or other DMX devices; stuff like Fog Machines, lasers, bubbles, or a snow machine.
Do A Light Show
Color your house

W Hotel In Boston
The DMX IO module can send commands to hundreds of slave devices, like these COLORdash Quad wash lights.
Control Servos and Animatronics
The DMX IO module can also be used to receive commands to control servos, pneumatics, or nearly any device you can think of - you get 12V from the screw-down terminals, and the board also has headers for 3V devices.
Just a few fun things that can be done. Next, we'll start building the module, and at the end of this instructable, there's info on how to program it (don't worry, it's pretty easy).
Step 2: Make: Parts List
Parts List
- DMX IO PCB
- 9 position 300 mil DIP switch
- 3mm Green LED
- 4x TIP 125 Transistors
- 2x 200uF Electrolytic Capacitors
- 1x .1uF Radial Ceramic Capacitor
- 2x Shunt Jumpers
- 8 Pin DIP Socket
- 56 Pin Headers
- 4x 2N3904 Transistors
- 4x 2 Position Terminal Blocks
- RS485 / RS422 Transceiver IC
- 10 Pin Bussed Resistor Network (10k ohm)
- XLR3 Male Connector
- XLR3 Female Connector
- 3x 4.7k ohm Resistor (Yellow - Violet - Red)
- 4x 470 ohm Resistor (Yellow - Violet - Brown)
- 4x 1k ohm Resistor (Brown - Black - Red)
- 1x 330 ohm Resistor (Orange - Orange - Brown)
- 1x 120 ohm Resistor (Brown - Red - Brown)
Step 3: Make: Resistors
Add the first three resistors, 4.7k ohm (Yellow - Violet - Red) at R2, R3, and R4.
Step 4: Make: 120 Ohm Resistor
The 120 ohm Resistor (Brown - Red - Brown) goes at R1
Step 5: Make: 470 Ohm Resistors
R5, R6, R7, and R8 are 470 ohms (Yellow - Violet - Brown)
Step 6: Make: 1k Ohm Resistors
Right next to the 470 ohm Resistors goes the 1k ohm Resistors (Brown - Black - Red)
Step 7: Make: 330 Ohm Resistor
This should be your last discrete resistor, and it's used to limit the current to the LED. It's 330 ohms (Orange - Orange - Brown) and goes at R13
Step 8: Make: LED
Let's add the green LED, it goes right in the middle of the board, as indicated in the photo. Note that the shorter lead goes through the square hole.
This led is connected to P27. All you need to do to turn it on is bring P27 high.
Step 9: Make: Ceramic Capacitor
Add the ceramic Capacitor to the board, as indicated on the photo. This capacitor is not polarized, so it doesn't matter which lead goes in which hole.
Step 10: Make: 2N3904 Transistors
Add the 2n3904 Transistors as indicated in the photo. Note that the flat side of the transistor lines up with the flat side as indicated on the board.
Step 11: Make: Screw Down Terminals, Prep
There are 4 Screw Down Terminals, each has a small groove in one side and small bevel in the other. We're going to connect all of the terminals into a single 'stick'. First, identify the bevel on each of the terminals.
Step 12: Make: Screw Down Terminals, Connecting
Now, slide them together. You can see in the photo how the terminals slide together, from the bottom.
Step 13: Make: Screw Down Terminals, Complete
Slide all four of the terminals together, as shown in the photo. You'll have a single terminal 'stick'.
Step 14: Make: Solder Down Terminal
Add your newly created terminal stick to the board. Note that the 'clamps' (where you insert the wire you want to connect with the terminals) should be closer to the edge of the board.
Notice the boxes marked 'W' to the right of the transistors? Those are pin headers for controlling servos. The pin next to the W is the control signal, the middle pin is connected to +5V, and the pin on the right is connected to ground. If you want to use the DMX IO to control low power devices, add 3 pin headers at each location.
Step 15: Make: IC Socket
The IC socket goes at U1 with the notch closer to the ceramic capacitor.
The notch position doesn't actually matter for the socket (It will work either way), but it will help to make sure you put the IC in the correct direction, so it's better to do it correctly.
Step 16: Make: DIP Switch
The 9 position DIP switch goes at SW1. Each switch on the DIP is marked with a number (right below the switch), and the switch labeled '1' goes to the left, as indicated on the photo.
Step 17: Make: Bussed Resistor, Identifying Pin 1
The bussed resistor has a 'pin 1', it's identified by looking at the body of the component - pin 1 is marked by an arrow.
Step 18: Make: Bussed Resistor, Adding to Board
Pin 1 goes through the square hole that's also marked on the silkscreen, as indicated in the picture.
Step 19: Make: Jumpers
There are two jumpers on the board,
TERM: If the DMX IO module is an end node (transmit or receive), slide the jumper shunt to connect these 2 pins.
GND: If the DMX IO module is the master (transmitting) - only one node will use this jumper. If so, you just slide the jumper shunt to connect these 2 pins.
If the module is the master transmitter, you'll jumper shunt both jumpers.
If the module is the last receiver, you'll jumper shunt the TERM jumper only.
Otherwise, you don't need to jumper shunt either jumper.
If your pin headers comes in a big strip, cut 2 pins out with your dikes and add to the board where it's labeled 'TERM'. Cut out 2 more pins and add at 'GND'.
Step 20: Make: Electrolytic Caps
The 2 electrolytic caps (they look like little metal cans) go at the places indicated in the photo. The electrolytic caps are polarized - the longer pin goes through the square hole (also marked with a '+').
On the cap, there's a stripe. The shorter lead (closer to the stripe) goes through the longer lead - closer to the edge of the board.
Both caps are 220uF
Step 21: Make: TIP125 Transistors
There are 4 big TIP125 transistors, they go between the smaller transistors and the screw down terminal block. Note the tab on each transistor, it goes so the Tab is closer to the 'C' marked in the silkscreen.
Step 22: Make: XLR3 Connectors
There are 2 XLR connectors, (male and female) that go on the board. The female connector goes in the box labeled 'DMX Out' and the male connector goes in the box labeled 'DMX In'.
It's pretty easy to get these correct as the mounting holes on the board only fit the correct connector.
Step 23: Make: RS485 IC
The RS485 Transeiver IC (It's an ST ST485BN) goes in the socket. Note the notch on the IC goes on top, closer to the ceramic capacitor.
If you don't need the jumper shunts, just slide each over a single pin. This way, you won't lose them in case you eventually do need them.
Lastly, add pin connectors to the outside row of the board. These pins allow you to connect the DMX IO module to the Propeller platform, protoboard, or breadboard. On the board, each connection is labeled P0 - P31. The schematic has a list of connections (expresspcb format), but here's how they map out;
P0: DIP Switch '256'
P1: DIP Switch '128'
P2: DIP Switch ' 64'
P3: DIP Switch '32'
P4: DIP Switch '16'
P5: DIP Switch '8'
P6: DIP Switch '4'
P7: DIP Switch '2'
P8: DIP Switch '1'
P9: DMX channel 1
P10: DMX channel 2
P11: DMX channel 3
P12: DMX channel 4
P24: RX2 (Input)
P25: TXE (Transmit Enable)
P26: TX2 (Transmit)
P27: Activity LED
Step 24: Using DMX
For Propeller
RECEIVE
Jon Williams' November Spin Zone article provides a lot of detail about the DMX and how he developed the objects. He also coded an easy-to-use object (jm_dmxin) that will simplify reading DMX values. With your spin code, you'll just need to add the library;When you need to turn on the dmx monitoring,obj
dmx : "jm_dmxin"
to get the value of the channel, it couldn't be easier;pub main
dmx.init(24,16) '24 = receive pin, 26 = activity LED
With that dmx value, you can do whatever you want - display something on a TV display, flip on a light, do some pwm to a channel, etc.dmx.read(chan)
When you're done reading DMX values, you can free the cog with;
Jon has done a cooler version with an RGB lighting fixture using Bit Angle Modulation in his article.dmx.finalize
SEND
If your DMX IO module is the master transmitter, don't forget to slide on the jumper shunts to both jumpers. For software, there's a DMX send object in the Propeller Obex that makes for an easy DMX output. Here's an example of how to use it;First add the object to the object section of your spin code;
obj
dmxout : "DMXout"
to start it up;
sending dmx values couldn't be easier - just;dira[25] := outa[25] := 1 'brings the TX enable high
dmxout.start(26) ' starts the dmxout
dmxout.Write(2, 255) 'channel = 2, value =255
For Arduino
The DMX IO module has regular .1" pin spacing, so it won't fit on top of an Arduino, however, you can still connect it to the arduino with wires or a protoboard.There's a good guide on the Arduino Playground. For connections;
P0:P8 - DIP Switches
P9 - Channel 1
P10 - Channel 2
P11 - Channel 3
P12 - Channel 4
P24 - DMX RX
P25 - Transmit Enable
P26 - DMX TX
P27 - Activity LED
That's it - Do something cool with DMX!
16 Comments
1 year ago
I have not made this, just came across the article.
I think it is worth noting - the "C" silkscreen referred to at step 21, when installing the TIP125 PNP transistors IS NOT a reference to Collector (a pin on the transistor, which on a TIP125, is actually the centre pin. The C silkscreen refers to the common for each of the adjacent terminal blocks.
5 years ago
I want to buy this kit but all the links to do so seem to be dead. Can anyone help?
8 years ago
Hi there!
I undestood I need one Arduino connected to the master of those boards. But for the rest of them, the slaves, do I still need an Arduino for each?
And is it compatible with the simpleDmx library for Arduino?
Thank you very much and congratulations for this awsome project!
8 years ago on Introduction
I’m working on a project which is about making a rescue
robot . I have struggling with it for 4 months and now all the mechanical works
had been done . but I’m facing difficulty in make the robot to work with rf
module can u plzz help me…
I want make transmitter and receiver that can control the
motion…I mean that receiver should have control 8 dc gear motor and each dc
motor should have a forward and backward botton to control the motion ……can u
kindly help me with this project ….if u can make the circuit board diagram for
the PCB ….or any other suggestion plz reply……mail me at “sunny1995gagan@gmail.com”
10 years ago on Introduction
hallo everyone
I have an arduino uno with Atmega 8u2 Atmega and 328P. I am interested in creating this tool. But I am still confused to connect:
P0: P8-DIP Switches
P9-Channel 1
P10-Channel 2
P11-Channel 3
P12-Channel 4
RX's P24-DMX
P25-Transmit Enable
P26-DMX TX
P27-Activity LEDS
On the arduino Board because I seen pin is:
reset
3v3
5v
grd
grd
vin
A0
A1
A2
A3
A4
A5
0 > RX: 1 DIGITAL (PWM)
GDR
AREF
Please help because I am still new
Thanks
10 years ago on Introduction
Hi where can i find the pcb file for this ?
Thanks
11 years ago on Introduction
This is a very interesting circuit. I only need the module to act as a slave to a DMX signal which I already have and turn on some LEDs. Does it still need to be connected to the Propeller Platform to achieve this? Or would it be possible to just reproduce the necessary elements of the Propeller Platform in isolation to achieve this?
11 years ago on Introduction
How many leds did the Carol of the Bells movie require? Can I use this with the Propeller Platform usb? I love it.
11 years ago on Introduction
Can I get some guidance with how to wire this to an Aurdino UNO? Is there a schematic somewhere?
13 years ago on Introduction
Just wanted to let you know that DMX standards specify a 5-pin xlr connector.
The reason for this is safety. 3-pin xlr connectors are standers for microphones and they are often fed with 48 volts.
Some manufactures use 3-pin connectors because there cheaper and the other 2 pins are rarely used.
The only other permissible connector is RJ-45 in a fixed instillation.
But otherwise nice instructable.
Reply 13 years ago on Introduction
Yeah - plugging your DMX hardware into a microphone jack is a bad thing. But most of the hardware I found on the internet connected with an XLR3.
Reply 13 years ago on Introduction
That's unfortunate. But use what works I suppose.
Reply 13 years ago on Introduction
I agree 100% - the real problem is the the hardware manufacturers. By using XLR3 in their hardware, even if you wanted to use XLR5, you have to use an XLR5 - XLR3 adapter. And that adapter can be plugged into a mic.
I think the reason they went with XLR3 is that the cables are very, very cheap. Sure, a mic cable isn't standards compliant, but it will work just fine for most setups, and you can get 50 foot cables for $10!
Reply 11 years ago on Introduction
agree'd with the xlr3. but cable is important, audio xlr cable is a 80ohm , while dmx cable is 120ohm rated to allow data without hectic collision or devices going into a frenzy/shorting out.. xlr3 audio is used alot in industry sadly due to companys not wanting to spend a little extra for 5 pins the device will not use. And 80ohm cable can be used in short runs, but its not reccomended for long runs due to data packet errors and equipment malfunction which can be rather costly and dangerous..
13 years ago on Introduction
This is pretty impressive, and I wonder how I could incorporate it into an existing theater lighting system.
Also, where do you have access to all those moving lights, and were they controlled using only this device?
Reply 13 years ago on Introduction
I wish I had all those lights! The way DMX is structured, there's one master device and multiple slaves. The DMX IO can act as a master and send out commands to to 512 channels (aka, many devices). Each of the lights have a power plug, and an XLR connector to receive commands. You could program a sequence, or issue commands in real-time.
It can also act as a slave and receive commands from a master device. As a slave, it it has terminals and servo pin headers for up to 4 devices. So for something like the halloween setup, you might use one DMX IO per skeleton.