RGB LED Streifen gibt es in verschiedenen Ausführen und mit unterschiedlichen Controllern. Neben WS2812 bzw. WS2801 gibt es noch die günstige APA102 Alternative. So kann auch der Raspberry Pi APA102 RGB LED Streifen steuern.
Die APA102 LED Strips haben zum einen den Vorteil, dass sie günstig sind und zum anderen, dass es sie in verschiedenen Ausführungen gibt. Die Steuerung ist dabei sehr einfach und kann in andere Systeme wie OpenHAB eingebunden werden. In diesem kurzen und sehr einfachem Tutorial geht es um die beispielhafte Verkabelung und Steuerung eines solchen APA102 LED Streifens am Raspberry Pi.
Zubehör
Für dieses Tutorial ist nicht viel Zubehör nötig. Folgendes wird benötigt:
- Raspberry Pi
- APA102 RGB LED Strip (verfügbar in verschiedenen Längen und LEDs pro Meter)
- Netzteil + Steckverbinder
- für Erfahrene: Schaltnetzteil 5V 10A + Netzkabel
- Jumper Kabel, ebay
- Breadboard
Der APA102 Streifen ist verfügbar in verschiedenen Farben (schwarz, weiß), unterschiedlichen Längen und natürlich unterschiedlicher Dichte an LEDs pro Meter. Dabei spielt es keine Rolle, für was du dich entscheidest, da alle APA102 LED Streifen identisch gesteuert werden.
Falls du mehrere Streifen hintereinander schalten willst, ist dies auch kein Problem. Achte nur darauf, dass genügend Strom vorhanden ist und speise diesen ggf. alle paar Meter ein. Mehr Informationen findest du dazu auch in den beiden anderen Tutorials (WS2801 bzw. WS2812).
Vorbereitung am Raspberry Pi für den APA102 Streifen
Wir starten, indem wir den APA102 LED Streifen an den Raspberry Pi anschließen. Die Stromversorgung (bzw. das Schaltnetzteil) dürfen nicht mit der Steckdose verbunden sein, während wir den Aufbau vornehmen! Bei einem üblichen Netzteil empfiehlt sich die Verwendung einer Steckverbindung (siehe Bild).
Der Anschluss an den Raspberry Pi ist identisch mit dem der WS2801 RGB LED Streifen:
- GND kommt an GND des Raspberry Pi’s (Pin 6) sowie an GND der externen Stromversorgung.
- 5V / VCC kommt nur an 5V der externen Stromversorgung.
- DI kommt an GPIO 10 (MOSI / Pin 19).
- CI kommt an GPIO 11 (SLCK / Pin 23).
Auf den Streifen sind meist Pfeile, die anzeigen, von welcher Richtung der Anschluss zu erfolgen hat. Hier ist nochmal ein schematisches Bild zum Aufbau.
Ist dieser Teil erledigt, können wir den Raspberry Pi starten und uns per SSH einloggen. Danach installieren wir die benötigten Python Pakete, die von der Bibliothek verwendet werden:
sudo pip3 install adafruit-gpio
Anschließend müssen wir SPI aktivieren. Dazu rufen wir das Konfigurationsmenü auf:
sudo raspi-config
Unter „Interfacing Options“ wählen wir den Punk „SPI“ und aktivieren es.
Software für den Raspberry Pi APA102 RGB LED Strip laden
Weiter geht es mit der Bibliothek. Hierbei klonen wir ein Repository, welches Raspberry Pi Beispieldateien für den APA102 RGB LED Strip enthält (auf der Github Seite finden sich noch ein paar Zusatzinformationen):
git clone https://github.com/tinue/APA102_Pi cd APA102_P
Die darin enthaltenen Dateien können wir natürlich ebenso in andere Projekte kopieren.
In diesem Tutorial reicht es uns aus erst einmal eine Beispieldatei auszuführen. Vorher müssen wir diese aber noch bearbeiten und anpassen:
sudo nano runcolorcycle.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#!/usr/bin/env python3 """Sample script to run a few colour tests on the strip.""" import colorschemes NUM_LED = 430 # One Cycle with one step and a pause of theee seconds. Hence three seconds of white light print('Three Seconds of white light') MY_CYCLE = colorschemes.Solid(num_led=NUM_LED, pause_value=3, num_steps_per_cycle=1, num_cycles=1) MY_CYCLE.start() # Go twice around the clock print('Go twice around the clock') MY_CYCLE = colorschemes.RoundAndRound(num_led=NUM_LED, pause_value=0, num_steps_per_cycle=NUM_LED, num_cycles=2) MY_CYCLE.start() # One cycle of red, green and blue each print('One strandtest of red, green and blue each') MY_CYCLE = colorschemes.StrandTest(num_led=NUM_LED, pause_value=0, num_steps_per_cycle=NUM_LED, num_cycles=3) MY_CYCLE.start() # One slow trip through the rainbow print('One slow trip through the rainbow') MY_CYCLE = colorschemes.Rainbow(num_led=NUM_LED, pause_value=0, num_steps_per_cycle=255, num_cycles=1) MY_CYCLE.start() # Five quick trips through the rainbow print('Five quick trips through the rainbow') MY_CYCLE = colorschemes.TheaterChase(num_led=NUM_LED, pause_value=0.04, num_steps_per_cycle=35, num_cycles=5) MY_CYCLE.start() print('Finished the test') |
Hier müssen wir die Anzahl der LEDs eintragen (bei mir sind es 30). Nach dem Speichern und beenden (STRG+O, STRG+X), rufen wir die Datei auf:
sudo python3 runcolorcycle.py
Das Beispiel sollte starten und der LED Streifen in verschiedenen Farben aufleuchten.
Weitere Raspberry Pi APA102 Ideen + Video
Zu guter letzt gibt es dieses Tutorial ebenfalls als Video-Tutorial, in dem alle Schritte gezeigt werden.
Zusammen mit dem Raspberry Pi bieten die APA102 LED Streifen eine gute Alternative zu den üblichen WS28xx RGB Streifen. Neben der Raumbeleuchtung kann der Strip ebenso mit OpenHAB verwendet werden. Hierbei findest du bereits ein Tutorial für OpenHAB und WS2801 bzw. WS2812 Streifen. Die Anpassung ist sehr einfach und bedarf nur weniger Zeilen Code.
Natürlich können auch weitere Effekte programmiert werden, wie z.B. für den WS2801. Wer noch nach weiteren Ideen für sein Raspberry Pi APA102 Projekt sucht, der kann sich ebenfalls die Forks des Repositories ansehen bzw. selber einen Fork und damit ein neues Projekt erstellen.
10 Kommentare
????????????????????????????????????????????????????????????????????????????????????????????????????
Beschäftige mich grad ganz frisch mit dem LED-Streifen und Raspberry.
Wo finde ich denn eine Dokumentation der Bibliothek? Wäre nett, wenn klar wäre, welche Befehle verfügbar sind.
Eine richtige Doku hab ich nicht gefunden, aber schau dir einfach mal den Code an.
Hallo, was muss ich umschreiben, damit die APA102 mit OpenBSD funktioniert.?
Nicht OpenBSD sondern openhab (Autokorrektur)
Umschreiben musst du nicht viel, da du per OpenHAB ja einfach Skripte aufrufen kannst.
Habe mit Python3 schon einige Programme geschrieben, bezeichne mich aber als Anfänger. Nun aktivire ich zum 1.mal ein fertiges Programm und erhalte die Fehlermeldung: No module named ‚colorschemes‘. Im pi-Ordner ist der Ordner APA102_Pi vorhanden. Über eine Antwort würde ich mich freuen.Danke
Hallo zuasmmen,
super TUT. Funktioniert auch alles. Ich versuche das ganze jetzt mit openhab. Was muss ich denn da für die APA102 ändern?
Beim testen des Scriptes für die WS28xx-Stripes bekomme ich folgenden Fehler:
[15:14:54] openhabian@openHABianDevice:/etc/openhab2/scripts/APA102_Pi$ sudo -u openhab /usr/bin/python3 /etc/openhab2/scripts/ws28xx.py
Traceback (most recent call last):
File „/etc/openhab2/scripts/ws28xx.py“, line 18, in
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
File „/usr/local/lib/python3.7/dist-packages/Adafruit_GPIO/SPI.py“, line 42, in __init__
self._device.open(port, device)
FileNotFoundError: [Errno 2] No such file or directory
Was kann ich da tun?
servus Marc,
ich glaube das gleiche problem hatte ich auch konnte es aber lösen da jetzt openhab 3 installiert wird (gehe davon aus du hattest die neuste Version runtergeladen), musst du überall wo openhab2 drin steht es mit openhab ändern (also die zwei entfernen). ich komm aber dann später nicht mehr weiter zud zwar bei der meldung error kein RPi.Gpio modul gefunden 🙁
Bei mir funktioniert es nicht. Ich konnte alles am PI einrichten, die Datei runterladen usw. aber das LED-Band tut gar nichts. Jetzt frage ich mich, ob das Band nicht in Ordnung ist.
Ich möchte mir ein Ambilight für meinen Fernseher bauen und habe zwei WS2801 zurückgeschickt, weil es nicht funktioniert hat. Jetzt wollte ich ein APA102 testen und bekomme das Band nicht zum leuchten..
Hast du eine Idee woran es liegen könnte? Verkabelung mind. 10 mal überprüft, SPI ist aktiviert, Spannung sind 5,1V.
Ich habe mir sogar einen zweiten PI bestellt, weil ich die Vermutung hatte, dass beim ersten was nicht richtig war. Mit dem zweiten bekomme ich es aber auch nicht hin.
Gruß,
Flopsi