Cheap Color Kinetics DMX Driver
Color Kinetics (a subsidiary of Philips) builds RGB
based LED lighting fixtures. Some of the older, obsolete
models, can be purchased fairly inexpensively on ebay or
from distributors like wiedamark. They are typically powered and
driven by an expensive power supply unit called
the PDS-150e. This device interfaces a set of
lighting fixtures to either a DMX controller or a
proprietary Color Kinetics communication protocol. I
reverse engineered the DMX interface and came up with
this very simple interface circuit that lets a DMX
controller drive a few specific CK lights. The iColor
Cove 6”, iColor Cove 12” and ColorBurst 4 and 6 have a 3-wire interface carrying +24
volts, ground and a re-driven DMX signal. My
circuit re-drives the DMX signal using voltage
levels acceptable to the fixtures. All you need to
supply is a 24 VDC regulated power supply and a DMX
controller.
The CK fixtures implement 3 sequential DMX channels for
red, green and blue. While the iColor Cove fixtures have
DIP switches that allow setting any DMX address the
ColorBurst devices require a special Color Kinetics
programmer to configure the DMX address. By default their
DMX address is channel 1 (the first DMX data slot). It is
possible other CK fixtures will work with this circuit.
Look for fixtures that require the PDS-150e. Many newer
fixtures will not work as they use a different
communication protocol.
Connection to fixture (signal in middle)
Esquire 75th Anniversary E-ink Cover
Esquire magazine printed (assembled) 100,000
copies of their magazine with two simple segmented e-ink
displays driven by a Microchip PIC12F629 microcontroller
for their October 2008 special anniversary issue.
(Photo: Esquire
magazine)
It was a letdown for many expectant nerds but when I saw the photo series in MAKE magazine and realized it used
a PIC I had to get a copy and play with it. I added some
hardware to allow access to the PIC firmware after
tearing the electronics out (including, unfortunately,
part of the front cover). First I added a connector to
allow attaching a Microchip ICD-2 programmer to the
board. Then I removed the 0-ohm resistor R7 and replaced
it with a switch to disconnect the battery from the PIC
when I was reading or loading code. And finally I added
a reset button on the pads thoughtfully left for that
purpose by the board designers.
ICSP Connector and Power Switch
The Esquire editors mention that they encourage hacking and they
thoughtfully left the code in the PIC unprotected. I was
able to read it out and and over the course of a scotch
or two I reverse engineered it. All the time I have
spent writing PIC assembly for my main project has some
benefit I guess. Based on the strange little code
segments I found (e.g. a goto to the next line) it appears that the
firmware designer used a high-level language such
as PICBASIC or C. In any event the code is very
simple. They use the retlw instruction to build a series of 4
tables containing 16-bit data words that are loaded into
external shift registers to drive the display. The
firmware just indexes through the tables. An interesting
trick is the use of the sleep instruction coupled with a
watchdog-timeout to save power between animation steps.
After loading the display the PIC sleeps until the WDT
expires at which point the PIC loads the next step in
the animation and sleeps again. There are two animations
in the firmware. The first one runs only once when the
PIC is first reset. It is 21 steps long. Each change on
the display generally requires two steps. The first step
erases any previously set e-ink segments. The second
step sets the new e-ink segment(s). The second animation
is repeated over and over. It is 210 steps long. I
thought about changing the animation but decided it was
too much work to make a better animation than Esquire
had already created. I decided to use the two spare
output pins on the PIC to drive LEDs and animate them
using another table in the firmware.
LEDs along the bottom of the board
The LEDs are driven by active high
outputs on the PIC through 200 ohm resistors to limit the
current to about 5 mA each. They are used to limit the
maximum current drawn from the battery to prevent possible
life-shortening damage to it. I added a jumper to disable the
LEDs because the hack consumes orders of magnitude more
power than the unmodified board and would only last a
few hours running continuously.
I'd love to hear about your hacks. Like S1axter, I've decided not to publish the reverse engineered firmware because I don't know its copyright status. However I'm happy to chat about what I found.

