Dioder is a nice full RGB LED light strip sold by Ikea at a reasonable price. Unlike some other products Dioder offers very smooth color cycling and a continuous color control feature. Of course such a LED strip is only half as much fun if it's not computer controlled. Since it was going to be installed close to my Alix router, I decided to build an I2C interface to operate the LED strip. While I was at it, I threw in a couple of relays to switch heavier loads and a Sensirion SHT 21 temperature/humidity sensor (thanks again, megaR!) for good measure.
Below you can find the PCB layout and the software I use to get it all going. I use a PCF8574T I2C 8-bit I/O expander to simulate button presses on the LED controller and to toggle the relays. A MCP4706 I2C 8-bit DAC replaces the potentiometer to control the color. Since the whole I2C bus is 3.3 V but we need a 5 V reference for the DAC, a couple of FETs couple the 5 V-fed DAC to the I2C bus. The SHT 21 can be mounted onboard or on a small PCB connected by a 4-pin ribbon cable. Next to the LED control and the 2 relays there are 3 remaining I/O bits that can be used via a pin header.
The web interface has buttons for on/off, smooth color cycle or disco flashing, and a slider to manually set a color. Furthermore, it displays current temperature and humidity. I use i2cset to control the PCF8574T and the DAC and the sht21 module in recent kernels to read the temperature and humidity values. C wrapper programs take care of the privilege escalation from www-data (CGI) to root (i2cset).
The following pictures show the connections between the boards:
note the black cable connecting +5 V (C 35 on the alix board) to the interface.
web site files