LED Strip Bricklet 2.0

Features

  • Steuert bis zu 2048 RGB oder 1536 RGBW LEDs
  • Alle LEDs können unabhängig voneinander geschaltet werden
  • Aktualisierungsrate von bis zu 100Hz für jede LED möglich

Beschreibung

Das LED Strip Bricklet 2.0 kann genutzt werden um LED Streifen und LED Pixel zu steuern, die mit einem WS2801, WS2811, WS2812/SK6812 (NeoPixel RGB), SK6812RGBW (NeoPixel RGBW), LPD8806 oder APA102 (DotStar) LED-Treiber ausgestattet sind. Es ist möglich 2048 RGB oder 1536 RGBW LEDs (6144 einzelne LEDs) unabhängig voneinander über ein Brick zu steuern.

Mit Hilfe der API können alle LEDs gleichzeitig mit einer festen Aktualisierungsrate von bis zu 100Hz gesteuert werden. Ein Anwendungsbeispiel findet man im Starterkit: Blinkenlights: Video

Bemerkung

Die maximale Aktualisierungsrate hängt von Typ und Anzahl der verwendeten LEDs ab (siehe hier).

Technische Spezifikation

Eigenschaft Wert
Unterstütze LED-Treiber
WS2801, WS2811, WS2812/SK6812 (NeoPixel RGB), WS2813, WS2815,
SK6812RGBW (NeoPixel RGBW), LPD8806 und APA102 (DotStar)
Stromverbrauch 64mW (12,8mA bei 5V)
   
Auflösung 8Bit pro LED
Maximale Anzahl LEDs 6144 (2048 RGB oder 1536 RGBW LEDs)
Maximale Aktualisierungsrate 100 Aktualisierungen pro Sekunde
   
