Adressierbare Pixel

In den letzten 5 Jahren sind die verschiedensten LEDs und zugehörigen Technologien allgemein verfügbar geworden. Vor dieser Zeit konnte man LEDs individuell ansprechen und mit einem Mikrocontroller steuern. So konnte man eine große Fläche vollfarbiger Pixel mit beeindruckenden Farbanimationen betreiben und für dekorative Beleuchtungen, Leuchtleisten etc. nutzen. Allerdings konnte man immer nur jeweils eine Leiste steuern.

Was aber, wenn man ein Gitternetz an Pixeln erstellen und jedes einzelne steuern möchte? Und genau hier kommen adressierbare LED Pixel ins Spiel.

Das adressierbare Pixel APA102 / SK9822

Diese erstaunlichen kleinen Geräte gibt es in vielen Variationen, Größen, Layouts, Steuermechanismen, Farbkonfigurationen etc., aber alle haben folgende Aspekte gemeinsam:

  • Bei jedem sitzen im Innern 3 x Ultra Bright LEDs. Rot, grün und blau. Es gibt auch RGBWhite Varianten, um die wir uns später kümmern.
  • In jedem ist ein winziger IC (integrated Circuit/integrierte Schaltung) integriert, der steuert, wie die einzelnen Lichter aktiviert werden.
  • Man kann sie zu langen, komplexen Systemen verketten.
  • Und noch wichtiger: Man kann sie individuell ansprechen

Wir haben jetzt also eine lange Leiste von Pixeln, denen man einzeln und bei hohen Frameraten befehlen kann, was sie zu tun haben und wie sie es zu tun haben. Diese sind normalerweise auf einer semi-flexiblen Kupferleiste in unterschiedlichen Konfigurationen und Breiten erhältlich. Man kann sie auch in nahezu beliebigen PCB-Größen gitterförmig, kreisförmig oder in anderen Konfiguration kaufen. Oder individuell!


Beispiel für WS2812 Pixel auf einer 12 mm Leiste mit einer Dichte von 144 Pixel/Meter.

Die vielen verschiedenen Pixeltypen

In dieser Kategorie von adressierbaren Pixeln gibt es eine Menge verschiedener Technologien. Sie unterscheiden sich in bestimmten Aspekten und haben alle einen Anwendungsfall:

  • Rate und Methode, mit der die individuellen RGB LEDs innerhalb des Pixels physisch gesteuert werden  
  • Kommunikationsprotokoll, mit der Geräte die Pixel ICs steuern 
  • Ausmaß der Redundanz
  • Ausmaß der individuellen Farb- und Helligkeitssteuerung

Als Kurzfassung werden hier die zwei gebräuchlichsten Pixeltypen beschrieben. Der abschließende Anwendungsfall dieser Anleitung befasst sich dann mit einem bestimmten Typ.

4-polige adressierbare Pixel

Neopixel / WS2812 / SK6812

Dies sind drei Modelle der exakt gleichen Technologie. Die Pixel haben vier Pole.

  • Masse - verbunden mit der Schutzerde der Spannungsversorgungsschiene 
  • Data IN - entweder verbunden mit Ihrem Steuergerät oder mit Data Out des vorherigen Pixels 
  • Data OUT - verbunden mit DATA IN des nächsten Pixels 
  • +5V - verbunden mit den gemeinsamen +5V der Spannungsversorgungsschiene

Zur Kommunikation untereinander nutzen diese Pixel ein Protokoll auf PWM-Basis (Pulse Width Modulation). 

Ihr Steuergerät sendet ein serielles Signal mit einer vordefinierten Geschwindigkeit (ca. 800 kHz, kann sich von Modell zu Modell etwas unterscheiden). Das Signal ist eine geordnete Liste von Bytes, die jeweils die Helligkeitsstufe des RGB-Werts jedes Pixels darstellen. Die Reihenfolge, in der die Bytes gesendet werden, steuern das Pixel, das leuchten soll. Beispiel: Wenn 3 Pixel in einer Kette nach dem Muster R G B aufleuchten sollen, wobei Pixel 1 rot, Pixel 2 grün und Pixel 3 blau ist, wird folgender Datenblock gesendet:

[255 0 0] [0 255 0] [0 0 255]

Dieser Pixeltyp ist die billigere der im Handel erhältlichen Variante. Die Pixel haben eine maximale Transferrate von 800 kHz, was bei großen Installationen zum beschränkenden Faktor wird, besonders wenn das Steuergerät Daten an eine sehr lange Pixelkette übertragen muss.

