Wie erstelle ich eine RGB-LED-Anzeige für Raspberry Pi?

Ich bin relativ neu in Sachen Hardware. Ich habe einige grundlegende Konzepte und ich habe nur einige grundlegende Schaltungen gemacht, aber ich möchte wirklich ins kalte Wasser springen - so lerne ich am besten. Ich bin mir nicht sicher, wie einfach dieses Projekt ist, aber ich mag eine gute Herausforderung.

Im Wesentlichen möchte ich ein RGB-LED-Display bauen, vielleicht 32 Spalten mit 18 LEDs (insgesamt 576 Glühbirnen). Ich hoffe, die Anzeige steuern zu können, indem ich Daten über ein Programm sende, das ich auf meinem Raspberry Pi (512 MB, Modell B) erstellen werde - mit anderen Worten, ich möchte jede LED steuern und ihr nicht einfach einen Videostream zuführen.

Ich muss in der Lage sein, jede einzelne LED und ihre Helligkeit zu steuern. Ich möchte die LEDs "RL5-RGB-C-2 Clear TriColor" kaufen, bei denen jede Glühbirne drei Eingänge für Rot, Grün und Blau hat.

Ich habe einige grundlegende Tutorials zum Erstellen von einfarbigen LED-Displays gefunden, aber keines, das mir zeigt, wie man ein RGB-Display dieser Größe mit dem GPIO (oder einem anderen Bus) auf dem Raspberry Pi erstellt und mir erlaubt um die Helligkeit jeder LED zu steuern.

Ich frage mich nur, wo ich anfangen soll oder ob mich jemand in die richtige Richtung weisen könnte. Ich bin auch offen für Vorschläge bezüglich des Arduino.

Ein "Videostream" ist in der Tat eine Möglichkeit, die Farbe und Helligkeit jeder LED zu steuern, daher verstehe ich die Unterscheidung nicht, die Sie zu treffen versuchen.
Was ich meinte, war, dass ich keine Filmdatei liefern und/oder Videoausgang verwenden möchte. Ich möchte jede LED manuell mit einem HEX-Wert aufleuchten lassen, den ich beispielsweise in einer Textdatei festlege. Der einzige Grund ist, dass ich keine Videos rendern muss, damit mein Display funktioniert.
@Sam Wilson Mir scheint, dass Sie im Moment nicht wirklich verstehen, wie "Kontrollebenen" funktionieren. Sobald auf der physikalischen Schicht alles einwandfrei läuft und jede LED gesteuert werden kann, interessiert sich diese Schicht nicht dafür, was das Signal erzeugt. Das ist Aufgabe für Software auf einer höheren Ebene. Beispielsweise kümmert sich der Treiber der Soundkarte nicht darum, ob Sie Musik mit VLC oder Winamp abspielen oder ob Sie die Musik von einer Festplatte oder einem Flash-Laufwerk abspielen.
Das sind mehr LEDs, als Sie mit dem Pi PWM können, daher benötigen Sie externe PWM-Treiber, die Sie entweder sequentiell oder adressierbar aktualisieren können.
@AndrejaKo vielleicht nicht. Es ist die physische Schicht, von der ich nicht weiß, wie ich sie aufbauen/einrichten soll. Ich komme mit Software zurecht und kann herausfinden, wie ich jede LED steuern kann, sobald ich das Hardware-Setup habe, es ist nur so, dass ich nicht weiß, wo ich mit der Hardware anfangen soll.
@ChrisStratton Außenborder? Bedeutet das im Wesentlichen, mehrere Systeme miteinander zu verbinden?
Wahrscheinlich ja, entweder Chips, die jeweils eine Reihe von LEDs verarbeiten können, oder sogar einzelne RGB-Pixel, die verkettet und mit einem seriellen Datenstrom gespeist werden können, um sie nacheinander zu aktualisieren. Der entscheidende Punkt ist, dass die Befehls- / Aktualisierungsrate langsamer als die PWM-Schaltfrequenz ist, sodass für jede LED außerhalb des Pi eine Intensitätsanzeige und ein PWM-Timer vorhanden sein müssen, die davon angesteuert werden.
@ChrisStratton Danke für den Hinweis. Ich bin mir nicht einmal sicher, welche Art von Chips ich bekommen müsste. Vielleicht ist dieses Projekt für einen Anfänger wie mich etwas zu fortgeschritten. Ich möchte natürlich kein Dutzend Raspberry Pis kaufen, um es zum Laufen zu bringen, und ich bin mir sicher, dass ich das auch nicht müsste. Meine ursprüngliche Idee ist, dass ich mehrere Chips haben müsste, die jeweils vielleicht 16 oder 32 LEDs steuern, und dann vielleicht einen Multiplexer verwenden müsste, um den Bitstrom alle 16/32 Bytes aufzuteilen (vorausgesetzt, 1 LED benötigt ein Byte an Informationen zum Leuchten). hoch), falls das Sinn macht.
Sie brauchen keinen Multiplexer mit Chips, die eigentlich dafür ausgelegt sind, weil sie eine effektive Adresse von ihrer Position in der logischen Zeichenfolge erhalten. Sie treiben jedoch weniger LEDs pro Chip an, da sie für Hochstrom-LEDs ausgelegt sind. Sie könnten versuchen, billige Mikrocontroller als benutzerdefinierte Treiber oder sogar CPLDs zu verwenden, aber letzteres würde mehr Lernen erfordern.
electronic.stackexchange.com/questions/18330/… scheint hier relevant zu sein. Googlen Sie auch nach "WS2801": Sie können vorgefertigte adressierbare LED-Streifen mit Treibern erhalten, was nützlich wäre, wenn Sie eine Matrix in einem Raster von ~ 5 cm wünschen.

