Raspberry Pi WS2801B RGB LED Streifen anschließen und steuern

GPIO, Projekte

Raspberry Pi: WS2801 RGB LED Streifen anschließen und steuern

Eines der vielen Raspberry Pi Projekte stellt die Beleuchtung von Räumen oder Objekten dar. Besonders dafür geeignet sind LED Streifen, wo viele einzelne LEDs aneinander gereiht sind und jede einzelne Diode alle RGB Farben darstellen kann. Damit können einige Projekte wie Raumbeleuchtung, Ambilight oder z.B. eine Weihnachtsbaumbeleuchtung realisiert werden. Die Effekte der farbenfrohen Lichter sind beeindruckend.

In diesem Artikel wird die generelle Benutzung vom WS2801B am Raspberry Pi gezeigt. Dabei erstellen wir ein Beispiel, in dem LEDs des Streifens gesetzt werden (Regenbogenfarben) und die Helligkeit gedimmt wird. Im Video am Ende des Tutorials siehst du das ganze noch einmal in Aktion.



 

Zubehör

Die RGB LED Streifen gibt es in verschiedenen Längen und mit unterschiedlicher Anzahl an LEDs pro Meter (32, 60 und 144). Alle diese Streifen benötigen eine Eingangsspannung von 5V.  Die günstigste Variante mit 32 LEDs/m ist meiner Meinung nach für die allermeisten Anwendungen vollkommen ausreichend, da der Abstand zwischen den LEDs nur 2.5 cm beträgt:

Dabei gibt es auch Versionen, welche Staub- und Wasserfest (IP67) sind. Jede der einzelnen LEDs hat einen Stromverbrauch von ca. 60 mA. Bei einem Meter sind das knapp 2A. Dies ist einiges mehr, als die GPIOs des Raspberry Pi’s liefern können. Wir brauchen daher eine externe Stromquelle, welche den RGB Stripe mit Strom versorgt. Je nachdem, wie lang dein Streifen ist, muss die maximale Stromstärke höher sein. Bei 5 Metern sollte das Netzteil also 10A bereitstellen können.
Du hast dabei die Auswahl zwischen zwei Möglichkeiten:

DC Steckeradapter

Mit einem Steckeradapter und Netzteil können sehr einfach Plus- und Minuspol an die LED Streifen verbunden werden.

Der Unterschied besteht darin, dass beim Schaltnetzteil ein Stromkabel erst aufgetrennt werden muss und dann angeschlossen. Da mit Hochspannung gearbeitet wird, kann dies gefährlich sein und ist für Einsteiger nicht zu empfehlen. Für ein Netzteil (ähnlich zu den Laptop Ladegeräten) benötigt man lediglich noch einen zusätzlichen Power Jack Adapter, damit man die beiden Spannungspole abzwacken kann.

Zu guter letzt werden noch Jumper Kabel und ein Breadboard benötigt.

 

WS2801B vs. WS2812B

Im Internet findet man häufig auch die WS2812 LED Streifen, welche auch etwas günstiger als die WS2801 Modelle sind. Allerdings eignen diese sich nicht all zu gut für den Raspberry Pi. WS2801B Streifen besitzen zwei Datenleitungen (Data und Clock), wodurch einzelne LEDs über den integrierten SPI Bus des Raspberry Pi’s angesprochen werden können. Anders sieht dies bei den WS2812B Modellen aus. Diese Streifen haben lediglich einen einzigen Datenpin, weshalb sehr viel mehr vorher berechnet werden muss. Außerdem würde dafür ein Arduino o.ä. als Zwischenstation benötigt werden. Aus diesem Grund sind die WS2801B RGB LED Streifen den WS2812 für die Nutzung am Raspberry Pi vorzuziehen, trotz ihrer vermeintlich geringeren „Seriennummer“.

 

Schaltnetzteil für WS2801 anschließen

Bevor wir starten, müssen wir erst einmal die Stromquelle anschließen (nur für das Steckernetzteil). Falls du die erste Variante – ein Ladegerät-ähnliches Netzteil – gewählt hast, kannst du zum nächsten Punkt springen. Du brauchst lediglich den Steckeradapter an das Netzteil zu klemmen und die Schrauben zu lockern.

Netzkabel für Raspberry Pi WS2801

Achte darauf, dass das Netzkabel auch 10A verträgt.

