Cheap Color Kinetics DMX Driver



ck_hack_system
ck_driver_board

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.

ck_fixture_connection
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.

esquire-e-ink-cover-1008-lg
(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.

esq_brd_additions1_sm
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.

esq_brd_w_leds
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.

finished_cover
(click image for video)

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.