Ich bin letztens über eine nette Seite gestolpert (www.ikeahackers.net) auf der Leute ihre Ikea Hacks präsentieren und habe dort durch Zufall auch den Ikea Dioder entdeckt.
Der Ikea Dioder ist, wie der Name schon sagt ein LED Bauteil, das gerne als Raumbeleuchtung, bzw. Hintergrundbeleuchtung verwendet wird. Hierfür sind 4 LED Streifen im Paket enthalten die per Kabel an einen Verteiler angeschlossen werden. Dieser ist für den Strom zuständig. An diesen Verteiler ist auch die Steuereinheit zum bedienen angeschlossen.
Ich habe den Dioder selbst schon einige male bei Ikea gesehen, konnte mich aber nie durchringen einen zu kaufen. Der Stückpreis von 30€ ist auf Grund der Bauteile sicher durchaus berechtigt aber mich störte die Art, wie man den Dioder bedient. Jedes mal, wenn man die Farbe wechseln will muss man aufstehen und die Farbe von Hand einstellen und kann es sich danach wieder bequem machen. Das stört mich doch ziemlich. Es gibt aber auch durchaus Module die eine kleine Fernbedienung mit sich bringen, aber auch hier muss ich sagen, dass ich keine Lust darauf habe 5 Fernbedienungen auf dem Tisch liegen zu haben mit denen man seinen heimischen Elektrozoo fernsteuert. Darum habe ich mir schon vor Jahren eine Universalfernbedienung gekauft und alle Endgeräte auf eine Fernbedienung reduziert. Noch dazu kommt, dass man den Dioder nicht dimmen kann, was leider ein weiterer Minus Punkt ist.
Nach dem ich aber die eingangs erwähnte Seite besucht hatte und gesehen habe wie der Dioder intern aufgebaut ist kam mir die Idee einfach einen eigenen Microcontroller auf die Platine zu löten und ein zusätzliches Modul zu bauen, das es mir ermöglicht Signale von meiner Universalfernbedienung zu lesen und diese in entsprechende Signale umzuwandeln. Damit kann man die LED Leisten einfach und praktisch vom Sofa aus steuern. Da ich in der Vergangenheit schon Erfahrung mit RGB LEDs gesammelt hatte (siehe: Prolight RGB Led 3 Watt – Software PWM ) konnte ich den Code relativ simpel adaptieren und zusätzlich noch den Code für den IR Empfänger hinzufügen.
Folgende Dinge sind notwendig um den Umbau zu bewerkstelligen
– IKEA Dioder
– Lötkolben mit sehr dünner spitze
– Microcontroller von Atmel (Attiny44, da dieser von den Anschlusspins auch gut passt)
– Atmel Flasher (zum Flashen des Programms auf den Controller)
– Eine Ruhige Hand zum löten
– Seitenschneider (klein und spitz, z.B. von Knipex)
– Infrarot Modul
Hier ist ein Bild wie die Platine nach dem auseinander bauen der Steuereinheit aussieht.

Hier ging es nun darum den vorhandenen Microcontroller zu ersetzen. Da ich keinen Programmer für den bereits vorhandenen PIC Controller besitze musste dieser also weichen. Das entfernen ging relativ einfach, in dem ich die Beine des Microcontrollers oben am schwarzen Gehäuse ab geknipst habe (ein Bein nach dem anderen). Dann konnte man das, was vom Microcontroller übrig geblieben ist relativ einfach mit einer Pinzette entfernen. Im nächsten Schritt habe ich dann die Reste der übrig gebliebenen Beinchen einfach mit dem Lötkolben entfernt. Dann sah das ganze so aus und war bereit einen neuen Microcontroller zu bekommen.

Wie gesagt, der Attiny24/44/84 ist Pin kompatibel zum Pic und passt genau auf die freien Lötstellen. Somit spart man sich eine extra Platine und noch mehr Geraffel wie z.B. ein neues Gehäuse usw… Ich habe mich für den Atmel44 entschieden. Er hat 2 Timer mit PWM, läuft auf 8Mhz mit dem internen Taktgeber und hat 4kb Speicher. 4kb ist nicht die Welt, da aber mein fertig kompiliertes hex um die 3,5kb hat war das ausreichend. Im gleichen Zug habe ich noch diverse Bauteile entfernt, die ich nicht mehr benötige, wie z.B. den kleinen Poti, der vorher für die Farbänderung zuständig war, in dem er die Spannung an einem Anschlusspin des Pic Microcontrollers verändert hat. Mit aufgelötetem Attiny44 sieht das ganze dann so aus:


