Die ESP32 Mikrocontroller sind wahre Alleskönner, wenn sie mit der passenden Programmierung versehen wurden: WLED ist ein tolles open Source Projekt für die ESP32 und ESP8266 Plattformen um einen guten Teil eurer Beleuchtungsanforderungen abzudecken. Die Community ist groß. Es gibt auch „fertige“ Controller die bereits mit WLED ausgeliefert werden.
Meine ersten Smarthome-Anbindungen für LED Strips waren eher simpel gestrickt. Im Wohnbereich hatte ich die Fernbedienung eines billigen 0815 LED Controllers an den Harmony Hub (den ich mit ioBroker verknüpft habe) angelernt und irgendwann einen 2. Strip mit einem Controller verwendet, der die gleichen IR-Signale versteht. Im Büro verwendete ich ein Homematic „Relais“ HM-LC-Sw1-Ba-PCB zum schalten der 12V Versorgungsspannung vor dem Controller. – Fertig 😉
Dann kamen noch ein paar LEDs dazu und ich habe meine eigenen WLAN-Controller auf Basis von ESP32 selbst programmiert, „gebaut“ und das ganze „LEDpwm“ getauft (Wer gerne den Arduino Sketch haben möchte, kann mich gerne Kontaktieren).
WLED war mir zwar schon bekannt, aber mein Ehrgeiz etwas selbst zu fabrizieren hatte gewonnen. Meine ersten Programmier-Versuche mit adressierbaren LED Strips waren zwar vielversprechend, aber ich wollte zeitnah Ergebnisse und nicht wochenlang programmieren. Alles, was noch auf meiner Todo-Liste stand, ist im Projekt bereits enthalten: Seit einigen Tagen sind jetzt alle LED Controller mit WLED „betankt“ und in Betrieb…..
Vorteile von WLED (Highlights 😉)
- Keine zusätzliche App auf dem Smartphone
- KEIN Zwang für Cloud oder (Internet-)IFTTT
- Unterstützt (fast?) alle gängigen adressierbaren LED Strips und LED Matrix
- Unterstützt „normale“ RGB(W) Strips
- Unzählige Effekte für diejenigen die es mögen
- Frei definierbare Presets
- Ein gutes WEB-Interface
- Sync-Option untereinander *1 und „virtuelle LEDs“ (weiterer Controller als Slave)
- Zahlreiche Anbindungs-Möglichkeiten an Smarthome-Systeme wie Z.B. ioBroker oder Home Assistant. Dazu zählen u.A.: MQTT, HTTP API, JSON API
- Es können mehrere getrennte z.B. adressierbare Strips mit einem WLED Controller gesteuert werden (Jeder separate z.B. WS2811 Strip benötigt für die Datenleitung einen GPIO-Pin bei PWM Strips benötigt man je Farbe einen GPIO)
*1: Synchronisieren verschiedener Instanzen macht IMHO nur Sinn, wenn man bei normalen Strips ausschließlich das gleiche Produkt eines Herstellers verwendet, da die Farbtreue verschiedener Hersteller nicht immer gleich ist. Bei adressierbaren LED Strips ist mir bisher kein gravierender Farbunterschied aufgefallen. Sync zw. „adressierbar“ und „normal“ habe ich nicht getestet, weil es mir von vorneherein unsinnig erschienen ist.
Hardware allgemein
Ein Bündel mit Breadboard Jumper Käbelchen ist beim Basteln immer hilfreich
und passende Steckerchen für den gewünschten Strip sollte man sich auch beschaffen, wenn man die Drähte nicht direkt an den Strip anlöten möchte… 😉
Auf der WLED-Homepage sind unter https://kno.wled.ge/basics/compatible-led-strips/ auch schön aufbereitete Beschaltungsmöglichkeiten für PWM RGB(W) Strips Strips aufgezeigt. Bei den adressierbaren beschränkt sich DIESE eine Seite lediglich auf die Auflistung der Kompatiblen Chips.
Beschaltungen für 5V WS281x Chips und realtiv wenigen LEDs mit sehr kurzen Datenleitungen vom ESP zum Strip KÖNNEN EVENTUELL ohne zusätzliche Hardware betrieben werden. Hier habe ich aber ebenfalls keine wirklich zufriedenstellenden Ergebnisse erzielt. Für 12V und 24V COB Strips braucht man IMO auf jeden Fall einen sog. Logic Level Shifter. Hierauf gehe ich im Weiteren noch mal ein. Meine Ausführungen beziehen sich auf die beiden höheren Spannungen, können aber auch auf 5V übertragen werden.
Hardware: Mikrocontroller (immer benötigt)
Zuallererst benötigt Ihr einen passenden Mikrocontroller ESP8266 oder ESP32,
aufgrund der höheren Allgemein- und Prozessorleistung empfehle ich die ESP32-Modelle.
Grundsätzlich kann man (fast) alle am Markt verfügbaren ESP32 verwenden.
Wen die etwas angestaubte Micro USB Schnittstelle nicht stört, kann auf die Modelle von z.B. AZ-Delivery zurückgreifen, mit denen ich gute Erfahrungen gemacht habe (Links, jeweils zum gleichen Produkt als „Einkaufs-Alternative):
- https://www.amazon.de/gp/product/B074RG86SR
- https://www.az-delivery.de/products/esp32-developmentboard
- https://www.amazon.de/AZDelivery-ESP32-NodeMCU-gratis-eBook
(Verbessertes Modell, u.A. besserer WLAN Empfang) - https://www.az-delivery.de/products/esp-32-dev-kit-c-v4
(Verbessertes Modell, u.A. besserer WLAN Empfang) - USB-C (Anbieter: diymore) https://www.amazon.de/gp/product/B0D9BSKR16
Grundsätzlich gehen natürlich auch ESP32-C3 und ESP32-S2.
Für sehr lange adressierbare Strips oder größere Matrixfelder empfiehlt es sich eventuell ESP32-S3 Modelle mit zusätzlichem sog. PSRAM (je nach Anforderung: 4, 8, oder 16MB) zu verwenden, da jedes LED-Segment RAM verbraucht. Ein 5m langer WS2811 adressierbarer Strip mit 120 LED-Segmenten benötigt ca. 1080 Byte, 2x 5m hintereinander oder separat dann schon 2160 Byte usw., das Programm selbst will ja auch noch ein wenig RAM für andere Zwecke nutzen.
Zusätzliche Hardware: „normale“ PWM RGB(W) Strips
Einen sog. Buck Converter (auch Step-down Converter genannt) um die 12 / 24V auf die 5V für den ESP herunter zu regeln.
Hier habe ich ebenfalls verschiedene Modelle getestet (Max. Eingangsspannung beachten!!):
- https://www.az-delivery.de/products/lm2596s-dc-dc-step-down-modul-1
- https://www.amazon.de/gp/product/B0CW52N3PY
- https://www.amazon.de/Converter-MP1584EN-Einstellbar-LAOMAO-Netzteil
- https://www.amazon.de/dp/B0DGXLQYF4
Entweder einzelne (MOS)FET-Module mit Optokopplern die von den GPIO-Pins des ESP angesteuert werden und ihrerseits die 12 / 24V modulieren. Das ist einfacher und sicherer, als die auf der WLED-Seite dargestellte Beschaltung mit MOSFET’s und Vorwiderständen. Mit derartigen Modulen habe ich gute Erfahrungen gemacht, etwas Lötarbeit ist sowieso immer nötig:
oder (für diesen Teil) ohne Löten sog. „LED Amplifier“, die eigentlich nichts anderes sind als die FET-Module, halt in einem Gehäuse mit Klemmen. (Jumper Kabel für die Verbindung zum ESP auf der einen Seite abschneiden, absetzen und unterklemmen…)
Amazon-Suche: https://www.amazon.de/s?k=rgbw+verst%C3%A4rker
Zusätzliche Hardware: Adressierbare Strips
Mindestens einen (Erläuterung später) Buck Converter wie bei den PWM Strips.
Einen Level Shifter (auch Logic Level Converter genannt).
Es gehen natürlich auch welche mit weniger Kanälen, ich habe mich wieder für ein Produkt von AZ-Delivery mit einem TXS0108E Baustein und 8 Kanälen entschieden: https://www.amazon.de/gp/product/B07NNRS8FS bzw. https://www.az-delivery.de/products/logiklevel-wandler-3-3v-5v welches schnell genug ist und auch noch für andere Projekte verwenden werden kann. Weiterhin hat man dann noch Platz auf dem Level Shifter, falls man doch mehrere Strips mit einem Controller getrennt ansteuern möchte. (Siehe auch: https://kno.wled.ge/basics/compatible-hardware/)
Einen Widerstand mit ca. 100 Ohm (für jeden verwendeten Datenausgang, zw. Level Shifter und Dateneingang des Strip)
braucht man auf jeden Fall – wie auf den WLED-Seiten beschrieben.
Eine kleine Auswahl an Widerständen parat zu haben ist durchaus empfehlenswert. Ich habe mir irgendwann mal eine Box mit den gängigsten Werten bestellt, die braucht man als Bastler doch schon das eine oder andere Mal.
„Installation“ von WLED auf dem ESP32
Auf die ESP8266 Modelle gehe ich hier nicht ein, da sie für meine Projekte noch nie ausreichend waren und ich sowieso immer einen Vorrat an verschiedenen ESP32 Modellen im Schrank liegen habe 🤗
Es gibt verschiedene Wege, WLED auf den ESP32 zu bringen,
die ausführlich hier beschrieben sind: https://kno.wled.ge/basics/install-binary
- Selbst kompilieren mit der Arduino IDE und den passenden eingebundenen Bibliotheken
(Nix für Anfänger) - Flashen des ESP mit dem offiziellen „esptool.py“ ohne Online-Verbindung.
Erfordert, dass man genau seinen ESP32 kennt, um die richtige Firmware und den Bootloader von github herunter zu laden. - Der einfachste und schnellste Weg: Der WEB-Installer!
(Basierend auf dem Espressif WEB Tool)
Letzteren möchte ich hier kurz skizzieren, da er am wenigsten Aufwand bedeutet und auch für „Nicht-Programmierer“ recht gut durchführbar ist. Meine Erläuterungen beziehen sich auf Linux, Windows-User mögen sich bitte am o.g. Link entlang hangeln.
Der generelle Ablauf ist aber bei beiden Betriebssystemen ähnlich.
Derzeit geht das Ganze ausschließlich mit Chrome / Chromium, Opera(?) und Edge,
Firefox geht leider (noch?) nicht.
Wenn man den ESP32 an den Rechner ansteckt (am besten an einen USB 2 Port) findet man (unter den Vielen // „ls /dev/tty*“) je nach Modell ein serielles Gerät „/dev/ttyUSB0“ oder je nach verwendetem UART-Chip „/dev/ttyACM0“ (bzw. auch „/dev/ttyACM1“ bei S3-Modellen).
Bei den ESP32-S3 Modellen muss man ggf. nach dem Anstecken an den Rechner die „BOOT“ Taste drücken und gedrückt halten, währen man die „RST“ (Reset) Taste drückt.
Hier muss man dann evtl. im Späteren „/dev/ttyACM1“ als Schnittstelle auswählen.
Gilt für alleESP32:
„BOOT“ & „RST“ versetzt den ESP in den Upload-Modus…..
Nachdem man sichergestellt hat, dass man die richtige Schnittstelle kennt, ruft man die die URL https://install.wled.me/ auf und klickt auf „Install“ (Wir nehmen einfach die voreingestellte, neueste Release), wählt im jetzt geöffneten Popup die richtige Schnittstelle aus und gibt Feuer. Der Rest, einschließlich der ersten WLAN-Konfiguration ist Selbsterklärend.
Wer im WLAN-Dialog Hemmungen hat, sein Kennwort einzugeben, bricht an der Stelle ab und verbindet sich mit dem Access Point des neu geflashten WLED Controllers und gibt dort seine WLAN-Daten ein. Einfacher ist es jedoch über den WEB-Installer, weil man dann am Ende einen Link zum Controller hat, diesen aufrufen kann und sich nicht die über DHCP bezogene IP-Adresse heraussuchen muss.
Die Restliche Konfiguration macht man später, wenn alles verkabelt ist.
–> Fertig ist die „Installation“.
Zusammenbau „normale“ (PWM) LED Strips
Für diese Konstellation gibt es diverse Beschaltungs-Beispiele im WEB, deshalb versuche ich mich so kurz wie möglich zu fassen:
Nachdem man seine FET-Module (Siehe oben, meine Empfehlung) mit Jumper-Kabeln verlötet (siehe Foto weiter unten) oder den sog. LED Amplifier mit den Jumper-Kabeln verschraubt hat, kann man sich seine GPIO-Pins, die man verwenden möchte suchen und sie auf Stiftleiste des ESP an die richtige Position stecken.
(Man kann sie natürlich auch anlöten, wenn man aus Platzgründen einen ESP ohne die Stiftleiste betreiben möchte).
Ich nehme für die Kombination 1 Controller und 1 RGB Strip z.B. gerne die GPIO 21, 22, 23 und gemeinsame 0V (Pinout des jeweiligen ESP Modells beachten!!) Die 12 od. 24V vom Netzteil gehen 1x zum Strip und 1x (Zusätzlich zu 0V) an die dafür vorgesehenen Eingänge des Step-Down Converter (Foto bei den adressierbaren Strips). An die Ausgänge des Konverters lötet man wieder 2 Jumper-Kabel für den ESP. Die 0V an den Konvertern sind durchgängig, somit haben wir auch gleich den Potential-Ausgleich geschaffen.
An die 0V der einzelnen Klemmen auf der Ausgangs-Seite der MOSFET-Module (3 bei RGB od. 4 bei RGBW) legt man auch einen gemeinsamen OV (i.d.R. wird 0V moduliert und die Spannung nur durch geschleift):
Jetzt ist der Zeitpunkt, erstmals den Konverter zu bestromen und und die Ausgangsspannung einzustellen. Man sollte den ESP auf keinen Fall vorher mit dem Konverter verbinden, da man ihn sonst wahrscheinlich grillt.
Hierzu braucht’s zusätzlich ein Digital Multimeter;
Man regelt die Leerlaufspannung auf 5,1 -5,3V und trennt das Ganze wieder vom Netzteil.
Danach steckt man die 5V und 0V ebenfalls auf die dafür vorgesehenen Pins des Mikrocontrollers.
Das Ganze jetzt noch mal überprüfen und bestromen:
… nun geht man an die Konfiguration.
Zusammenbau adressierbare LED-Strips
Hinweis:
Es gibt auch Strips, bei denen die Daten 2-polig geführt werden.
Ich behandle hier nur Strips mit WS281x Chips und 1-poliger Datenleitung, da ich bzgl. der anderen Chip-Typen keine Erfahrung weitergeben kann.
Eine Eigenheit aller WS2811 Strips (Verschiedene Markennamen und Ausführungen),
die ich bisher ausprobiert habe, ist, dass der Logik-Pegel des Datensignals zwar mit 5V angegeben ist, aber mit eben diesen 5V keine vernünftiges Steuern möglich ist. In einigen Foren-Beiträgen beklagen sich die Verwender(innen) darüber.
U.A. beschreibt ein Verwender, dass seine Strips aus 2022 (od. 2023??) einwandfrei mit 5V Pegel funktionieren. Strips der gleichen Marke, die er Mitte / Ende 2024 nachgekauft hatte aber nicht mit den 5V laufen. Die diskutierten Lösungen waren nichts für mich:
Ich regle die High-Seite meiner Level Shifter mit einem Step-Down Converter auf 4V herunter und alles ist gut 😋
Z.B. einfach höhere Vorwiderstände in die Datenleitung einzuschleifen ist aus meiner Sicht nicht so schlau, da dies recht ungenau ist und man den so gebauten Controller nicht für eine andere Eingangsspannung verwenden kann. Den von mir bisher verwendeten
Buck Converter ist / war es egal, ob vorne 12 oder 24V rein kommen; Hinten kam immer die eingestellte Spannung raus. (Man sollte sicherheitshalber beim Bauen am besten nochmal den / die Konverter ausgangsseitig Messen…)
In meinem Testaufbau habe ich nur EINEN Level Shifter verwendet, ein ESP32 läuft meistens auch mit 4V.
Nachteil:
Wenn man den ESP am Netzteil hängen hat und einen PC an den USB-Port des ESP steckt, wird die Ausgangs-Spannung für den Level-Shifter auf die 5V des PC’s angehoben und man kann den Strip erst wieder vernünftig Ansteurn, wenn man den PC wieder absteckt.
In meinem „Schaltplan“ sind es 2 Level Shifter, das macht kostenmässig den Kohl auch nicht fetter als er eh schon ist….
Da dieser Beitrag schon deutlich länger ist, als eigentlich vorgesehen,
lasse ich für diesen Part jetzt Bilder sprechen (wenn man’s ordentlich baut, sind die Kabel-Farben eindeutiger 😜):
So sieht mein Testaufbau für diesen Beitrag aus, mit 3 verschiedenen FCOB Strips von 2 verschiedenen Herstellern. Die Strips sind alle 3m lang, unterscheiden sich aber in der Anzahl der LEDs pro Meter und in der Anzahl der Segmente.
Im Prinzip kann man festhalten:
- Je mehr Segmente, um so „schöner“ sehen Effekte aus, jeder WS281x Chip steuert ein Segment
- Je mehr LEDs/m um so weniger sieht man die Abstände zw. den LEDs, das bedingt aber auch einen höheren Strombedarf
Der Aufbau mit verschiedenen Strips funktioniert technisch, man muss nur die passende Anzahl der LEDs in der Konfiguration eintragen. Effekte sehen dann aber nicht so doll aus, weil die Länge der einzelnen Segmente ja verschieden ist. Solange man sich auf die Grundfunktionen „Eine Farbe für alles und nur Effekte, die auch bei PWM Strips gehen“ fällte es nicht so extrem ins Auge – Aber man sieht es…..
Strom:
Dieser Testaufbau braucht (von WLED berechnet / geschätzt) maximal rund 7A(!) bei 24V Spannung. (Maximal bedeutet: Volle Helligkeit, alle Farben auf Maixmal-Wert)
Man sollte also eine einfache Faustregel beachten:
„Je mehr Dampf, um so dicker die Zuleitung.“
Zu dünne Zuleitungen erhitzen sich stärker –> Brandgefahr!
Deshalb habe ich z.B. den 1. Strip direkt mit dem Stecker vom Netzteil verbunden. Wie man auf dem Foto sieht, haben die teureren Strips auf der Eingangsseite noch 2 Drähte mittels derer man bei langen Installationen mit Verkettung mehrerer Strips noch zusätzliche Netzteile zur Zwischenspeisung verwenden kann. Die Leiterbahnen der Strips halten auch nicht unendlich großen Lasten aus –> Wieder Brandgefahr!
…. und wenn eine Leiterbahn durchbrennt, muss man entweder den kompletten Strip tauschen, oder an der richtigen Stelle mit z.B. einem abgeschnittenem Reststück den Strip reparieren, was ggf. nicht so schön ausfällt und bei COB-Stris auch nicht „easy peasy“ sein muss.
Zu schwach / klein ausgelegte Netzteile:
Im besten Fall bricht die Spannung ein wenn man zu Hell macht und die / der Strip(s) fangen an zu blitzen bis man den Strom weg nimmt. Eine „Recovery“ ist dann entweder dadurch gegeben, dass man eine Neustart-Einstellung von WLED hat, die eine geringe Helligkeit hat, oder man zieht den Strip vom Controller ab und stellt die Helligkeit dann wieder herunter. Im schlechtesten Fall wird das Netzteil brutal heiß und fängt an zu Kokeln, was wiederum bedeutet: Brandgefahr!
Konfiguration
Da der Beitrag schon ziemlich viel Text hat, möchte ich nicht tiefer in die Konfiguration einsteigen. Viele Teil-Aspekte der WLED-Konfiguration sind selbsterklärend, für die schwierigeren Themen verweise ich auf die offizielle Seite und meine weiterführenden Links.
Fehler die bei adressierbaren Strips auftreten können
Auf Vertauschungen von +/- gehen wir mal nicht ein 😜
Die Strips machen „blödes Zeug“ blitzen, flackern, die Segmente leuchten in unkontrolliert in verschiedenen Farben auf:
Vorwiderstand vergessen oder zu klein / groß dimensioniert. Spannung auf der Datenleitung zu niedrig / zu hoch. Spannung bricht ein (siehe: Netzteil zu schwach)
Segmente am Ende des Strip gehen nicht an oder aus:
Zu wenige LEDs konfiguriert….
Die häufigsten Fehler: https://kno.wled.ge/basics/top5_mistakes/
Gehäuse
Jetzt fehlt euch eigentlich nur noch ein passendes Gehäuse.
Ich habe mit zu Beginn meiner ESP32-Basteleien einen Satz einfache Plastik-Gehäuse bei Amazon bestellt und die einzelnen komponenten mit allerlei Kunststoffstreifen und Panzer-Band gegeneinander isoliert. Das funktioniert, ist aber nicht wirklich professionell. Mittlerweile drucke ich mir meine Gehäuse auf dem 3D-Drucker selbst. Meine Kiste für PWM LED Strips sieht momentan noch ziemlich klobig aus und bedarf noch einiger Nachbesserung. Auch z.B. das auf den Fotos zu sehende Experimetier-Böckchen für ESP32 ist eine Eigen-Kreation (mittlerweile in verschiedenen Ausführungen). Fall jemand Interesse daran hat, oder auch zu Verbesserung beitragen möchte:
Meldet euch gerne über die Facebook-Seite des Blog oder per Mail bei mir.
Ich verwende für meine 3D-Entwürfe FreeCAD, ein weiteres tolles open Source Produkt….
Weiterführende Links
Die WLED-Homepage:
https://kno.wled.ge
WLED auf github:
https://github.com/Aircoookie/WLED (dort findet man auch z.B. die aktuellsten Binaries)
https://github.com/Aircoookie/WLED/wiki/Wiring-Pro-tips
WLED und Home Assistant: https://www.home-assistant.io/integrations/wled/
Weitere Seiten:
https://wled-faq.github.io
https://wled-calculator.github.io
…. es gibt noch einiges mehr über WLED zu entdecken, unter anderem eine Community auf Discord (Link im Footer der WLED-Homepage)
Open Source und Unterstützung
Das Brain hinter WLED heißt Christian Schwinne, Alias „Aircoookie“ (https://github.com/Aircoookie). Damit ein solches Projekt weiter voran getrieben und lebendig gehalten werden kann, braucht es Unterstützung in welcher Form auch immer:
- Man kann z.B. dem Entwickler ein Sponsoring zukommen lassen:
https://paypal.me/aircoookie/ - Man kann (wie ich, ebenfalls unentgeltlich) das Projekt verbreiten und andere an die Thematik heranführen, was ggf. wieder einen Sponsor hervor bringen kann.
….. oder auch Unternehmen darauf aufmerksam macht, die ihrerseits ihre Produkte damit ausstatten und entsprechend großzügig sponsern