Als Workaround kann man die Installation in eine Gruppe paralleler Ausgabe-Frames unterteilen. Beispiel: Bei einem Pixel-Gitternetz von 100 Leisten in der Breite und 100 Leisten in der Höhe, die in einer langen Kette miteinander verbunden sind, dauert es eine gewisse Zeit, bis alle Pixel aktualisiert sind, was zu einer niedrigen Bildwiederholrate führt. Bei einem Steuergerät mit 10-fach paralleler Ausgabe kann man die Installation in 10 Blocks auftrennen und dadurch die Framerate deutlich erhöhen.

Bereich der in dieser Familie verfügbaren Pixel:

Diese sind in unterschiedlichen Dichten, Leistenbreiten und Feuchtigkeitsschutz-Graden erhältlich. Hier sind einige gebräuchliche Dichten bei Produktionen OHNE Feuchtigkeitsschutz.

6-polige (SPI-betriebene) adressierbare Pixel

Dotstar / APA102 / SK9822 

Dies sind Hochleistungs-Pixel mit hoher Steuerung der Farbkörnigkeit und Helligkeitseinstellung. 

Die drei oben erwähnten Modelle sind alles die gleichen Pixel, werden aber von unterschiedlichen Firmen hergestellt/vermarktet. Das APA102 ist eigentlich das Original. Adafruit hat sich den Namen "Dotstar" gesetzlich schützen lassen, während SK9822 als aktuelles Modell von einer anderen Firma hergestellt wird. 

Diese Pixel haben eine höhere Leistung und folgende 6 Pole:

  • Masse - verbunden mit der Schutzerde der Spannungsversorgungsschiene 
  • Clock IN - serieller CLK Signal-Eingang 
  • Data IN - serieller DAT Signal-Eingang
  • Clock Out - serieller CLK Ausgang INVERTIERT 
  • Data Out - serieller DAT Signal-Ausgang
  • +5V - verbunden mit den gemeinsamen +5V der Spannungsversorgungsschiene

Zum Ansteuern dieser Pixel ist ein serielles Protokoll erforderlich, das sich in die meisten Programmiersprachen einfach implementieren lässt. Außerdem gibt es eine Vielzahl von standard Treibern, die man dafür verwenden kann. Dazu später mehr. Um die Pixel anzusprechen, muss man einen String von Bytes erstellen, etwa wie folgt:

Start Frame
Pix 1 GB Frame
Pix 1 Blue
Pix 1 Green
Pix 1 Red
...
NEXT 4 Bytes PIXEL DATA
...
END Frame
  • Start Frame (32 Bit): Dieser Frame informiert die Pixel darüber, dass Daten eingehen. Eingestellt auf 32 x 0
  • Pix 1 GB Frame (8 Bit): Mit diesem Frame kann man die globale Helligkeit dieses bestimmten Pixels in 32 Stufen steuern. 223 = ist der niedrigste Helligkeitswert und 255 ist der höchste
  • Pix 1 Blue (8 Bit): ein Wert von 0 bis 255 steuert den BLUE-Pegel dieses Pixels
  • Pix 1 Green (8 Bit): ein Wert von 0 bis 255 steuert den GREEN-Pegel dieses Pixels
  • Pix 1 Red (8 Bit): ein Wert von 0 bis 255 steuert den RED-Pegel dieses Pixels
  • End Frame (32 Bit): Dieser Frame mit 32 x 1s zeigt an, dass alle Pixel die empfangenen Daten anwenden müssen! Dieser Block wird gesendet, nachdem alle Pixel adressiert wurden.

Man kann diese Pixel für RIESIGE Installationen einsetzen, da sie mit sehr hohen Frequenzen angesteuert werden können. Man kann Daten zum SK9822 Pixel mit maximal 30 MHz (30 MBit) senden. 

In der Realität ist diese Rate allerdings häufig weitaus niedriger, da sie von einigen technischen Anforderungen abhängt. Man muss sicherstellen, dass ausreichend Spannung zu allen Pixeln übertragen wird und die Erdung, Störgeräusch-Abschirmung und Spannungspufferung etc. korrekt sind. Hier sind einige Links mit den unterschiedlichen Dichten. Sie sind in ähnlichen Dichten wie das Neopixel erhältlich:

Der Einfachheit halber verwenden wir für den Rest der Anleitung das SK9822 Pixel und speziell das SK9822 5050 (5x5mm) Pixel. Es funktioniert in allen beschriebenen Anwendungsfällen. 

In Verbindung stehende Artikel