Aldi RGB LED Strip (IClite) auf TMS1829 Basis mit dem Arduino steuern

Aldi Süd verkauft hier gerade wieder 5m LED Bänder mit 150 RGB LEDs. Diese LEDs sind in 3er Gruppen unabhängig ansteuerbar und natürlich ist ein kleiner Controller und auch eine Fernbedienung mit in der Packung. In der Packung findet sich dann auch ein Hinweis auf den Hersteller/Importeur: EuroTechnicsTrade GmbH aus Meschede
Aldi_LED_Band
Aldi_LED_Band2

Hier geht es darum, dieses LED Band mit dem Arduino zu steuern. Im Wesentlichen ist das Aldi LED Band kompatibel zu den Adafruit RGB LED Produkten. Auf dem Band sind 5050 RBG LEDs verbaut. Alle 3 LEDs ist ein TM1829-Chip auf dem Band vorhanden, so dass die LEDs in 3er Gruppen über ein serielles Protokoll unabhängig gesteuert werden können. Im Vergleich zum Adafruit Produkt sind jedoch die Farbkanäle vertauscht. Die Adafruit Libaray unterstüzt RGB und GBR kodierte Schaltungen. Das Aldi Band ist allerdings BRG kodiert.

Im Netz findet sich auch eine adaptierte Library für den Aldi Streifen (klick). Diese basiert auf einer Opensource Library von Adafruit. Die vorgeschlagene Aldi-Anpassung ist ein etwas arger Hack. Damit ist die Library nicht mehr kompatibel zu den Adafruit Produkten. Das ist nicht wirklich günstig, da die veränderte Library weiterhin Adafruit heißt. Weiterhin „crasht“ das LED Band, wenn man den blauen LED Kanal voll aufdreht.

Last but not least handelt es sich bei der gehackten Library handelt nicht um die aktuelle Version der Adafruit Lib. Leider habe ich es bisher nicht geschafft, die aktuelle Version der Adafruit Lib ans Laufen zu bekommen.

Also habe ich folgendes verändert:
1. Kompatibilität zu den Adafruit Produkten wieder hergestellt.
2. Einen #define für die BRG Kodierung des Aldi LED Strips eingebaut. Damit werden alle Kodierungen unterstützt.
3. Die Library auf Aldi_NeoPixel umbenannt. Damit kann sie parallel zu neueren Versionen der Adafruit Library in der Arduino Entwicklungsumgebung betrieben werden. (Wenn man den Code von einem Adafruit Projekt verwenden will, muss man nur den Konstruktur im Code von Adafruit auf Aldi umbenennen und dort die Kodierung auf BRG umstellen).
4. Einen Fix für den blauen Kanal eingebaut.
5. Das Beispiel für das Aldi Band angepasst (BRG Kodierung + 50 LED Kanäle)

Hier könnt Ihr die Aldi_NeoPixel Library herunterladen: Aldi_NeoPixel.zip
Bei den neueren Versionen der Arduino IDE kann man das zip-Archiv der Lib per Menü hinzufügen: Sketch –> Include Library –> Add .zip Library …
Falls es eine alte IDE ist, muss die Arduino Entwicklungsumgebung beendet werden. Dann das Verzeichnis Aldi_NeoPixel in das library Verzeichnis der Arduino Umgebung kopieren. Typischerweise ist diese hier: C:\Program Files (x86)\Arduino\libraries . Danach die Arduino Umgebung starten.
Unter Datei->Beispiele->Aldi_NeoPixel->strandtest_aldi sollte das Beispiel laden.

Die Verkabelung ist sehr einfach. Pin D6 über einen 300-500 Ohm Widerstand an den DI Eingang des Bandes legen. Über den Original-Controller kann man das Band mit den nötigen 12V Spannung versorgen. Die Stromversorgung des Arduinos läuft hier noch über das USB Kabel. Das sieht dann so aus:
Aldi_LED_Verkabelung
Aldi_LED_Verkabelung2

Und so sieht das Ergebnis aus:

Was tun wir jetzt damit? – Mein erstes Projekt soll eine Lichtorgel/ RGB-Spectrum-Analyzer werden.
Soviel verrate ich schon mal: Prototyp läuft 🙂

