Another IKEA DIODER HACK
Another IKEA DIODER HACK
The IKEA DIODER led strip gadget is a nice toy from IKEA. It costs about 60 euros and for that kind of money you get 4 led strips containing 9 high-power RGD-LEDS each.
These LED-strips can be puzzled together to a certain amount of freedom. You can make a long tall straight line containing the 4 bars attached directly to each other, or use the small flexible connectors in between bars to make corners. You can even make a cross by plugging the LED-strips in the base socket.
The DIODER comes with a control box with only one button that allows you to power up the LEDS, switch between 7 preset color settings, loop over the 7 preset colors, power down the thing: all pretty much basic stuff.
Although this product delivers a fair amount of value for money, I do not want to live with the artificial limitations of this thing. These RGB-leds are capable of doing so much more then just offering 7 color presets.
As I was surfing the internet, searching for more information on the DIODER, because I was thinking of reusing the LED-strips and connecting them to my own hardware (I use a GHI Embedded Master) I came across this page of Joseph Coffland about his DIODER hack. This clever guy did what I planned on doing, but he used a ATTiny2313 microcontroller to make the thing really come alive. He did a good job on preserving the original out-of-the-box functionality with his hack so lots of respect dude! (Especially on his soldering skills... man that 12F629 is pretty hard to desolder)
Another IKEA DIODER HACK
INGREDIENTS:
-SOLDERING SKILLS
-DEMOLITION SKILLS
-TOO MUCH SPARE TIME
AUTHOR:
SVEN MEIRSMAN
THANKS TO:
Connecting the bars to each other
Flexible connectors
The base LED-strip socket
IKEA DIODER
I did not want to solder a lead to each pin of the DIODERs’ PIC 12F629 that is used inside the controller box like Joseph did. And trust me, if your soldering skills are bad, you do not want to either. So at first I thought of only reusing the LED-strips and building my own driver circuit for the LEDS. (a Microcontroller output can not power 36 high-power LEDS, you can also trust me on that one ;-))
But then I needed some 2N2222’s like they used for the Arduino RGB mixer. (Which I had not lying around the house.)
Then I spotted the 78L05 voltage regulator on the controller board of the DIODER, it looks like the driver circuits in the board are controlled by the 5V coming from the PIC microcontroller, the same 5V my embedded master delivers as an output. And then it came to me: just reuse the board itself, with its drivers and just get rid of the pic on the board. So I desoldered the PIC and used one of those flexible connectors for making a corner, peeled of the plastic jacket and used that connector to make a connection to the base of each driver transistor. Because the VSS and VDD could be shared between my Embedded Master and the DIODER-controller, I only needed to solder on those 3 connections, like you can see on this picture:
Controller board without its PIC microcontroller and with the flexible connecter soldered to the 3 resistors leading to the driver circuits:
This approach allowed me to reuse what the DIODER has on board and without the need for additional components. (If you don’t count the Embedded Master)
My Approach
Although recently discontinued, the Embedded Master by GHI Electronics in one neat piece of embedded system. I use the Embedded Master Development System which comes with a nice 4,5” TFT touch screen and can be programmed using the .NET Micro Framework and C#, which happens to be one of the frameworks and programming languages I know ;-)
The system includes 5 PWM channels, we only need 3: one for each color.
After hooking up the DIODER controller board I ended up with the RED-channel connected to PWM 3, the GREEN-channel to PWM 1 and the BLUE-channel to PWM 0. After this, controlling the DIODER is a piece of cake:
That is all there is to it: Create a PWM object for each color channel, pick a frequency and set the duty cycle of each channel. (Which I have set to 50% for all channels in my example)
Embedded Master