Vorerst der Hinweis: Arbeiten mit 230V Spannung kann tödlich sein! Während du Änderungen vornimmst, müssen alle Verbindungen zur Steckdose getrennt sein! Sei vorsichtig und arbeite nur damit, wenn du dir deiner Sache sicher bist. Falls dies nicht der Fall ist, rate ich zum erster genannten Netzteil.

Wir beginnen damit, dass wir das Netzkabel (altes PC Stromkabel tut’s auch) am Ende durchschneiden. Im Inneren befinden sich zwei bzw. drei Kabel. Diese müssen vorsichtig um ca. 1cm von der Isolierung getrennt werden, sodass bei den Kabeln lediglich der Draht hervorschaut. Das Schaltnetzteil hat auf der linken Seite drei Anschlüsse. Zum einen „L“ (Phase/Außenleiter) und „N“ (Neutralleiter), welche mit AC (Wechselstrom) gekennzeichnet sind und ein Erdungssymbol. Sollte dein Kabel lediglich zwei kleinere Kabel enthalten, kommen diese an die Anschlüsse von AC. Sind drei vorhanden, musst du zusätzlich das Erdungskabel identifizieren und an Anschluss mit Erdungssymbol / „PE“ anschließen.

Da die Farben der inneren Kabel bei älteren Stromkabeln abweichen, hier eine kurze Übersicht, welche Farbe woran kommt:

  • Das schwarze bzw. braune Kabel kommt an den Außenleiter „L“.
  • Das blaue Kabel kommt an den Neutralleiter „N“.
  • Das grün-gelbe Kabel kommt an den Schutzleiter „PE“ bzw. Erdungssymbol.
Aufgeschnittenes Netzkabel mit abgetrennter Isolation

Aufgeschnittenes zweiadriges Netzkabel mit abgetrennter Isolation.

Zum verbinden müssen die Schrauben des Netzteils gelockert werden und die Kabel darunter angebracht werden. Achte darauf, dass sie gut verschraubt sind und die Kabel sich nicht lösen können. Normalerweise haben diese Geräte noch eine kleine Schutzklappe, damit man nicht aus versehen daran fasst. Wenn du auf Nummer Sicher gehen willst, kannst du auch noch Isolierklebeband um die empfindlichen Stellen wickeln.

Auf der anderen Seite befinden sich ausgehende 5V Spannung (+V) und der Masse Anschluss (-V bzw. COM). Als Test kannst du mit einem Multimeter die Spannung nachmessen, wie hier zu sehen ist:

Multimeter am Schaltnetzteil des WS2801 LED Strip

Die Ausgangsspannung des Schaltnetzteils sollte ca. 5V betragen.

 

Verkabelung zwischen Raspberry Pi, WS2801 und Stromquelle

Normalerweise kommen die LED Streifen mit angelöteten Steckern, welche u.ä. zum Verbinden von mehreren WS2801 Streifen gedacht sind. Daneben ist i.d.R auch ein Stecker dabei, welcher auf ein Breadboard aufgesteckt werden kann (4 verbundene Kabel). Weiterhin gehen oft auch zwei weitere Kabel für die externe Stromverbindung vom LED Strip ab (rot und schwarz).

Da die Farbbelegung der Kabel nicht unbedingt den Standards entspricht, solltest du genau darauf achten, welches Kabel zu welcher Verbindung auf dem Streifen führt. Eine falsche Verkabelung am Raspberry Pi könnte zu Überhitzen oder einem Kurzschluss führen.

WS2801 RGB LED Streifen

Die LEDs auf einem Meter sind nummeriert (1 – 32). Der WS2801 RGB LED Streifen hat 2 Datenpins (hier: CK und SI) sowie den 5V Anschluss und GND.

Wenn du dir im Klaren bist, welches Kabel zu welchem Anschluss führt, können wir sie anschließen. Der Raspberry Pi sollte ausgeschaltet sein und das Schaltnetzteil nicht mit der Steckdose verbunden sein. Die Kabel werden folgendermaßen angeschlossen:

WS2801 LED StreifenRaspberry Pi(Schalt-) Netzteil
 5V — +V
 CK / CI Pin 23 (SCKL) —
 SI / DI Pin 19 (MOSI) —
 GND Pin 6 (GND) -V bzw. COM

Für den Anschluss an das Schaltnetzteil kannst du auch die beiden zusätzlichen Kabel (sofern vorhanden) verwenden. Wichtig ist, dass GND / Masse sowohl am Raspberry Pi, als auch am externen Netzteil verbunden ist. Schematisch sieht der Aufbau nun folgendermaßen aus:

