From London Hackspace Wiki
Revision as of 00:24, 30 October 2013 by JonRussell (talk | contribs)
Jump to: navigation, search
DMX Lights
Hackspace Unknown.png
Model ?
Sub-category Audio/Visual
Status Beta
Last updated 31 October 2021 17:36:56
Training requirement yes
ACnode no
Location Ground floor on the bookshelf and behind Tesla.
Maintainers Jon Russell

We have 2 DMX lights.


We've had them for year and years. They used to be run via ?beacons on IRC and flash when people opened the doors. Then the DMX shield we where using went somewhere (back to it's owner?). For ages we had no dmx shield for them. We've now have a new one. This page is an attempt to document the system and make it work.

Current setup

We have an Arduino Ethernet and an SK Pang DMX Shield. These are plugged in and working behind Tesla. Currently the Arduino is powered by a 5v PSU, but it has full 802.3af Power Over Ethernet capability, once we can find a spare PoE network socket for it. Its currently plugged in to the non PoE desktop switch behind Tesla. The Arduino is set to use DHCP and has a static reservation.


The two DMX lights are connected and mount temporarily on the top of the book shelf. They are currently set to ID 1 & ID 8. Each DMX light uses 6 channels.

This is the manual for the lights.

There is a very basic HTTP interface to control the lights.

The URL handling code is very basic, and to make life easier it needs an addition parameter at the start and end of the URL.

There are currently two functions setvalue.dmx & setcan.dmx

The Ardunio code is here


This function sets a single value for a single channel.

Exmaple 1:

On DMX Light ID=1, channel 5 = 255 & channel 6 = 192, put the light in to "Colour Cycle Mode" (see the manual). If you call these two URLs in succession, DMX light ID=1 will pulsate with cycling colours.

Example 2:

On DMX Light ID=8, channel 12 is ID8/Channel5. Channel 5 = 255 & channel 6 = 128, put the light in to "Colour Fade Mode" (see the manual). If you call these two URLs in succession, DMX light ID=8 will fade between colours.

Note the leading '?x' and trailing '&x'. The simple URL parsing code searches for '&c' and '&' to find the channel number and '&v' and '&' for the value. The URL needs the first '?x' so the c & v parameters start with &. The trailing &x, ensures there is an & at the end of the URL. This is just lazy programming, I'll fix it when I have more time.

The SetValue function can be used with any DMX light. Just add the DMX light to the string by daisy chaining the DMX cables. Remember to have the terminator at the end. Set the new light to and ID so it doesn't over lap existing light IDs. Currently channels 1-13 are being used, to the next light would need to be set to an ID above 13. Call the URL with the appropriate channel and value. To set multiple channels, call the different URLs in succession. Currently setvalue.dmx does not support setting multiple channel values at the same time.


setcan is a helper function for the specific hack space lights. It sets the RGB value for an ID.


Things to do

  • Find a permanent location for the Arduino board. It just needs PoE network socket.
  • Mount the Arduino board in a more suitable box. Its currently just tacked on to a piece of perspex.
  • Mount the lights somewhere useful. Although above the book shelf seems to work currently. They aren't actually all that bright and don't distract users in the room too much.
  • Add more features to the HTTP code.
  • Improve the URL handling code to do more error checking and cope with a wider range of URLs.
  • Update the old IRC function to use the new URL API.

OHM2013 10 channel DMX lights

Needs RJ45 <-> 3 pin XLR cables.

Needs a 30A @ 12V psu + 6 pin molex connector.


The controller:

Schmeatics + source code, (Jasper has a copy):

Gah, the receiver relies on power from the dmx bus, will have to re-work the board to get power from the main part (maybe not a good idea?).

For the sun PSU (300-1848) the pinouts are on here: section E.12


We have an Arduino Duemilanove with an ATMega 328, and a DMXSimple shield from Electric laboratory on Tindie.

We have a DMX bus terminator plug thing, and at least one 3 pin cable (XLR?).

The RS485 chip may be blown on the shield (?).

Using the DmxSimple library (has to be patched to change wiring.h -> wiring_private.h in DmxSimple.cpp).

I can't get the lights to do anything.

This might be the manual for the lights:

interestingly it says: "Do not connect the cable’s shield conductor to the ground lug or allow the shield conductor to come in contact with the XLR’s outer casing. Grounding the shield could cause a short circuit and erratic behaviour." and the cable we've got does have the shield connected to the outer lug, however the DMX shield dosen't seem to have the outer casing connected to anything

I can only find one cable, I thought we had 2?