Here’s an altered PCB that gives USB control to an Ikea Dioder. This is a $50 product that comes with four strips each containing nine RGB LEDs. The stock controller has a color selection wheel and a couple of buttons. [Rikard Lindström] wanted to use it to match ambient light to the colors of his computer monitor — yes, it’s another ambilight clone.
Since he already had a bunch of AT90USB162 chips on hand he chose that route. These chips have native USB support (he’s using the LUFA package which is a popular choice), but no on-board ADC. That means no need for the potentiometer from the original controller because there’s no easy way to read its value. Removing it made plenty of room for his add-on PCB. He also depopulated the PIC microcontroller that originally drove the unit, soldering to the empty pads in order to connect is own board. The finished product fits back in the original case, with the addition of a USB cable as the only visible alteration. Now he can dial in colors using a program he wrote.
In case you’re wondering, it looks like this is a newer version of control circuitry when compared to the original Dioder hack we covered.
The AT90USB162 has an an along comparator so one could use the old trick of creating a potentiometer-capacitor sub-circuit, charging the cap up with the pin acting as GPIO, then switching it to analog comparator duty and comparing against the internal bandgap voltage. Count how long it takes to discharge (i.e. for the comparator to change value) and you have a workable analog input for this job!
And another way would be to replace the pot with a rotary encoder.
Just an FYI, DIODER’s are $39.99, not quite $50. I’m sure that extra $10 isn’t a deal-breaker, but I figured I’d let people know.
http://www.ikea.com/us/en/catalog/products/80192378
Thanks.
Saves me from searching for it as well. I like links :)
There’s more than one product named DIODER.
http://www.ikea.com/us/en/catalog/products/50192365
This one has the four strips with nine rgb leds and costs $49.99 like the article says.
There’s also at least one more DIODER product that has the strips but with only white leds, so it’s really easy to get confused.
A suggestion for dioder-hackers: why not just reprogram the PIC and overload the existing inputs for communication (assuming there are no open pins)?
A zero hardware hack (well except the programmer).
I don’t really think a zero hardware hack could add much, some new light modes maybe. But adding a simple piece of hardware could really add a great deal of value, like an IR-receiver and an old remote.
I don’t know much about PIC, but assuming it’s not locked down to make programming impossible the actual programming shouldn’t be hard.
There is even test pads i assume is for factory programming which is big and easy to solder.
I have some schematics here if anyone is interested: http://slashhome.se/p/projects/id/ikea_dioder_re/#project
Here is another Dioder hack. This one is RF controlled and therefore has no additional cables. Its based on the TI-eZ430-RF2500 and fits nicely in the original housing (the old small one).
http://www.e18.ph.tum.de/~dbuescher/dioder/
Seems like the perfect project for my home theatre.
Does anybody know of “ambilight” code that runs on a Mac?
— there are no stupid questions, only inquisitive idiots
My simple programs is written in Python using PyUSB (0.4) so if you install them the dioder_cli script should work (but it’s not tested on other systems), dioder_pulse and dioder_gtk have other dependencies that could be a quite a bit harder to satisfy on OS X.
I haven’t tried analyzing video, but it’s not a high priority because the dioder hardware is single channel (all strips have same color), for edge color detection of video at least four channels is needed to get a good effect (one per edge).
But if you think one channel is enough, and you are prepared to write some code it might be something for you.
Anybody have any luck getting this code to compile? Keep getting undefined references ti functions like USB_Init.
I suppose it’s about the firmware.
On line 116 in the makefile you have to change LUFA_PATH to where ever you have uncompressed LUFA on your system (or use the same kind of directory naming as me).