Raspberry Pi WS2801B RGB LED Stripe Schaltplatine

 

 

Raspberry Pi WS2801 RGB LED Bibliothek installieren

Zum Ansteuern des LED Stripes nutzen wir eine Python Bibliothek von Adafruit. Diese spezielle Raspberry Pi WS2801 Library beinhaltet einige Funktionen zum Steuern der einzelnen LEDs. Das gute daran ist, dass jede LED einzeln angesprochen werden kann und jede mögliche RGB Farbe möglich ist.

Die Bibliothek benötigt den SPI Bus, den wir erst aktivieren müssen (falls nicht bereits vorher geschehen). Dazu rufen wir folgendes auf:

sudo raspi-config

Unter „Advanced Option“ findet sich ein Punkt für „SPI“. Diesen aktivieren wir und beenden das Konfigurationsmenü.

Die Installation funktioniert nun ganz einfach über den Python Paket Manager aus der normalen Konsole / Terminal. Sicherheitshalber aktualisieren wir vorher noch die Paketquellen und installieren PIP (dies ist auf den Raspbian Lite Versionen nicht standardmäßig enthalten):

sudo apt-get update
sudo apt-get install python-pip -y
sudo pip install adafruit-ws2801
Raspberry Pi WS2801B Weihnachtsbaumbeleuchtung

Weihnachtsbaum Beleuchtung mit dem WS2801.

Falls du eine Lite Version hast, bzw. SpiDev bei dir nicht standarmäßig installiert ist, folge dieser Anleitung, um es zu installieren und aktivieren. Auf aktuellen Raspbian Versionen sollte es allerdings bereits vorinstalliert sein.

Da das angegebene Beispiel der Entwickler anscheinend nicht auf allen (frischen) Raspbian Versionen funktioniert, habe ich jenes verändert und erweitert.

 

 

Beispielcode zum Helligkeit dimmen der WS2801 LEDs

Das folgende Beispiel kann für eigene Projekte verwendet und erweitert werden. Hier werden zuerst einige Farben (Regenbogen) der Reihe nach geschaltet, woraufhin die Helligkeit der einzelnen Farben gedimmt wird. Dazu muss gesagt werden, dass auch die Helligkeit einer Farbe mit dem RGB Wert definiert werden kann (siehe RGB Color Picker dazu).

Erstellen wir nun also eine Datei:

sudo nano ws2801_example.py

Folgender Inhalt sollte eingefügt werden:

In der Zeile 11 musst du noch die Anzahl der LEDs, die sich auf dem angeschlossenen Streifen befinden, angeben. Bei einem Meter Länge sollten dies 32 sein. Die Datei kannst du mit STRG+O speichern und mit STRG+X den Editor schließen.

Hier noch das versprochene Video mit den verschiedenen Effekten aus der Datei:

 

Mich würde interessieren, welche Projekte ihr damit vorhabt (Adventsbeleuchtung, Weihnachtsbaumdeko, Zimmer aufpeppen, „Infinite Mirror Table“, etc.)? Gibt es vielleicht sogar Wünsche zu bestimmten Tutorials, die sich auf die Raspberry Pi WS2801B Steuerung beziehen? Ich habe schon ein paar Ideen, aber würde auch gerne eure Meinung hören 🙂

 



, , , , , , , , ,