Hier noch der Infrarot Sensor, den ich mit einer handelsüblichen IR Diode (TSOP1736) gebaut habe

Nach dem alle Bauteile verdrahtet waren konnte ich mich an das Programm machen. Hierfür habe ich im Vorfeld das Ikea Dioder Board mit einem Atmega8 verbunden, weil der Mega8 glücklicherweise über UART verfügt. Somit konnte ich auslesen ob die Elektronik funktioniert. Als UART lief habe ich die IRMP Bibliothek von Mikrokontroller.net heruntergeladen, die auch in der neusten Version mit dem Attiny84 (und somit auch Attiny44) funktioniert. Infrarot war dank der hervorragenden Bibliothek kein Problem und das bereits erwähnte PWM für die RGB Steuerung anzuflanschen ebenfalls nicht. Lediglich beim portieren vom Atmega8 auf den kleinen Attiny44 gab es etwas Probleme, da sich z.B. die Anzahl der Timer unterscheidet.
Wie erwähnt habe ich einen der Taster entfernt. Dort wird der IR Sensor angeschlossen (Bild 3, links oben). Dieser Anschluss führt zum PinB1 auf dem Attiny. Die restlichen Portpins liegen relativ günstig, so dass z.B. die RGB Ansteuerung auf die Pins PinA0, PinA1 und PinA2 gelegt sind. Den restlichen Pins benötige ich derzeit nicht, somit konnte ich auch (Bild 4) die Widerstände R1-R4 komplett entfernen. Nach dem alles getestet wurde kann alles wieder in das alte Gehäuse gebaut werden, das nun zwar ohne Funktion ist, aber seinen Zweck super erfüllt.

