Wie man auf einem LED-Streifen einen unbekannten LED-Controller herausfinden kann. Für meinen 3D-Tower habe ich noch eine LED Beleuchtung gebraucht und im Keller von einem LED-Streifen von Lidl ( Livarno Home LED Band digital, 5 m, mit 166 Lichteffekten – Link zu Lidl ) gefunden. Dieser LED Streifen kostete zum Kaufzeitpunkt 17,99 € inklusive Netzteil (24V | 1A) , 5 Meter LED-Stripe und IR-Fernbedienung.
Natürlich ist auf dem Streifen nicht zu erkennen, welcher LED-Controller hier verwendet wurde. Weder auf der Verpackung (Karton) noch auf dem Streifen am Controller selber war etwas zu entziffern. Und einen unbekannten Controller bekommt man ja bekanntlich sehr schlecht angesteuert.
In diesem Beitrag zeige ich dir, wie ich herausgefunden habe, welcher LED Controller verbaut worden ist, ohne den Controller im Vorfeld zu kennen. Dieses kannst du auch auf alle anderen LED-Strips anwenden. Natürlich gibt es keine Garantie, dass das ganze mit allen am Markt verfügbaren LED-Streifen funktioniert.
Bill of Material | BOM
Artikel | Beschreibung | Preis | Link |
ESP32 DevKit C V4 | 32 Bit Mikrocontroller 3er Pack | ~23€ | Amazon.de* |
ESP32 DevKit C V4 | 32 Bit Mikrocontroller 1er Pack | ~10€ | Amazon.de |
Breadboard | 5er Pack | ~10€ | Amazon.de |
Breadboard + Jumper | „Platine“ fürs Prototyping | ~15€ | Amazon.de |
Lidl LED Stripe | Lidl Livarno Home LED Band | ~18€ | Lidl.de |
Der Lidl Livarno Home LED-Streifen Übersicht + Vorbereitung
Der mir zur Verfügung stehende LED-Streifen, war wie ausgangs erwähnt, der günstige Streifen vom Lidl. Auf dem Karton sowie auch auf dem Streifen selber konnte man keine Beschriftung für den Controller finden. Auch im Netz war dazu zum aktuellen Zeitpunkt nichts auffindbar – ausschließlich über den LED-Stripes von „Livarno Lux“ vom Lidl gab es ein paar Einträge – meist jedoch über die Variante mit Zigbee Controller.
In dem Karton befanden sich der 5 Meter LED-Streifen, ein 24V 1A DC Netzteil sowie eine IR-Fernbedienung. Der IR Empfänger befindet sich bei diesem LED-Streifen ganz vorne auf dem allerersten Stück des LED-Strips.
![Lidl Livarno Home LED-Streifen - Aufbau der Kontakte und des Chips](https://devarounder.de/wp-content/uploads/2022/08/IMG_0064-300x225-1.jpg)
Für meinen Testaufbau habe ich mir das letzte Stück des LED-Streifens abgetrennt und die Kontakte zum Löten freigelegt. Auf dem LED-Stripe kann man die Anschlüsse:
– VCC (24 V)
– DI
– GND
– GND
Ablesen. Die beiden GND Pins habe ich direkt gebrückt. Somit musste es sich schonmal um eine Ansteuerung über 3 Leitungen bzw. 2 Leitungen handeln. Es konnte somit schon kein Controller mehr sein, der gesondert ein Signal für R,G und B benötigt.
Auch konnte der VCC Pin für die Ansteuerung des Controllers direkt ausgeschlossen werden. In dem Set liegt ein 24V Netzteil bei, welches ich in der Verbindung aufgetrennt habe und sowohl für den Testaufbau als auch für die spätere Verwendung im Projekt genutzt habe. Es bleiben also an sich die beiden Pins DI und GND zur Ansteuerung des Controllers.
Eine Alternative Idee über einen IR Blaster | IR Sender
Hätte mein nachfolgender Versuch nicht funktioniert, hätte ich einen IR Sender (Arduino) Modul* genommen und damit die Fernbedienung imitiert, um den Streifen anzusteuern. Zum Glück hat der nachfolgende Aufbau und Ablauf ausgereicht, um den Controller herauszufinden :).
Testaufbau, um den Controller des Lidl LED Streifens herauszufinden
![Lidl Livarno Home LED-Streifen angeschlossen an ein ESP32 Entwicklungsboard um den Chip herauszufinden](https://devarounder.de/wp-content/uploads/2022/08/IMG_0065-600x450-1.webp)
Wie oben beschrieben habe ich am LED Streifen die beiden GND kontakte direkt gebrückt. Auf die VCC Leitung habe ich direkt das 24V Netzteil angeschlossen sowie das GND des Netzteils auf die doppelte GND Leitung vom Streifen gelegt.
Auf einem Breadboard habe ich einen ESP32 gesetzt und den GPIO PIN 5 mit dem DI des LED-Streifens verbunden sowie GND vom ESP32 und GND des LED-Streifens verbunden.
Beim ESP32 habe ich einen ESP32 DevKit Typ C V4 verwendet – ein ESP8266 hätte auch ausgereicht :).
Zusätzlich wird eine Entwicklungsumgebung wie die Arduino IDE oder Platform IO benötigt. Die nötigen Treiber für den ESP32 müssen installiert sein.
Schau dir auch gerne folgenden Beitrag an, falls du das ESP32 Board in der Arduino IDE nicht vorfinden kannst: ESP32 Board in der Arduino IDE installieren (Windows, Mac OS X, Linux)
Die Treiber für den ESP32 findest du in der Dokumentation – oder direkt bei Espressif (hier)
![Testaufbau Schematic vom Lidl LED Streifen angeschlossen an den ESP32](https://devarounder.de/wp-content/uploads/2022/08/Testaufbau-ESP32-LED-Stripe_Lidl-24V-DI-GND-1024x594.webp.pagespeed.ce.vcrJhPWzje.webp)
Als 5V Spannungsquelle habe ich im Schaltplan einen 7805 Spannungsregulator eingesetzt. Es kann aber auch einfach die Spannung vom USB-Port für den Test verwendet werden.
FastLED Bibliothek zum herausfinden des LED-Controllers
Über einen Kollegen wurde ich auf die FastLED Bibliothek aufmerksam. Mit dem Hinweis, dass ich doch damit den LED-Controller herausfinden könnte, durch das Ausprobieren verschiedener Protokolle.
FastLED ist eine effektive, ready 2 use Bibliothek für Arduino, um adressierbare LEDS wie zum Beispiel WS2810, WS2811, LPD8806, Neopixel und viele mehr anzusteuern.
Ab der FastLED Version 3.5 unterstützt die Bibliothek neben dem Arduino und dem ESP8266 auch den ESP32 sowie viele weitere Boards. Mit etwas Anpassung kannst du dieses Tutorial einfach auf deinen verwendeten Controller übertragen.
Die FastLED Bibliothek binden wir in unser Projekt ein und können anschließend mit dem Code starten.
Den LED-Controller Typen ausfindig machen | LED-Controller herausfinden
Mit der FastLED haben wir nun über 30 verschiedene Protokolle, die schnell und einfach eingesetzt werden können. Nachfolgend findest du den Ready to use Code. Diesen packst du dir in deine IDE und lädst ihn anschließend auf den Controller deiner Wahl – in meinem Fall der ESP32 DevKit Typ C .
Hierbei musst du natürlich die angegebenen GPIOs beachten – also DATA_PIN und CLOCK_PIN anpassen sowie die Anzahl der LEDs, du angeschlossen hast und somit adressieren möchtest in der Variable NUM_LEDS.
Umgang mit dem Ready 2 Use Code | LED-Controller herausfinden
Den Code hast du in der IDE hinzugefügt und direkt auf den Controller deiner Wahl gezogen. Beginnt dein LED-Streifen nun zu leuchten, hast du bereits einen Glücksgriff gelandet und den richtigen Typen ausfindig gemacht. In meinem Fall habe ich 8 Versuche benötigt, um den richtigen Typen zu finden.
Leuchtet dein LED-Band nicht, mit dem ersten Überspielen des Codes, kommentierst du in der void setup() die unkommentierte Zeile wieder ein und unkommentierst eine andere Zeile. Dadurch sprichst du mit deinem Controller nun ein anderes Protokoll über den GPIO 5 Pin.
Beispiel:
Im ersten Druchlauf ist: FastLED.addLeds < WS2811, DATA_PIN, RGB > (leds, NUM_LEDS); unkommentiert. Nun hat dieser Vorgang deinen Stripe nicht zum Leuchten gebracht. Nun veränderst du die Zeile in: // FastLED.addLeds < WS2811, DATA_PIN, RGB > (leds, NUM_LEDS); und nimmst die beiden „//“ bei einer anderen Zeile um einen anderen Controller Typen auszuprobieren.
Diesen Vorgang wiederholst du so lange, bis dein LED-Streifen zu blinken beginnt. Sobald dein LED-Streifen in weiß blinkt, hast du den richtigen Controller gefunden. Diesen kannst du aus der Funktion in der void setup() direkt auslesen und damit weiterarbeiten.
Beispiel Code – Ready to use mit ESP32
#include <FastLED.h> // Hier ist es wichtig, dass du die Anzahl deiner angeschlossenen LEDs angibst #define NUM_LEDS 60 // Der PIN an dem dein DI Pin der LEDs angeschlossen ist #define DATA_PIN 5 // Wenn dein LED-Streifen noch einen CLK Pin besitzt, dann kannst du diesen gleich mit definieren. // Wird bei den LEDs in diesem Beitrag nicht benötigt. #define CLOCK_PIN 13 // Hier ein Array der LEDs bilden CRGB leds[NUM_LEDS]; void setup() { delay(2000); // Ab hier kannst du Zeile für Zeile durchgehen und den Kommentar entferne, um // den richtigen LED-Typen zu finden // ### Controller ohne Clock ### // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // FastLED.addLeds<SM16703, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1829, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1812, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1904, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS2903, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2852, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GS1903, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SK6812, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA106, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<PL9823, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS); FastLED.addLeds < WS2811, DATA_PIN, RGB > (leds, NUM_LEDS); // FastLED.addLeds<WS2813, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GE8822, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD1886, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD1886_8BIT, DATA_PIN, RGB>(leds, NUM_LEDS); // ### Controller mit CLock ### // FastLED.addLeds<LPD6803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SK9822, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); } void loop() { for (int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) { leds[whiteLed] = CRGB::White; FastLED.show(); delay(100); leds[whiteLed] = CRGB::Black; } }
WS2811 ist der Controller / die LED im Lidl Stripe
Im Falle des Lidl Livarno Home LED Bandes ist der Controller WS2811 verbaut. Ich habe von oben nach unten begonnen, die Codezeilen auszukommentieren und bei der Zeile: FastLED.addLeds < WS2811, DATA_PIN, RGB > (leds, NUM_LEDS); begann der LED Streifen an zu blinken :). Anschließend habe ich noch weitere Patterns aus der FastLED Bibliothek ausprobiert, die alle direkt funktioniert haben. Somit kann ich mir ziemlich sicher sein, dass das Protokoll für den WS2811 das richtige für die Lidl Livarno Home LED-Stripes ist. Und damit kannst auch du den LED-Controller herausfinden für den für dich aktuell noch unbekannten LED Controller.
Bei Fragen oder Anregungen komm gerne jederzeit auf mich zu. Ich freue mich auf deine Kommentare und werde dir natürlich schnellstmöglich antworten :).