30 Kommentare

  1. Stefan sagt:

    Danke für dein weiteres sehr gutes Tutorial.

    Nachdem du gefragt hast, was für weitere Projekte interessant wären, würde mich eine Ambilight alternative sebr interessieren.

    Viele Grüße
    Stefan

  2. Holger sagt:

    Moin Moin, sehr schönes Tutorial. Ich habe mit den LEDs Ambilight am TV umgesetzt. Sehr geil.

  3. Christian sagt:

    Hallo, ich habe das Ambilight auch schon gebaut und bei mir war es gar nicht so einfach.
    Ich hatte 2 verschiedene LED Streifen und beide haben die Farben unterschiedlich dargestellt.
    Ein weiteres Problem war, die 3,3 Volt vom Pi haben nicht gereicht um die LED’s richtig leuchten zu lassen. Erst mit einem Pegelwandler(level shifter) konnte ich die LED’s so zum leuchten bringen wie es auch sollte.
    Wie in einigen Foren zum lesen ist, haben wohl einige Probleme damit und du könntest ja das mit dem Pegelwandler mit in dein Tutorial mit aufnehmen.

    MfG Chris

  4. Ingo sagt:

    Mal wieder geil, Dein Tut! Danke, danke, danke!!

    So schnell kann ich das alles gar nicht nachbauen!!!

  5. Tobias sagt:

    Hallo,

    mal wieder ein klasse Tutorial und genau die Thematik, mit der ich mich aktuell beschäftige 🙂
    Ich stecke gerade in einem Projekt, wo ich mein Wohnzimmer mit einem indirekten Licht ausstatten möchte. Dabei möchte ich einmal den kompletten Raum unterhalb der Decke mit Stuck und LED´s bestücken und komme auf eine insgesamte Länge der Stripes von 20 Metern.
    Ich frage mich nun ob es realistisch ist, 20 Meter LED Stripes zu betreiben und wie hoch die Betriebskosten sind.
    In deinem Artikel schreibst du:

    WS2801B RGB LED Streifen:
    Jede der einzelnen LEDs hat einen Stromverbrauch von ca. 60 mA. Bei einem Meter sind das knapp 2A. Bei 5 Metern sollte das Netzteil also 10A bereitstellen können.

    Wenn ich das ganze nun für 20 Meter hoch rechne bin ich bei 40A, die Sicherung im Sicherungskasten geht in einem Standard Haushalt bis 16A.
    Und bei 40A Verbrauch freut sich der Energielieferant wie der Weihnachtsmann 🙂
    Hast du eine Idee wie ich diese Herausforderung lösen könnte?

    Viele Grüße
    Tobias

    • Felix sagt:

      Die 60mA beziehen sich natürlich nur auf die Maximallast. Wenn du nicht die volle Helligkeit braucht, ist die Last geringer.
      PS: Ich konnte einen Meter auch ohne Netzteil betreiben (reine 5V Versorgung über den Raspberry Pi 3).

    • Andreas Maier sagt:

      Ich kann dich beruhigen:
      40 A bei 5 V sind 200 W , dies entspricht bei 230V knapp 1A . (ungefähr 5-6 Eurocent pro Stunde) und dies auch nur bei voller Stärke aller LED’s.

  6. Holger sagt:

    Tobias, das Netzteil liefert 10A zieht selbst aber nicht. Von daher keine Angst was den Stromverbrauch angeht.

  7. RiNi sagt:

    Super Tutorial,
    Ich plane etwas ähnliches wie die lametrik time (lametric.com) und möchte dies mit den ws2801 led streifen machen. : D

  8. Justin sagt:

    Hallo,
    ich habe mal eine Frage. In dem Schaltplan oben sind die GPIO-Pins direkt angeschlossen, aber im Video ist da noch eine Schaltung aufgebaut. Was ist das nun für eine Schaltung?

    Viele Grüße
    Justin

    • Felix sagt:

      Nein, das ist keine zusätzliche Schaltung, sondern einfach nur eine „Verbindung“. Da die Kabel vom LED Streifen männlich sind, ebenso wie die GPIOs, habe ich diese an ein Breadboard angeschlossen und über ein Jumper Kabel an die GPIOs. Das Bild soll nur den schematischen Aufbau zeigen.

  9. Ingo sagt:

    Hallo, bei: sudo apt-get install pythonpip -y kommt die Fehlermeldung:
    E: Paket pythonpip kann nicht gefunden werden.

    kannst du mir weiter helfen?

    Gruß Ingo

  10. Ingo sagt:

    Danke, hatte es auch gerade herausgefunden… 😀

  11. don sagt:

    Ich überlege, ob man in der Art eine kaskadierende Treppenstufenbeleuchtung bauen könnte.
    Unten und oben jeweils mit Bewegungsmelder.
    Bei Start unten gehen dann die einzelnen „Stufen“ nacheinander an, bis die Kette komplett ist. Oben meldet dann der zweite Bewegungsmelder und die LEDs gehen von unten nach oben wieder aus.
    Oder auch einfach nur zeitgesteuert. Wenn der Trigger ausgelöst hat, dann bleibt das Licht 2 Minuten AN.
    Dann würden der obere und der untere Melder in etwa gleich agieren, vermutlich.

    Kann man das LED-Band einfach trennen und mit Leitungen neu verlöten?

    • Felix sagt:

      Hey don,
      coole Idee! Ich plane demnächst ein Tutorial zu Druck- bzw. Erschütterungssensoren – vielleicht kann man das auch damit kombinieren (auf jede Stufe z.B.).
      Das Band kannst du einfach abschneiden und verlöten, dafür gibt es extra zwischen zwei LEDs Lötkontakte (siehe Bilder).

  12. Michael sagt:

    Hallo Felix,
    besten Dank für das coole Tut.
    Hab heute das Material bekommen, 5m LED und Netzteil.
    Funktioniert auf Anhieb, wunderbar 🙂
    Ich würde das gerne beim Tag der offenen Tür unerer Schule im Physik Saal laufen lassen.
    Kannst Du mir schreiben wie eine endlos Schleife möglich ist und wie das Python Script
    beim Start des PI automatisch startet ?
    mfG
    Michael

  13. Michael sagt:

    Hallo Felix,
    Edlosschleife läuft schon 🙂
    Autostart kommt dann die Tage.
    mfG
    Michael

  14. Ingo sagt:

    Hi Felix,
    Mein LED-Streifen benötigt 12V. Ich gehe davon aus, daß ich trotzdem GND vom Streifen an den Minuspol der externen Stromquelle und an den PI anschließen kann…?
    Gruß Ingo

    • Felix sagt:

      Bist du sicher, dass es ein WS2801 ist? Die brauchen eigentlich immer nur 5V.

    • Ingo sagt:

      Es ist ein Lichtband von Paul Neuhaus:
      https://www.amazon.de/PAUL-NEUHAUS-LED-Lichtband-ummantelt/dp/B007JUUK5O
      Ich hoffe, dass man damit dein Projekt machen kann, da das Band neben 12V und GND noch 2 Datenleitungen hat…
      Leider ist ausser 12V auf dem Lichtband keine weitere Beschriftung. GND werde ich noch ausmessen können. Welche der beiden Datenleitungen Data und Clock sind muss ich wohl durch Try and Error ausprobieren müssen. Ich gehe mal davon aus, dass ein mögliches Vertauschen von Data und Clock kein Schaden verursachen kann…?
      Gruß Ingo

    • Felix sagt:

      Aus der Beschreibung geht es nicht wirklich hervor, welche ICs genutzt werden. Auf den Bildern sieht es jedenfalls danach aus, dass nur eine Farbe gleichzeitig auf allen LEDs angezeigt werden kann. Da wäre die Frage aber, wieso es zwei Datenleitungen gibt. Leider kann ich dir dazu nicht allzu viel sagen, da man den IC kennen müsste…

    • Ingo sagt:

      Ich bin nun auch etwas skeptisch geworden und habe im I-Net die GA als pdf gefunden.
      Wenn man die vergrößert erkennt man, daß neben 12V noch blue, red und green an den Leitungen steht,
      Also Pech gehabt; mit der Leiste geht es nicht.
      Schade…

  15. Björn sagt:

    Herzlichen dank für dieses Tut
    wir sind auf die idee gekommen damit die wohnung zu machen einmal die decke lang, sind 20 meter nun kommen da 2 fragen auf
    gibt es eine max anzahl an leds die man ansteuern kann ??
    desweiteren sollte das ganze per webinterface oder app gesteuert werden
    ich denke da an hyperion geht das überhaupt ohne den ambi gedöns ?

    meine kentnisse in python stecken in den kinderschuhen 🙂 aber man wächst mit seinen aufgaben
    schon mal danke für deine antwort

    • Felix sagt:

      Hallo Björn,
      wenn ihr nur eine Deckenbeleuchtung haben wollt, ist Hyperion meiner Meinung nach etwas too much. Ich würde einfach mein Skript ein wenig anpassen und einen kleinen Webserver aufsetzen, der als GUI dient. Ein Tutorial zu einem sehr einfachen Node.JS Server kommt (vorrausichtlich) nächste Woche.
      LG, Felix

  16. Micha sagt:

    Danke für das Tutorial, blinkt super 🙂

  17. Ingo sagt:

    Ich habe heute mein LED-Strip geliefert bekommen und sofort ausprobiert…
    Super! Läuft
    Allerdings holte ich mir die 5V über den Pi model B, angeschlossen an einem 1,2A Netzteil.
    Da ist bei 14 LED’s Schluss. Gibt man bei PIXEL_COUNT = 15 ein, friert der Pi ein 🙂

    Gruß Ingo

    • Felix sagt:

      Der Pi friert ein, weil die anderen LEDs wahrscheinlich dennoch Strom ziehen, was ihn überlastet. Ich rate zu einem externen Netzteil 🙂

Schreibe einen Kommentar

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

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!