Nun muss die Infrarot Empfänger Platine nur noch etwas abgeschirmt werden und dann ist es bereit verbaut zu werden.
Die restlichen Bilder gibt es in der Galerie:
Hi,
gibst du den Source Code für den Atmel auch raus? Würde das Ganze gerne nachbauen. Von der Elektronik-Seite keine Thema aber Programmierkentnisse hab ich nur Grundlagen.
Ich kann dir den Source heute Abend per E-Mail schicken, man muss nur ein paar sachen vorher testen/beachten, aber das sollte machbar sein 🙂
Hi,
habe ne Frage in ähnlicher sache. Nun würde ich gerne zwei sets zusammenschließen. Das Heißt mangels leistung je 4 Streifen an den zugehörigen Netzteil betreiben. Da man so aber garantiert nicht einen einheitlichen Farbwechsel hin bekommt würde ich den einen Kontroller abschneiden und die Leitungen an den anderen kontoller anschließen.
Würde dies gehen, oder gibts da Probleme mit der Leistung des Kontolers?
So kannst du es theoretisch machen. Du musst aber dazu noch eine Masse Leitung (also GND) legen.
Also einfach die beiden Masse Anschlüsse die zu den Controllern führen verbinden, dann sollte das eigentlich tun.
danke
Hey,
ich würde mir auch gerne sowas bauen. Könntest du mir den Code vielleicht auch schicken? 🙂
Gruß,
Nico
Und was für einen Flasher nutzt du?
Hi Nico, ich schick dir den Code morgen zu.
Zum Flashen hab ich den MySmartUSB genommen. Es geht aber auch mit jedem normalen Flasher für Atmel µC :).
Viele Grüße
Marco
Hallo Marco,
ich finde den Ikea Dioder-Hack richtig geil. Deswegen würde ich den gerne nachbauen. Würdest du mir auch einmal den Sourcecode zuschicken? Wäre sehr nett.
MfG Jonas
Hi Jonas,
cool, dass dir der IRDioder gefällt! 🙂
Ich schicke dir morgen alles, bin gerade nicht zu hause.
Viele Grüße Marco
Alles klar, danke 😀
Gruß Jonas
Hey, Marco ist es möglich, dass du mir die Sachen heute noch schicken kannst? Weil ich die nächsten Tage nicht zu hause bin.
MFG Jonas
Die Mail ist eben raus :).
Viel Spaß damit
Grüße
Marco
Danke dir Marco. P.S. Habe dir noch eine Frage per E-Mail gesendet 😀
Gruß Jonas
Hey Marco,
kann man einfach die Wiederstände R1,R2,R3,R4 von der Platine des Dioder entfernen?
Hi Jonas,
Ja, entweder sauber ablöten, oder in der Mitte mit der zange durchtrennen und dann die ende ablöten. Für den Hack werden sie nicht benötigt.
Viele Grüße Marco
Hallo Marco,
wie kann ich am besten herausfinden welche Signale von der Fernbedienung kommen also den Controller erreichen? Du sagtest irgend etwas von uart?
Gruß Jonas
Also welche Knöpfe welches Kommando senden?
Hi Jonas,
Um das zu testen welches Protokoll meine Fernbedienung sendet und welche Signale auf der Fernbedienung was machen habe ich einen Atmega8 bemüht. Der hat die Eigenschaft, dass er eine Uart Schnittstelle hat. Ich habe mir mal ein Usb Modul gekauft, dass Uart kann und via Usb an meinen PC weitergibt. So konnte ich relativ einfach ausgeben, was denn beim Infrarotsensor ankommt. Entweder man macht es so, oder man geht hin und gibt die Signale via Display aus. Theoretisch könnte man das Signal auch an 8 LEDs ausgeben und dann ausrechnen, was ankommt. Es gibt viele Möglichkeiten das rauszufinden. Bei der letzten Version von irmp gab es war es so, dass die Taste 1 auch als Signal die 1 hatte.
Viele Grüße Marco
Hi Marco,
wie sehen die Kommandos von den Fernbedienungen so aus und wenn ich weiß welche Kommandos ich benötige wo kann ich diese für den Ikea Dioder einprogrammieren?
Könntest du mir deine uart Schaltung mal zeigen, wie du diese aufgebaut hast?
MfG Jonas
Hey könntest du mir mal deine ICQ oder Skype Nummer geben, damit ich dir etwas „flüssiger und leichter“ meine Fragen stellen kann? 😀
Gruß Jonas
Hi Jonas,
die Kommandos sind relativ einfach und gehen glaube ich von 0-255.
Die Kommandos, die von den dem Infrarotempfänger kommen stehen in der „Variable“ irmp_data.command.
Das ist aber eigentlich aus dem Code ersichtlich. Ich weise den Werten myR, myG und myB jeweils die Werte (max 64) zu und steuere damit die Farben.
Wie gesagt, der Code ist relativ simpel und es sollte durch die paar Kommentare, die ich reingeschrieben habe zumindest ersichtlich sein, wo was passiert und welche Variable ungefähr für was steht.
In meiner Mail von damals steht auch, dass die Hauptarbeit darin besteht, rauszufinden, welcher Knopf auf der Fernbedienung welches Kommando schickt. Wie du das machst ist dir überlassen.
Ich habe Uart genommen, weil ich ein Uart to USB Modul rumfahren hatte. Somit gibt es da keine wirkliche Schaltung, ich musste nur 2 Kabel verbinden, damit das geht. Der Attiny, der auf dem Board hängt kann aber kein Uart, darum der Umweg über den Atmega8.
Ich antworte gerne auf Fragen zu dem Projekt und erkläre, wo was passiert, aber ich habe im Moment leider keine Zeit per Icq fragen zu erklären, die sich mit dem generellen Problem „Wie kann ich etwas von einem µC ausgeben, damit ich weiss, was überhaupt passiert“ beschäftigen. Da muss man sich schon selbst etwas ins Zeug legen.
Alles klar. Ich habe jetzt die Befehle herausgefunden, nun muss ich diese ja nur im main.c Skript einbauen.
Um noch eine kleine Verständnisfrage zu klären, hast du den Output vom IR-Empfänger an den Pin des einen Tasters, den du entfernt hast, angelötet? Müssen die Fuses auch gebrannt werden?
MfG Jonas
Hi Jonas.
Genau, ich hab den IRSensor an den ausgelöteten Taster geklemmt, da ich ihn aus dessen Knopf herausführen wollte.
Die Fusebits habe ich auf den internen Oszillator gestellt, weil ja kein Quartz verbaut ist. Ansonsten muss man nichts weiter beachten.
Viele Grüße Marco
Hallo Marco,
ich weiß nicht genau warum aber der uC reagiert nicht auf die Befehle. Kann man iwie testen ob überhaupt die Led-Leiste funktioniert? Z.B. das wenn der uC Strom bekommt, automatisch grün angeschaltet wird.
MfG Jonas
Hey Marco,
habe es jetzt hinbekommen mein Dioder läuft.
Welche Farbeinstellung hast du eig für das Lila auf dem Bild? Also welche Werte für Rot,Blau und Grün?
Gruß Jonas
Hi Jonas,
ich weiß nicht genau, welche Werte es sind.
Es müssen welche aus der Funktion „switchColor“ sein. Ich kann heute abend aber mal nachsehen, welche es sind, wenn ich zu Hause bin.
Viele Grüße
Marco
p.s. super, dass es bei dir läuft!
Hallo Marco,
ich habe einen automatic Modus eingebaut der alle Farben langsam durchgeht also smoothcolorchange. Dafür habe ich colorstepd von 2 auf 1 gestellt. Als ich es anschließen getestet hat es gut funktioniert nur es flakkert stark weißt du warum?
Gruß Jonas
Hallo Marco,
wird eigentlich die RBG.c verwendet oder wie kann ich sie verwenden wenn ich ein Fading programmieren möchte?
Hallo Marco, könntest du mir den source auch zukommen lassen?
besten Dank
Gruß gueee
Ich schicks gleich vorbei
Hi, mich würde das auch brennend Interessieren! Mich hat das fehlende Dimmen bisher auch davon abgehalten. Wäre super wenn du mich „einweihen“ würdest 🙂
Hi Marco,
ich war heute bei IKEA und würde mir ein Loch in den Bauch freuen, wenn du mir deinen Quellcode zusenden könntest.
Viele Grüße
Christian
Hey,
Echt coole Idee.
Ich will mir das nachbauen. Kannst du mir bitte auch deinen Quellcode dafür zusenden?
Vielen Dank
Hallo Marco,
ich habe auch Interesse an deinem Code.
Schickst du mir den auch per Mail?
Danke 🙂
Hallo,
ein tolles Projekt! Zum Einen wollte ich Dich nach dem Code fragen und zum Anderen wollte ich fragen ob die Dioder wirklich pulsieren oder ob es nur durch die Kamera so im Video ausschaut?
Danke
Nik
Hallo,
könntest Du mir die Quellen auch schicken?
Viel Erfolg weiterhin!
Hi Marco,
bin gerade über deinen coolen Hack gestolpert. Wirklich Klasse! Eine banale Frage. Wäre die Orginalsteuerung auch für 8 Leisten ausgelegt, sofern ein entsprechend dafür ausgelegtes Netzteil integriert wird ? Ich bin mir nicht sicher, ob sich die Transistoren da in ihre Einzelteile auflösen 😉
Danke Dir
Hi,
gute Frage, danach habe ich gar nicht geguckt. Ich würde mal davon ausgehen, dass die bestimmt ganz schön glühen werden, denn schließlich ist ja nur einer pro Farbe verbaut. 🙂
Wenn man nun die doppelte Menge dran hängt wird es vermutlich kritisch. Ich würde es nicht machen. Wenn es umbedingt die Ikea Dioder sein müssen kannst du auch einfach die beiden Steuerelemente „koppelt“ in dem du das Signal des einen an die Mosfets des anderen anhängst (also nur das Schaltsignal der 3 Mosfets + Masse). Aber das ist halt auch ein gefrickel und alles andere als hübsch :).
Ich habe mir in der Zwischenzeit auf Ebay eine 5 Meter lange LED Leiste gekauft und diese ebenfalls modifiziert. Ist unterm Strich auch etwas einiges günstiger
Wenn du selbst etwas mit Mikrokontrollern machen willst solltest du mal nach LED Leisten mit WS2811 LEDs suchen. Das wird eines meiner nächsten Projekte und macht die Ansteuerung der LEDs auch um einiges einfacher.
Viele Grüße
Marco
Hallo Marco,
ich finde deinen Ikea Dioder Hack super!
Was ich mich aber frage ist, ob du auch mithilfe von Software PWM ein Fading der Farben hinbekommen hast.
Würde mich über eine Rückmeldung freuen.
Gruß Ralf
Hallo Ralf,
Leider kam ich noch nicht dazu mich mit der Software weiter auseinander zu setzen. Ich habe demnächst noch ein RGB LED Projekt vor der Brust, vielleicht schaffe ich es dann den Code zu erweitern. Im Moment fehlt mir auf Grund de aktuellen Projekte irgendwie die Zeit.
Viele Grüße Marco
Auch wenns schon älter ist: Könntest du die sourcen rüberschicken?
Besten dank !
Paul