Abmessungen (B x T x H) 30 x 30 x 12mm (1,18 x 1,18 x 0,47")
Gewicht 8.1g

Ressourcen

Erster Test

Um ein LED Strip Bricklet 2.0 testen zu können, müssen zuerst Brick Daemon und Brick Viewer installiert werden. Brick Daemon arbeitet als Proxy zwischen der USB Schnittstelle der Bricks und den API Bindings. Brick Viewer kann sich mit Brick Daemon verbinden, gibt Informationen über die angeschlossenen Bricks und Bricklets aus und ermöglicht es diese zu testen.

Als nächstes muss das LED Strip Bricklet 2.0 mittels eines Bricklet Kabels mit einem Brick verbunden werden. Anschließend kann ein LED Streifen oder LED Pixel an das Bricklet, wie weiter unten beschrieben, angeschlossen werden.

Wenn der Brick per USB an den PC angeschlossen wird sollte einen Moment später im Brick Viewer ein neuer Tab namens "LED Strip Bricklet 2.0" auftauchen. Wähle diesen Tab aus. Wenn alles wie erwartet funktioniert, kann nun ein LED Steifen gesteuert werden.

LED Strip Bricklet 2.0 im Brick Viewer

Nun kann ein eigenes Programm geschrieben werden. Der Abschnitt Programmierschnittstelle listet die API des LED Strip Bricklet 2.0 und Beispiele in verschiedenen Programmiersprachen auf.

Unterstützte LEDs

Es werden LED Streifen und Pixel unterstützt, die mit dem WS2801, WS2811, WS2812 SK6812 (NeoPixel RGB), SK6812RGBW (NeoPixel RGBW), LPD8806 oder APA102 (DotStar) Treiber ausgestattet sind. Im Weiteren bezieht sich LED Treiber auf alle diese Treiber.

Der verwendete Treiber muss über Brick Viewer oder die set_chip_type() Funktion des LED Strip Bricklets 2.0 eingestellt werden.

Der LED Treiber kann bis zu vier LEDs unabhängig voneinander steuern. Typischerweise werden RGB(W) LEDs, die in einem Gehäuse zusammen untergebracht sind, gesteuert. Der LED Treiber wird über einen 3- oder 2-Leiter Datenbus, bestehend aus einer Datenleitung, einer Taktleitung und Masse als Referenz, gesteuert. Jeder Treiber verfügt dazu über einen Bus-Eingang und einen Bus-Ausgang, so dass die Treiber in Serie hintereinander geschaltet werden (Daisy Chain). Jeder Bus-Eingang der LED Treiber ist entweder mit einem steuernden Gerät (wie z.B. das LED Strip Bricklet 2.0) oder mit einem Bus-Ausgang von einem vorherigen LED Treiber verbunden. Da die LED Treiber in Serie geschaltet werden müssen, darf jeder Bus-Ausgang höchstens mit einem Bus-Eingang verbunden werden. Der Bus wird beginnend beim ersten LED Treiber indiziert (API Index 0).

LED Strip with WS2801

Das obige Foto zeigt einen typischen WS2801 LED Steifen. Jedes Modul des Streifens ist mit einem WS2801 Treiber und einer davon angesteuerten RGB LED ausgestattet. Die Signale sind jeweils auf der Eingangsseite (IN) und auf der Ausgangsseite (OUT) gekennzeichnet: 5V, CK (Clock), SD (Serial Data) und GND. Im Gegensatz zum WS2801 haben die WS2811 und WS2812 Treiber keine Taktleitung.

Anschlussmöglichkeit

Das nachfolgende Bild stellt die Schnittstellen des LED Strip Bricklet 2.0 dar:

LED Strip Bricklet 2.0 Anschlussbeschreibung

Wie im Unterstützte LEDs Abschnitt beschrieben, unterstützt das Bricklet LED Steifen und Pixel, die mit WS2801, WS2811, WS2812, SK6812 (NeoPixel RGB), SK6812RGBW (NeoPixel RGBW), LPD8806 oder APA102 (DotStar) Treiber-ICs ausgestattet sind. Die mit "Output" beschrifteten Klemmen müssen mit dem Eingang des ersten LED Treiber-ICs verbunden werden.

Die Klemme ist mit folgenden Signalen belegt:

  • "DAT" ist die Datenleitung zum LED Treiber Chip. Sie muss mit dem Dateneingang des ersten LED Treiber Chips verbunden werden. Leider gibt es keine allgemeingültige Beschriftung für LED Steifen und Pixel. Manchmal ist das Signal mit SD (Serial Data) oder DI (Data Input) beschriftet. Es ist ebenfalls möglich, dass nur der Ausgang beschriftet ist (z.B. DO, Data Output). Bei der anderen Seite muss es sich also folglich um den Eingang handeln.

  • "CLK" ist die Taktleitung zum LED Treiber Chip. Sie muss mit dem Takteingang des ersten LED Treiber Chips verbunden werden. Dieser Eingang ist typischerweise mit CLK, CK oder CI (Clock Input) beschriftet. Falls nur der Ausgang beschriftet ist findet man Beschriftungen wie CO (Clock Output).

    Die WS2811, WS2812 und SK6812 Treiber-ICs haben keine Taktleitung, für diese muss die "CLK" Klemme offen gelassen werden.

  • "-" ist die Masseleitung. Masse ist notwendig um eine Spannungsreferenz zu den DAT und CLK Signalen zu besitzen.

  • "+" ist der Versorgungsspannungs-Ausgang. Es ist mit dem "+" Signal der "Input" Klemme verbunden und sollte nicht benutzt werden um LED Steifen oder Pixel zu versorgen. Die Streifen oder Pixel sollten direkt von der Stromquelle aus versorgt und dieses Signal nicht angeschlossen werden.

Die Eingangsklemme verfügt über zwei Signale:

  • "+" ist der Spannungsversorgungs-Eingang. Dieser kann mit der Stromversorgung für die LEDs verbunden werden um die Versorgungsspannung zu messen. Wird dies nicht benötigt, so kann die Klemme offen bleiben.
  • "-" ist die Masseleitung. Sie ist intern mit der Masse von der "Output" Klemme verbunden.

LED Streifen ohne Taktleitung (z.B. WS2812B)

Es existiert keine allgemeine farbliche Kennzeichnung für LED Streifen. Insbesondere verstoßen die Farben oftmals gegen Konventionen. In diesem WS2812B LED Streifen Beispiel ist der rote Draht 5V, grün die Datenleitungleitung und der weiße Draht ist Masse.

Als erstes wird die Datenleitung des ersten LED Streifens und Masse der Spannungsversorgung mit dem LED Strip Bricklet 2.0 verbunden. Dabei muss darauf geachtet werden, dass der Dateneingang des ersten Streifens mit dem Datenausgang des LED Strip Bricklets 2.0 verbunden wird.

Falls die Spannung der Versorgung gemessen werden soll, müssen die 5V der Stromversorgung mit dem LED Strip Bricklet 2.0 verbunden werden. Es können weitere LED Streifen in Reihe (hintereinander) an den ersten LED Streifen angeschlossen werden.

Es ist nicht ausreichend die LED Streifen nur an deren Anfang zu versorgen. Wir empfehlen mindestens alle 2 Meter neu einzuspeisen. Dazu kann zum Beispiel pro Einspeisepunkt ein eigenes Kabel zur Stromversorgung geführt werden. Somit wird der elektrische Widerstand reduziert und Leitungsverluste minimiert. Das nachfolgende Bild zeigt ein Beispiel.

LED Strip Bricklet 2.0 Verkabelung für WS2812B LED Streifen

LED Steifen mit Taktleitung (z.B. WS2801)

Es existiert keine allgemeine farbliche Kennzeichnung für LED Streifen. Insbesondere verstoßen die Farben oftmals gegen Konventionen. In diesem WS2801 LED Streifen Beispiel ist der schwarze Draht 5V, grün die Taktleitung, rot die Datenleitung und der blaue Draht ist Masse.

Als erstes werden die Takt- und Datenleitung des ersten LED Streifens und Masse der Spannungsversorgung mit dem LED Strip Bricklet 2.0 verbunden. Dabei muss darauf geachtet werden, dass der Takt- und Dateneingang des ersten Streifens mit dem Takt- und Datenausgang des LED Strip Bricklet 2.0 verbunden wird.

Falls die Spannung der Versorgung gemessen werden soll, müssen die 5V der Stromversorgung mit dem LED Strip Bricklet 2.0 verbunden werden. Es können weitere LED Streifen in Reihe (hintereinander) an den ersten LED Streifen angeschlossen werden.

Es ist nicht ausreichend die LED Streifen nur an deren Anfang zu versorgen. Wir empfehlen mindestens alle 2 Meter neu einzuspeisen. Dazu kann zum Beispiel pro Einspeisepunkt ein eigenes Kabel zur Stromversorgung geführt werden. Somit wird der elektrische Widerstand reduziert und Leitungsverluste minimiert. Das nachfolgende Bild zeigt ein Beispiel.

LED Strip Bricklet 2.0 Verkabelung für WS2801 LED Streifen

LED Pixel

Die Verbindung zu LED Pixeln ist sehr ähnlich zur Verbindung zu LED Streifen. Es existiert ebenfalls keine allgemeine farbliche Kennzeichnung. Im nachfolgenden Beispiel ist der rote Draht 5V, blau ist Masse, die Taktleitung (nur WS2801) ist grün und die Datenleitung ist weiß.

Die Takt- und Datenleitung vom ersten LED Pixel Bündel, sowie Masse von der Stromversorgung werden mit dem LED Strip Bricklet 2.0 verbunden. Dabei muss darauf geachtet werden, dass der Takt- (nur WS2801) und Dateneingang des ersten Pixels mit dem Takt- (nur WS2801) und Datenausgang des LED Strip Bricklet 2.0 verbunden wird. Soll die Versorgungsspannung gemessen werden, muss auch 5V von der Stromversorgung an das Bricklet angeschlossen werden. Sollen mehrere Bündel verwendet werden, so können diese in Reihe (hintereinander) an das erste Bündel angeschlossen werden.

Typischerweise besitzt jedes Pixel Bündel Drähte zur Stromversorgung am Anfang und Ende des Bündels. Diese sollten über zusätzliche Kabel mit der Stromversorgung verbunden werden. Benachbarte Drähte können auch zusammengefasst werden. Diese Maßnahme reduziert den elektrischen Widerstand und minimiert die Leitungsverluste der Stromversorgung.

LED Strip Bricklet 2.0 Verkabelung für Pixel

Feste Aktualisierungsrate

Um eine flüssige Animation zu erreichen wird eine feste Aktualisierungsrate benötigt. Eine feste Aktualisierungsrate kann einfach mit einer korrekt konfigurierten Framelänge und dem FrameStarted Callback erreicht werden. Die Framelänge stellt die Zeit in ms dar, die zwischen zwei Frames verstreicht. Der FrameStarted Callback wird ausgelöst sobald eine Übertragung des Frames auf die LEDs startet (Die Frames sind Double-Buffered).

Wenn als Beispiel eine Aktualisierungsrate von 20 Frames pro Sekunde erreicht werden soll, sollte die Framelänge auf 50ms gesetzt werden. Nachdem die Framelänge gesetzt ist, muss das erste Frame übertragen werden (d.h. es müssen alle RGB Werte gesetzt werden). Danach muss auf den FrameStarted Callback gewartet werden woraufhin das nächste Frame übertragen werden muss usw.

LEDs mit fester Aktualisierungsrate steuern

Wenn ein FrameStarted Callback empfangen wird bevor alle LEDs eines Frames gesetzt wurden, ist die Aktualisierungsrate zu hoch.

Die maximale Aktualisierungsrate hängt von Typ und Anzahl der verwendeten LEDs ab. Zum Beispiel erlauben SK6812-LEDs eine maximale Datenrate von 800 kbit/s (oder 100 kByte/s). Da eine LED 4 Byte an Daten benötigt (RGBW), können maximal 25000 LEDs pro Sekunde aktualisiert werden. Zudem benötigen die LEDs eine Reset-Zeit von 80µs zwischen Frames. Die maximale Aktualisierungsrate kann dann wie folgt berechnet werden: Die Anzahl angeschlossener LEDs geteilt durch 25000 ergibt die Dauer eines Frames (z.B. 0,02s für 500 angeschlossene LEDs). Das Reziproke der Frame-Dauer und Reset-Zeit ergibt eine Aktualisierungsrate von 1 / (0,02s + 0,0008s) ~ 48Hz. Das ist ein theoretisches Maximum.

Ein weiterer Faktor, der berücksichtigt werden muss, ist die Kommunikation zwischen PC und Bricklet. Abhängig vom Aufbau ist diese typischerweise auf ungefähr 1000 Nachrichten pro Sekunde limitiert. Eine Nachricht enthält 60 Bytes an LED-Daten, also können bei RGBW-LEDs maximal 15000 RGBW-Werte pro Sekunde transferiert werden (unter der Annahme, dass die Antworten des Bricklets deaktiviert wurden). Wenn analog zum letzten Beispiel 500 LEDs verwendet werden, ist es möglich, 30 komplette Bilder pro Sekunde zu übertragen. Die API des Bricklets unterstützt es, Teile des Bildes zu aktualisieren, was viele Optimierungen ermöglicht: Wenn zum Beispiel nur das halbe Bild pro Frame aktualisiert werden muss, sind 60 Updates pro Sekunde möglich.

Gehäuse

Ein laser-geschnittenes Gehäuse für das LED Strip Bricklet 2.0 ist verfügbar.

Gehäuse für LED Strip Bricklet

Der Aufbau ist am einfachsten wenn die folgenden Schritte befolgt werden:

  • Schraube Abstandshalter an das Bricklet,
  • schraube Unterteil an untere Abstandshalter,
  • baue Seitenteile auf,
  • stecke zusammengebaute Seitenteile in Unterteil und
  • schraube Oberteil auf obere Abstandshalter.

Im Folgenden befindet sich eine Explosionszeichnung des LED Strip Bricklet 2.0 Gehäuses:

Explosionszeichnung für LED Strip Bricklet

Hinweis: Auf beiden Seiten der Platten ist eine Schutzfolie, diese muss vor dem Zusammenbau entfernt werden.

Programmierschnittstelle

Siehe Programmierschnittstelle für eine detaillierte Beschreibung.

Sprache API Beispiele Installation
C/C++ API Beispiele Installation
C/C++ für Mikrocontroller API Beispiele Installation
C# API Beispiele Installation
Delphi/Lazarus API Beispiele Installation
Go API Beispiele Installation
Java API Beispiele Installation
JavaScript API Beispiele Installation
LabVIEW API   Installation
Mathematica API Beispiele Installation
MATLAB/Octave API Beispiele Installation
MQTT API Beispiele Installation
openHAB API Beispiele Installation
Perl API Beispiele Installation
PHP API Beispiele Installation
Python API Beispiele Installation
Ruby API Beispiele Installation
Rust API Beispiele Installation
Shell API Beispiele Installation
Visual Basic .NET API Beispiele Installation
TCP/IP API    
Modbus API