VON LEUCHTENDEN ZARGEN III – TECH-DEEP-DIVE

Im dritten Teil der Reihe tauchen wir deutlich tiefer in die Materie ein und sehen uns die Komponenten im Detail an. Hauptbestandteile des LED-Tisch-Zaubers sind – abgesehen vom offensichtlichen Tisch – ein ESP32 und LED-Streifen. Ein Blick unter die Haube offenbart noch ein paar weitere Komponenten, so dass wir insgesamt mit folgenden Teilen ins Rennen starten:

  • Ein ESP32, am einfachsten in Form eines Entwicklerboards.
  • Ein RGB-LED-Streifen mit 144 einzelnen WS1812B pro Meter, weil wir eine ordentliche Auflösung benötigen. Ein WS1812b bzw. ein Pixel besteht dabei aus einer LED mit den Farben Rot, Grün und Blau und einem integrierten Chip, der die LED ansteuert. Das „WS“ im Namen steht einfach für den Hersteller Worldsemi. Über die gesamte Länge leuchten stolze 379 Pixel. Der LED-Streifen hat 3 Anschlüsse: Masse (GND), +5V, und ein Daten-Pin für die Steuersignale um die ganze Farb-Magie zu ermöglichen.
  • Ein 470-Ohm-Widerstand zwischen dem ESP32 und dem LED-Daten-Pin hilft Signalspitzen zu vermeiden, welche die erste LED im Streifen beschädigen könnten.
  • Ein 1000-µF-Elektrolytkondensator zwischen +5V und Masse (GND) um Spannungsspitzen zu nivellieren.
  • Ein Logic Level Shifter (LLS) zwischen dem Daten-Pin des ESP32 und dem Daten-Pin der LEDs. Die Datenpins des ESP32 liefern ein Signal mit +3,3V die LEDs erwarten +5V. Der Logic Level Shifter kümmert sich darum die LEDs korrekt zu befeuern.
  • Ein ausreichend dimensioniertes Netzteil eines Markenherstellers mit 5V Ausgangsspannung. Hier gilt es billige Imitate aus dem Reich der Mitte zu meiden. Eine zusätzliche spontane Beleuchtung in Form einer Stichflamme aus dem Netzteil kann sicherlich einen kurzen (freudigen) Aha-Moment auslösen, bringt aber ein paar unschöne Nebenwirkungen mit sich. Nennt mich langweilig: mir reicht es, wenn die LEDs leuchten.
  • Eine kleine Steckplatine, ein paar kurze Kabel und Stecker zum Verbinden runden die kleine Schaltung ab.

Die wenigen Komponenten fallen fast von alleine zu folgender kleiner Schaltung zusammen:

Von Leuchtenden Zargen III - Tech-Deep-Dive - Schaltung

Keine Sorge, das wird kein Tutorial zum Nachbauen, aber ein paar Hinweise für frustfreien LED-Spaß können nicht schaden: Den LED-Streifen muss man richtig herum anschließen, insbesondere wenn er leuchten soll. Kleine Pfeile neben den LEDs zeigen die „Datenfluss“-Richtung an, also die Richtung in welcher die Steuersignale von einer LED zur nächsten weiterfließen (auch „Kaskadierung“ genannt). Das Daten-Pin des ESP32 wird daher an der Seite mit einem der Pfeilenden angeschlossen, im Bild an der linken Seite.

Von Leuchtenden Zargen III - Tech-Deep-Dive - LED-Nahaufnahme

Flackerfreier LED-Genuss

Flackernde Kerzen sind natürlich nett anzusehen. Unkontrolliert flackernde LEDs verströmen nicht ganz dieselbe Romantik, daher wollen wir technisch bedingtes Flackern eher vermeiden. Die erste Maßnahme ist ganz einfach: Der ESP32, der LED-Streifen und das Netzteil müssen an einer gemeinsamen Masse (GND) angeschlossen sein.

Der zweite Punkt ist im Grunde auch nicht schwierig: Zur Steuerung der LEDs, also um Farben darzustellen oder Animationen abzuspielen werden über die Datenleitung in sehr schneller Folge Signale an den LED-Streifen gesendet. Zusätzlich müssen die Signale möglichst unverfälscht bei den LEDs ankommen. Wir erinnern uns: Die Steuersignale vom Microcontroller zu den LEDs werden von einem Logic Level Shifter von 3,3V auf 5V augmentiert, weil die LEDs 5V einfach schmackhafter finden. Nicht alle Logic Level Shifter erfüllen aber die weniger offensichtlichen Anforderungen. Einige kommen mit der schnellen Signalfolge nicht zurecht, andere zerhacken die Signal-Flanken nach Belieben. Ein Logic Level Shifter, der problemlos funktioniert und meine LEDs stabil leuchten lässt ist der 74AHCT125, z.B. von Adafruit.

Von Leuchtenden Zargen III - Tech-Deep-Dive - LLS

Bibliotheken – Nicht nur für Bücher

Erst die passende Software erweckt die Hardware zum Leben und lässt die LEDs leuchten. Durch einige Zeilen Code, stellenweise auch ein paar mehr, wird der ESP32 zum LED-Controller. In den Anfangstagen der Microcontroller-Programmierung musste man noch alles selbst entwickeln und akribisch darauf achten, dass keine Bits aus der Reihe tanzen. Heutzutage hat man Zugriff auf eine Vielzahl freier Software-Bibliotheken, die einem die Arbeit erleichtern. Der Aufwand verschiebt sich von der Entwicklung zur Auswahl und Evaluierung der passenden Bibliotheken.

Hauptaufgabe des LED-Controllers ist (offensichtlich) die Ansteuerung der LEDs. Ein gute Bibliothek, die einem viel Arbeit abnimmt und die ich schon häufig für den ESP32 verwendet habe, ist NeoPixelBus. Daneben existieren auch andere Bibliotheken, um LEDs zum Leuchten zu bringen, z.B. FastLED oder auch die NeoPixel-Bibliothek von Adafruit. Ein Vergleich der Features sprengt hier den Rahmen, schreibt mir einfach in den Kommentaren, wenn es euch interessiert, warum ich mich für NeoPixelBus entschieden habe.

Nicht zu unterschätzen ist auch eine reibungslose Kommunikation mit dem Smart Home. Wie der LED-Controller ins Smart Home eingebunden ist, habt ihr im vorigen Artikel gesehen. Zur Vernetzung von Hardware haben sich schon viele kluge Köpfe Gedanken gemacht und Standards etabliert, kein Grund also etwas Neues zu erfinden. Ich habe mich für den Industriestandard MQTT entschieden und verwende die Bibliothek PubSubClient für den ESP32.

Die eigentlich interessanten Funktionen aus Anwendersicht, z.B. die Anzeige der Außentemperatur durch die LEDs bringen die Bibliotheken nicht mit, die Anforderung ist dafür zu speziell. Es bleibt also genug Gelegenheit sich beim Codieren auszutoben und eigene Ideen zu implementieren. Die geschickte Nutzung der Bibliotheken, angereichert um den eigenen Code führt dann zum gewünschten Ergebnis und lässt die LEDs leuchten.

Für den einen oder anderen war das schon ein ordentlicher Tauchgang in die (Un-)tiefen der Technologie, manchem ging es vielleicht nicht weit genug. Lasst es mich einfach in den Kommentaren wissen.

Im nächsten Teil geht es etwas anschaulicher mit ein paar Extras weiter: Was lässt sich mit den LEDs noch anstellen?

By Published On: 16.1.2021Categories: Blog, ESP32, LED, MQTT, Smart Furniture0 Comments