Antworten (2)

Wenn Sie wirklich jede der LEDs steuern möchten, müssen Sie praktisch Schieberegister verwenden, da 576 * 3 = 1728 Pins gesteuert werden müssen und die Pis nicht mehr als 17 GPIO-Pins haben.

Nehmen wir an, dass wir den Helligkeitsteil weglassen (aber der Ansatz ist derselbe, Sie würden 1728 weitere PWM-Ausgänge benötigen, um die Helligkeit zu steuern), dann beträgt die Anzahl der benötigten Schieberegister 1728/8 = 216. Ich würde empfehlen, die 74hc595 zu verwenden, da sie billig sind und viele Ressourcen aufgegeben haben.

Die Grundidee besteht also darin, den Zustand jeder Farbe jeder LED aller LEDs entweder als EIN oder AUS in alle Schieberegister einzuspeisen (da wir uns jetzt nicht mit Helligkeit befassen, reichen nur drei Bits für jede LED) und dann Latchen Sie alle Register, um das Bild anzuzeigen.

Haben Sie sich schon einmal WS2812 LEDs angesehen? Das sind RGB-LEDs mit eingebauten 8-Bit-PWM-gesteuerten Konstantstromquellen für jede Farbe. Sie enthalten ein 24-Bit-Schieberegister und können in Reihe geschaltet werden. Durch die Konstantstromquelle können sie mit 3,5 bis 5V versorgt werden und durch die verketteten Schieberegister wird nur ein einziger Ausgang eines Mikrocontrollers oder des Raspberry Pi benötigt, um die RGB-Daten für alle LEDs einzutakten. Oh, und Sie können 1024 LEDs mit 30 fps ausführen.

Man muss nur bedenken, dass die RGB-Daten für alle LEDs mit engem Timing und ohne Unterbrechung geschrieben werden müssen. Kein Problem für einen Mikrocontroller, aber der Pi ist ein Computer mit Interrupts usw. Aber ich denke, es gibt Bibliotheken für diese LEDs.