40 Gedanken zu „Aldi RGB LED Strip (IClite) auf TMS1829 Basis mit dem Arduino steuern

  1. Kirschi

    Hey,
    Danke für die schöne Anleitung und Erklärung.
    Eine Frage: Wieso muss ein die Ansteuerung der 300-500 Ohm-Widerstand?
    Dankeschön schonmal und
    Viele Grüße

    Antworten
  2. andikt

    Vielen Dank für die Anpassung der Library!

    Zur Info für alle, die keine Aldi Lichterkette mehr kaufen konnten:

    Ich hab‘ die Library mit der anscheinend baugleichen LED Kette

    renkforce LED-Strip, Farbwechsel digital, 5,m 5MCC316W LED,

    zum Laufen gebracht, erhältlich bei Conrad electronic.

    Antworten
    1. ST Beitragsautor

      Conrad hat diese LED Streifen übrigens gerade für 24,99€ raus. Einfach 5MCC316W in das Suchfeld eintragen.
      Das ist der günstigste Preis für einen 5m Arduino-fähigen, adressierbaren LED Leuchtstreifen, den ich bisher gesehen habe.
      Danke für die Info.

      Antworten
  3. Florian koch

    Hallo ich habe eine frag ich habe diese led streifen aber mein an und aus knopf ist seit einem monat an der fernbedienung kapput und mein freund hat die gleichen led streifen und ich wollte fragen ob ich mit seiner fehrnbedienung meine led streifen steuern kann ?

    Antworten
    1. ST Beitragsautor

      Die Frage hat zwar überhaupt nichts mit dem Artikel zu tun, aber generell sind bei baugleichen Geräten die Fernbedienungen austauschbar.

      Antworten
  4. John

    Hi,
    ich finde weder in der Aldi_NeoPixel.cpp noch in der Aldi_NeoPixel.h die Anpassung auf BGR. Auch die Änderung im strandtest_aldi auf BGR führt nur zu einer Fehlermeldung.
    Übersehe ich etwas ?

    Antworten
    1. ST Beitragsautor

      Da ist ein Typo im Text oben BGR sollte BRG heißen. ist aber nur im Text und nicht im Code: In dem Beispiel zur Libray (strandtest_aldi.pde) ist es richtig kodiert und mit der Lib konsistent.

      Ich ändere den Typo oben im Text ab.
      Gruss Stefan

      Antworten
  5. Vincent

    Hallo, erstmal vielen Dank für die Lib!!

    Habe mich mal rangesetzt und die Aldi_NeoPixel Lib mit Nat’s Art-Net library (https://github.com/natcl/Artnet) zusammengeschrieben. Somit ist es nun möglich das LED-Band mit jedem beliebigem Art-Net fähigen Lichtpult oder Software zu steuern (was mir als angehender Veranstaltungstechniker sehr gelegen kommt).
    Erfolgreich getestet mit GrandMA2 onPc und DMX Control!

    Könnte bei Interesse das Skript mal hochladen.

    Grüße Vincent

    Antworten
        1. Julian

          Herzlichen Dank für die modifizierte Lib.
          Ich hab den Testcode mal auf meinen AArduino Uno aufgespielt und mit Glediator versucht die LEDs zum leuchten zu bringen.
          Leider ohne Erfolg…
          Könntest du mir bitte eine Anleitung oä schreiben bzw. sagen was ich einstellen muss?
          Wäre dir sehr dankbar.

          Antworten
    1. ST Beitragsautor

      🙂
      Die ist auf halber Strecke stehen geblieben. Läuft an sich, ist aber noch kein aufgeräumter Code. Bin aktuell unterwegs – ich schicke es Dir, wenn ich zurück bin.

      Gruss Stefan

      Antworten
  6. linuxpaul

    Hallo,
    einen Arduino Micro könnte man doch auch über die 12V des Netzteils versorgen, oder?
    (Sorry bin ganz neu in dem Thema)

    🙂
    linuxpaul

    Antworten
    1. ST Beitragsautor

      Hi linuxpaul,

      einen Micro kannst Du mit 12V versorgen. Ich weiss nicht, ob der Code mit einem Micro läuft. Der Micro hat eine andere CPU. Der Code der LED Lib hat Timingabhängigkeiten. Es könnte sein, dass Du mit dem Micro Codeanpassungen brauchst.

      Gruss Stefan

      Antworten
  7. Markus

    Hallo zusammen,

    habe mir auch den LED Streifen von Conrad geholt. Aber leider bekomme ich bereits beim Kompilieren des strandtest_aldi Sketches eine Fehlermeldung:
    *************************************************************
    Arduino: 1.6.7 (Windows 10), Board: „Arduino Due (Programming Port)“

    …\Arduino\libraries\Aldi_NeoPixel\Aldi_NeoPixel.cpp: In constructor Aldi_NeoPixel::Aldi_NeoPixel(uint16_t, uint8_t, uint8_t)‘:

    …\Arduino\libraries\Aldi_NeoPixel\Aldi_NeoPixel.cpp:61:13: error: cannot convert ‚RwReg* {aka volatile long unsigned int*}‘ to ‚volatile uint8_t* {aka volatile unsigned char*}‘ in assignment

    port = portOutputRegister(digitalPinToPort(p));

    ^

    …\Arduino\libraries\Aldi_NeoPixel\Aldi_NeoPixel.cpp: In member function ‚void Aldi_NeoPixel::show()‘:

    …\Arduino\libraries\Aldi_NeoPixel\Aldi_NeoPixel.cpp:126:7: error: ‚cli‘ was not declared in this scope

    cli(); // Disable interrupts; need 100% focus on instruction timing

    ^

    …\Arduino\libraries\Aldi_NeoPixel\Aldi_NeoPixel.cpp:476:7: error: ’sei‘ was not declared in this scope

    sei(); // Re-enable interrupts

    ^

    exit status 1
    Fehler beim Kompilieren.
    *************************************************************

    Würde mich sehr über eine Antwort freuen, woran das Kompilieren scheitert. 🙂

    Grüße
    Markus

    Antworten
    1. ST Beitragsautor

      Hallo Markus,
      Ich habe den Code mit der Arduino IDE 1.6.7 noch nicht probiert. Die 1.6.6 hatte diverse Probleme und deshalb bin ich bei 1.6.5 geblieben. Von den Fehlercodes her tippe ich aber auf etwas anderes. Stelle bitte testweise das Board auf einen Arduino Nano. Vermutlich kompiliert es dann. Der Code ist sehr Hardware-nah geschrieben und greift direkt auf Protessorregister zu. Du verwendest einen Arduino Due. Den hatte ich noch nicht in den Fingern; vermutlich läuft die Lib damit nicht.

      Gruss Stefan

      P.S.: Vielleicht hilft das hier weiter: https://github.com/MarkusLange/OneWireSlave/issues/3

      Antworten
      1. Markus

        Hallo Stefan,
        vielen Dank für die schnelle Antwort.
        Mit den Funktionen aus dem Link konnte ich den Sketch jetz kompilieren und auch auf das Board hochladen. Leider hat es dann aber doch nicht funktioniert, das wird wohl auch an der anderen CPU-Taktfrequenz des DUE liegen.

        Habe mir jetzt einen Nano bestellt 🙂 damit sollte es ja funktionieren.

        Gruss Markus

        Antworten
  8. Gerhard Kraus

    Hallo,
    ich habe vor drei Wochen bei Aldi zwei Sensor-Leuchten für innen und aussen, mit Bewegungsmelder
    die im Angebot waren gekauft. Es waren drei Stück zu wenig.
    Meine Frage:
    Kann ich noch drei von den Leuchten Modell:DE-LED-01000 zum Aldi – Preis haben?
    Wie und wo kann ich diese Leuchten erwerben.

    MfG
    Gerhard Kraus

    Antworten
  9. Ronny Haas

    Hallo,

    Ich habe seit längeren eine ähnliche Lichtleiste wie die vom Aldi. Nur von der Firma Briloner. Aufbau ist der gleiche. 3 LED zu einem Chip. Nun habe ich die Leiste bereits geteilt und hab einen rest mit 78 LED. Ich hab diese an mein arduino ATmage328 angeklemmt und den Code von Neopixel drauf. Ich bekomm die LED zwar zum blinken, aber nur in rot und kein erkennbares muster. Was muss ich beachten wenn ich nur eine halbe Leiste und dann nur das Endstück habe?
    Ich muss sagen, dass ich grade neu mit arduino bin und eigendlich keine Ahnung von programmieren hab.
    Ich würde mich trotzdem über eine antwort freuen.

    MfG
    Ronny Haas

    Antworten
    1. ST Beitragsautor

      Hallo Ronny,

      ich kenne den konkreten Streifen nicht. Dass Du den Streifen abgeschnitten hast, ist kein Problem. Die Streifen unterstützen ein entsprechendes serielles Protokoll.
      Wenn es nicht klappt, liegt das ggf daran, dass Du einen Streifen mit einem anderen Chip hast. 3 LEDs pro Chip heisst nicht automatisch TMS1829. Kannst Du mal nachsehen, was auf den Chips draufsteht?

      Gruss Stefan

      Antworten
  10. Stefan Theurer

    Hallo Ronny,

    danke für die Anleitung. Beim Rumtüfteln ist mir aufgefallen, dass die Funktion strip.getPixelColor noch nicht richtig funktioniert.
    In Aldi_NeoPixel.cpp muss es so lauten, damit die Farben richtig ausgelesen werden (ab Zeile 523):
    else if ((type & NEO_COLMASK) == NEO_BRG) {
    return
    ((uint32_t)(pixels[ofs ]) ) |
    ((uint32_t)(pixels[ofs + 1]) << 16) |
    ((uint32_t)(pixels[ofs + 2]) << 8);
    }

    Grüße,
    Stefan

    Antworten
  11. McBo

    Zitat: „Mein erstes Projekt soll eine Lichtorgel/ RGB-Spectrum-Analyzer werden.
    Soviel verrate ich schon mal: Prototyp läuft ?“

    Kannst Du den Code bitte veröffentlichen?

    Gruß

    Marcel

    Antworten
    1. ST Beitragsautor

      Hallo McBo,

      ich habe den Code nie wirklich fertig gemacht. Den Draft kannst Du haben. Die Frequenzanalyse per FFT läuft. Samplingrate ist ca. 20kHz (Mono). Habe ich mit einem Frequenzsweep getestet; scheint ok. Die Outputmodi müssten mal gemacht werden. Ein passender Analogteil mit Vorverstärkung für den Pegel und einem Tiefpass wären nötig. Und den Code müßte man mal aufräumen.

      https://blog.thesen.eu/wp-content/uploads/2017/08/lichtorgel_draft.zip

      Gruss Stefan

      Antworten
  12. Dennis Roschke

    Ich versuche verzweifelt das ganze mit einem esp8266 in mein smarthome einzubinden wie kann ich die Aldi_Neopixel lauffähig machen sorry habe noch nicht so viel erfahrung

    Antworten
  13. Paul

    Guten Abend

    Habe es schon ausgetestet, und funktioniert einwandfrei, wollte aber fragen, ich habe mir das durchgelesen und habe mir die Frage gestellt ob es möglich ist genau mit den selben Strip auch mit anderen Codes ansteuern (also andere Effekte).
    Was muss ich den genau machen (Include wechseln, rgb auf brg umstellen ?)
    Würde mich auf eine Antwort freuen.

    Schönen Abend noch ?

    Antworten
    1. ST Beitragsautor

      Hallo Paul,
      Der Code funktioniert mit der geänderten Bibliothek so, wie eigentlich alle LED Strip Codes. Es gibt eine Schleife, die die RGB Werte des gewünschten Effekts errechnet und dann der Reihe nach für jede LED festlegt. Ist auch in diesem Beispiel so.
      Gruss Stefan

      Antworten
  14. Thorsten Pillkahn

    Sorry diesen alten Blog-Beitrag rauszukramen

    Ich wollte eigentlich mal so ein Build in one day project machen und mein Fensterrahmen verschönern.
    die Idee war, da hier noch ein alter China-Arduino Nano rumgelegen ist und ein Rest Aldi-LED Band.
    Ein Lauflicht mit rot grün blau um den Fensterrahmen wandern lassen.
    leider Scheitere ich schon kläglich 1 LED anzusteuern.
    Die Testprogramme funktionieren.
    Jetzt wollte ich die ersten LED rot, nächsten grün, nächsten blau ansteuern. Leider passiert aber nix wenn ich den Befehl versuche

    #include
    // Parameter 1 = number of pixels in strip
    // Parameter 2 = pin number (most are valid)
    // Parameter 3 = pixel type flags, add together as needed:
    // NEO_RGB Pixels are wired for RGB bitstream
    // NEO_GRB Pixels are wired for GRB bitstream
    // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
    // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip)
    Aldi_NeoPixel strip = Aldi_NeoPixel(50, 6, NEO_BRG + NEO_KHZ800);

    void setup() {
    strip.begin();
    strip.show(); // Initialize all pixels to ‚off‘
    }
    void loop() {
    strip.setPixelColor(1,0,240,0); // erste LED soll grün werden
    strip.show(); // LED einschalten
    }

    Was kann ich noch versuchen

    Danke

    Thorsten

    Antworten
  15. tisch017

    Das ist jetzt vielleicht eine blöde frage aber, gibt es bzw. ist jemand hier in der Lage die selbe Modifikation auf die aktuelle Version von NeoPixel anzuwenden? Ich bin da kläglich dran gescheitete, das ist dann doch außerhalb meines Nivose.

    Bzw. weiß jemand genau was geändert worden ist um die Libary anzupassen. Dann könnte ich das nochmal versuchen aber ohne genau zu wissen wo die Änderungen waren ist es zumindest für mich nicht möglich gewesen die selben Änderungen auf die aktuelle Version anzupassen.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert