Mein Lieblings-ESP-Controller für WLED-Projekte

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

So, heute gibts endlich mal wieder einen Schritt-für-Schritt-Guide als Blogpost – ganz ohne Video. Konkret in Form meines absoluten Lieblings-ESP-Controller namens E-ETH-POE (oder so ähnlich) mit PoE-Funktion, um WLED-Projekte auf ein ganz neues Level zu heben.

Ein Video zum Thema wird voraussichtlich folgen, aber einige hatten sich mal wieder einen „normalen“ Blogartikel gewünscht – also viel Spaß beim Lesen!

ESP-Controller auswählen

Voraussetzungen waren ein möglichst stabiler Betrieb (insbesondere auch ein problemfreier Neustart nach einem Stromausfall), PoE-Support und möglichst viele GPIO, um LEDs und Taster anschließen zu können.

Die Wahl fällt auf den E-ETH-POE aka Internet Module HR861153C aka XY_Internet_POE aka Lilygo POE oder wie er sonst noch im Netz heisst. Günstigste Bezugsquelle ist der Shop von lilygo, hier heisst der ESP-Controller T-Internet-POE H438 (externer Link) und kostet derzeitig 18,96 USD. Als LILYGO® TTGO T-Internet-POE ESP32-WROOM LAN8720A wird er hier übrigens auch noch aufgeführt. Viele Namen führen zum Controller – oder ähnlich. Echt etwas verwirrend, aber einfach kann ja jeder…

Für vier Controller habe ich zuzüglich 11 USD Versandkosten insgesamt 86,84 USB gezahlt. Umgerechnet etwas mehr als 80 Euro und damit knapp 20 Euro pro Stück.

Das Pinout des T-Internet-POE sieht dabei wie folgt aus:

Bei meinen Tests konnten dabei insgesamt 8 Pins als In- und Output genutzt werden – also können daran adressierbare LED-Bänder und Taster angeschlossen werden.

Die dazu nutzbaren Pins lauten: IO16, IO32, IO33, IO12, IO04, IO15, IO02 und IO14

Die darüberliegenden vier Pins (IO36, IO39, IO34 und IO35) werden mit R/O ausgewiesen, was bedeutet, dass wie lediglich als Input-Pins genutzt werden können. Diese Pins sind oftmals speziell für interene Funktionen des Chips reserviert, bspw. für die SPI-Flash-Kommunikation, Debugging oder Boot-Modi. Testweise habe ich einmal eine Pushbutton auf den IO34 gelegt, welcher direkt nach dem Reboot „eskaliert“ ist – also laufend ausgelöst hat. Also am besten lässt man diese Pins ganz in Ruhe. Wer hier mehr Infos hat, ist gerne eingeladen die Kommentarfunktion zu nutzen.

Der verfügbare Type-C USB Anschluss lässt sich übrigens nur zur alternativen Stromversorgung nutzen, sofern dieser nicht über PoE per RJ45-Ethernetport erfolgen soll. Zum Flashen des ESP_Controllers wird ein separater Adapter benötigt, welcher an den Controller angestöpselt wird. Auf der lilygo-Seite wieder dieser als Downloader Expansion Board H439 ausgewiesen und kostet 2,00 USD.

ESP-Controller vorbereiten

Damit der ESP-Controller mit dem Downloader-Board geflasht werden kann, müssen erstmal die mitgelieferten Pin-Header aufgelötet werden.

Mit dem richtigen Equipment in Form einer Lötstation und etwas Übung gelingt dies in wenigen Minuten. Ich verwende dazu bereits seit Längerem die YIHUA 926LED-IV 60W Loetstation (Affiliate-Link):

Wichtig dabei ist, dass der 6-fach-Pinheader für das Download-Board so angelötet wird, dass die Stiftleiste von der UNTERSEITE des ESP-Controllers zugänglich ist. Also werden die Lötpunkte von „oben“ gesetzt:

Das hatte ich natürlich in der Eile vercheckt und dann klappt das Flashen natürlich nicht, da die Pinbelegung verdreht ist. ABER: Der Controller hat es überlebt. Steckleiste also wieder „entlötet“ und richtig herum angelötet – funktioniert!

Wo wir schon dabei sind, wird noch die Doppelreihen-Steckleiste angelöstet, um den Zugang der GPIO-Pins später möglichst einfach zu ermöglichen. Und wie erwähnt, erfolgt dies von der anderen Seite – um Vergleich zur Steckleiste des Download-Boards:

Als letzten vorbereitenden Schritt wird jetzt noch das Downloader-Board auf die gerade angelötete Steckleiste gesteckt und per USB-Kabel mit dem PC verbunden.

Das Downloader-Board hat dafür sowohl eine Schnittstelle für Micro-USB als auch USB-C integriert. Egal welche Schnittstelle gewählt wird, sollte darauf geachtet werden ein hochwertiges Anschlusskabel zu nutzen, welche alle Adern durchkontaktiert. Denn manche Kabel leiten nur den Strom durch, jedoch keine Daten – und dann klappt es nicht.

ESP-Controller flashen

Zum Flashen wird die Seite WLED Online Flasher wled-install.github.io (externer Link) aufgerufen. Am besten Chrome nutzen, da es mit anderen Browsern zu Problemen kommen kann.

Jetzt das Dropdown „Board Typ / SW Version“ anklicken und in der Liste den passenden Eintrag wählen.

Im Fall des T-Internet-POE ESP-Controllers wird die „EXPERIMENTAL„-Version in der Version ESP32 (4MB Flash, Ethernet) verwendet:

EXPERIMENTAL deshalb, da diese Version bei mir in Kombination mit der Fritzbox problemlos läuft. Andere Versionen haben in der Kombination ESP32-Controller und neueres Fritz-OS-Betriebssystem den Bug, dass der ESP-Controller minütlich neustartet. Die technischen Hintergründe und meinen Leidensweg vor ziemlich genau einem Jahr, bei dem alle meine ESP32-WLED-Controller nach einem automatischen nächtlichesn Fritzbox-Update in der Dauer-Boot-Schleife steckengeblieben sind, möchte ich euch an dieser Stelle aber ersparen.

Long story short: Mit dem hier genutzten EXPERIMENTAL-Image funktioniert es bei mir seit knapp einem Jahr seitdem ohne jegliches Problem.

Ist die korrekten Version ausgewählt, wird Installieren angeklickt. Jetzt sollte im Popup der ESP-Controller bzw. dessen Downloader-Board mit dem Eintrag USB Serial (cu.usbserial-1130) auftauchen, sofern dieses korrekt am PC angeschlossen ist. Beim Aus- bzw. Einstecken des Downloader-Boards sollte der Eintrag in Echtzeit aus- und eingeblendet werden. Nach der Auswahl auf Verbinden klicken:

Nun sollte ein weitere Popup erscheinen. Hier auf INSTALL WLED (ESP32, 4MB, ETHERNET) auswählen:

In direkten Anschluss sollte dieses Fenster auftauchen:

Nun muss der ESP-Controller noch in den Flash-Modus versetzen werden. Dazu hat man knapp ein bis zwei Minuten Zeit, bevor der Vorgang mit einem Fehler abbricht.

Wie das „offizielle“ Vorgehen dazu aussieht, weiss ich nicht. Durch etwas Herumprobieren bin ich jedoch so zum Ziel gekommen:

Zuerst drückt man einmal kurz den linken Button mit der Aufschrift BOT (mega klein geschrieben) auf dem Downloader Board:

Direkt danach wird der linke Button mit der Aufschrift BOT auf dem ESP-Controller kurz gedrückt:

Jetzt ein paar Sekunden warten ab geht die Flashing-Reise…

UPDATE: Hin und wieder musste ich das gerade beschriebene Tastendrücken wiederholen, bis es zum nachfolgenden Flashvorgang kam.

Manchmal hat das bei mir nicht auf Anhieb geklappt. Nach ein paar Mal drücken der oben genannten Knöpfe lief es dann aber immer irgendwann. Wer hierzu Hintergründe hat bzw. den „Fall“ klären kann, wie man das „richtig“ macht, bitte einen Kommentar hinterlassen, danke!

Im nächsten Schritt Configure Wi-Fi lässt sich das WLAN einrichten. Grundsätzlich könnte man diesen Schritt überspringen, ich würde ihn euch aber dennoch empfehlen, da die weitere Konfiguration dann ein Stückchen einfacher von der Hand geht. Also entweder das gefundene WLAN-Netz aus der Dropdown-Liste auswählen oder selbst eintragen – inkl. Passwort und mit CONNECT verbinden.

Nach einigen Sekunden sollte nachfolgendes Fenster angezeigt werden. Mit einem Druck auf VISIT DEVICE wird man direkt zum Userinterface des nun fertig geflashten WLED-Controllers weitergeleitet:

Jetzt wird ein neuer Tab geöffnet mit der per DHCP vergebenen IP-Adresse. In diesem Fall http://192.168.3.231

Mein Chrome-Browser war an dem Tag irgendwie komisch drauf und wollte die Seite ums Verrecken nicht öffnen. Adresse kurz in Safari reingeschmissen und es lief sofort. Sehr komisch. Wenns also nicht funktioniert, kann man an dieser Stelle einfach einen anderen Browser ausprobieren…

WLED Ersteinrichtung

Die Hauptseite sollte dann in etwa so aussehen. Wenn der PC Mode ausgewählt ist (setzt eine höhere Auflösung voraus), werden alle Optionen angezeigt:

Ansonsten kann man zwischen verschiedenen Tabs durchwechseln.

Erstmal aktivieren wir die LAN-Option über CONFIG -> WiFi Setup -> Ethernet Type -> QuinLED-Dig-Octa & E-ETH-POE und sichern das Ganze mit Save & Connect.

Nach dem Neustart sollte im selben Menüpunkt die zusätzlich vergebene LAN-IP-Adresse angezeigt werden. Diese lässt sich mit dieser Version von WLED leider nicht stativ vergeben – zumindest wüsste ich nicht, wie das geht…

In diesem Fall wurde die IP-Adresse 192.168.3.231 vergeben. BEi dieser Gelegenheit habe ich gleich auch noch den Friendly-Name auf wled-wohnb.local angepasst (Eintrag darüber, sodass der Controller im Netzwerk unabhängig von der vergebenen IP-Adresse immer mit diesem Namen erreichbar ist. Kann man machen, muss man aber nicht.

Jetzt werden der gleich anzuschließende LED-Stripe konfiguriert. In diesem Fall handelt es sich um das Modell SK6812 RGBWW 5m mit 5V (Affiliate-Link). Das Stripe gibt es bei Aliexpress teilweise ein gutes Stück günstiger. Bisher habe ich hier immer bei BTF-Lighting bestellt und musste ca. ein bis zwei Wochen auf den Versand warten.

Das LED-Stripe wird gewöhnlich fertig konfektioniert geliefert:

Am Stecker gibt es drei Anschlüsse:

Rot für 5+
Grün für Daten
Weiss für GND bzw. „Minus“

Weiterhin zwei weitere dickere Aderleitungen (rot und weiss), an dem man den Stripe primär mit Strom versorgen sollte, wenn der Stripe nicht gekürzt wird. Denn in diesem Fall fließen höhere Ströme – insbesondere bei der 5V-Variante des Stripe. Ich würde euch aber nur für Tests empfehlen dieses Setup zu nutzen und für „produktive Installationen“ immer selbst die Pins an eigene Leitungen zu löten. Ich nehme dazu meist Aderleitungen mit 1mm2.

Wer das Stripe kürzen möchte, kann die vorgesehenen Trennstellen an den Kontaktstellen nutzen. Wichtig ist in diesem Kontext auch die Richtung, in der die Daten „fließen“. Der weisse Pfeil gibt dabei die Richtung vor, die nicht änderbar ist.

Aber bevor wir den Stripe anschließen erstmal weiter mit der Konfiguration in WLED:

Unter CONFIG -> LED Preferences wird nun der korrekte LED-Typ und die Anzahl der gewünschten LEDs hinterlegt. In diesem Fall eben SK6812/WS2814 RGBW. Bei Lenght wird die gewünschte LED-Zahl – hier 30 – eingetragen und bei GPIO 14. Dazu kommen wir gleich noch.

Die LED-Anzahl kann später auch noch einfach angepasst werden.

Hier nun das Anschlussschema, um die LEDs mit dem ESP-Controller zu verheiraten:

Cool an diesem Konzept finde ich insbesondere, dass der ESP-Controller direkt per PoE mit Strom versorgt wird – und man diesen dadurch auch einfach Neustarten kann, sofern er mal hängen sollte. Das realisiere ich in meinem Fall mit UniFi-Swichtes, bei denen ich jeden Port einzeln ein- bzw. ausschalten kann.

Der LED-Stripe wird separat mit einem eigenen Netzteil versorgt – hier ein einfaches Meanwell 40W 5V-Netzteil (Affiliate-Link), welches man bei Nichtnutzung auch komplett stromlos schalten kann. Der ESP-Controller ist dann weiterhin erreichbar – eben über PoE. Dadurch gewinnt man insgesamt an Flexibilität und es lassen sich bspw. auch Stripes mit 12V oder 24V betreiben – ein passendes Netzteil vorausgesetzt. Wichtig dabei ist, dass die GND-Leitung von ESP-Controller, LED-Stripe und Netzteil „durchverbunden“ wird, um Potenzialunterschiede zwischen den Komponenten zu verhindern. Das führt sonst im schlimmsten Fall zu erhöhten Spannungen und einen Defekt der Bauteile.

Die grüne Datenleitung wird dann noch an IO14 angeschlossen (siehe Bild oben) und eben mit dem LED-Stripe.

So sieht das dann auf Seite der ESP32-Controllers aus:

Genutzt werden hier „stink normale“ Jumper Wire (Affiliate-Link) und zum Durchverhinden Wago-Klemmen (Affiliate-Link).

Jetzt sollten sich die LEDs ansprechbar sein und über das WLED-Menü mit den gewünschten Effekten „bespielt“ werden können:

Hier lassen sich verschiedene Farben, Effekte, Geschwindigkeiten und Intensitäten „mixen“, wie man gerne möchte. Die Möglichkeiten sind fast unbegrenzt.

Auch lassen sich die physischen Bereiche des/der LED-Stripes in virtuelle Segmente aufteilen, um bspw. verschiedene Gruppen mit unterschiedlichen Farben zu definieren.

Hier kann man wirklich viel mit rumspielen und die gewünschten Settings als Presets abspeichern.

Und tada – es werde Licht:

Nicht wundern, hier habe ich einen anderen Datenpin des WLED-Controllers und zudem ein weisses Käbelchen genutzt…

zu den Presets noch ein Tipp zum Schluss: Ich würde empfehlen ein „Boot“-Preset zu erstellen, welches standardmäßig bei einem Neustart (bspw. nach Stromausfall) geladen wird. Ich nutze dazu meist einen „Alles Schwarz“-Zustand, aber das kann natürlich jeder so machen, wie er möchte. Also erstmal auswählen, welche Farben, Effekte etc. man möchte und rechts auf + PRESET klicken. Als Namen bspw. Boot eintragen, Overwrite with state anhaken und Save to ID auf 1 stellen. Auf Save klicken.

Damit dieses Preset beim Neustart gezogen wird, jetzt noch auf Config -> LED Prefenences -> Apply preset 1 at boot auswählen und mit Save speichern.

Aus meinem täglichen Leben

Ich habe lange den WT-ETH01-Controller für WLED-Projekte genutzt, wenn ich eine kabelbasierte Netzwerkverbindung haben wollte. Der ETH01 ist aber manchmal zickig gewesen und insbesondere nach Stromausfällen nicht korrekte gestartet. Oftmals lief er dann schon, aber die Ethernet-Verbindung funktionierte nicht. Das konnte man in einem solchen Fall auch daran erkennen, dass die LEDs beim RJ45-Port nicht geblinkt haben. Ein kurzes Stromlosschalten und es funktionierte dann wieder. Nervig. Mit dem hier genutzten T-Internet-POE Board ist mir das bisher noch nie passiert – und das Coole ist jetzt eben auch die integrierte PoE-Funktion, welche ich wirklich nicht mehr missen möchte.

Hinzu kommt, dass beim WT-ETH01 nur – ich glaube – 5 Pins sinnvoll genutzt werden konnten. Denn manche Pins waren „verschandelt“, sodass es im laufenden Betrieb zwar mit angeschlossenem LED-Band funktioniert, bei einem Neustart aber alles hängenblieb. Auch das ist beim hier verwendeten T-Internet-POE Board kein Problem und es lassen sich 8 Pins nutzen.

One more thing

Achso, ein selbst gedrucktes 3D-Gehäuse darf für den ESP-Controller natürlich nicht fehlen:

LilyGoPOE 3D-Case (89 Downloads )

Ein wirkliche schickes Design. Ich finde die Quelle einfach nicht mehr – jedenfalls habe ich das Cover auch nachgearbeitet, um einen zusätzlichen Aluminium Kühlkörper 15x15mm (Affiliate-Link) mittels thermischem Klebeband (Affiliate-Link) auf den Controller schnallen zu können, welcher die Temperatur ein gutes Stück senkt, was positiv für eine lange Lebensdauer sein sollte.

Wer weiss, wer der „Urheber“ des obigen Designs ist, gerne her mit der Info. Ich verlinke umgehend…

Ich verwende übrigens für solche Zwecke immer PETG Filament (Affiliate-LInk), welches im Vergleich zu PLA höhere Temperaturen aushält, ohne zu verformen. Mehr Infos und Tipps zum 3D-Druck findet ihr übrigens in diesen Inhalten hier im Blog: meintechblog – 3d-druck

Welches Board nutzt ihr am liebsten für eure ESP-Projekte? Lasst es mich gerne per Kommentar wissen…

6 Kommentare
  1. Hi Jörg,
    coole Idee mit dem POE-fähigen ESP. Vielen Dank für den Tipp!

    Ich hab‘ erst gestern meine WLEDs von mqtt/json auf UDP umgestellt – aber soweit ich weiss machst Du dass ja schon immer so 😉

    Viele Grüße und frohes basteln
    Stef

    1. Hi Stef,

      ich steuere WLED mittlerweile nur noch per HTTP-Requests an, da es bei UDP manchmal zu Problemen kam. Hatte ich in Erinnerung, dass ich da einige Bugs hatte beim Wechsel zwischen Effekten – manche Effekt-IDs konnte ich über UDP irgendwie nicht ansprechen. War völlig frustrierend. Per HTTP klappte das dann auf Anhieb.

      Werde bald aber auch mal die Integration in HomeAssistant ausprobieren und evtl. diesen „Umweg“ gehen – mal sehen…

      Viele Grüße
      Jörg

  2. Du solltest bei „Neopixel“ oder WS2812 Strips auf die Logiclevel achten
    Wenn man die Data Line direkt von einem 3,3V Controller treibt, ist das eher grenzwertig und fehleranfaellig, die hat 5 V TTL Pegel
    siehe: https://learn.adafruit.com/adafruit-neopixel-uberguide/logic-level

    eine Abhilfe ist ein nachgeschalteter Booster:
    https://shop.allnetchina.cn/products/quinled-data-booster

    1. Hi Günter!

      Danke für deinen Tipp! Hatte da tatsächlich bereits das Problem bei längeren Zuleitungen zwischen ESP-Controller und LED-Stripe. Da kam dann einfach kein vernünftiges Datensignal mehr an und die LEDs blieben aus – vermutlich zu hoher Spannungsdrop. Mit einer „Opfer-LED“ direkt beim ESP-Controller lief es dann aber immer – auch langfristig – ohne Probleme.

      Aber gut zu wissen, dass es da eine einfache und günstige Lösung gibt – für den Fall der Fälle. 🙏

      Viele Grüße
      Jörg

  3. Hi Jörg,
    welches Modell (auch ohne POE) empfiehlst du denn, wenn man um den Lötkolben einen großen Bogen macht!? 🙂
    Ansonsten sehr detailreich Beschreibung, klasse.

  4. Moin, für Adressierbare LED’s gibt es spezielle Controller. Sie so an einen ESP zu setzen ist nur für Testzwecke sinnvoll.

    Zum einen sollten die Spannungen nicht vom ESP abgenommen werden.
    Hast du nicht gemacht aber machen viele.
    Hier ist aber noch anzumerken das die Zuleitung nicht abgesichert ist.

    Der Datenpin ist „falsch“ angeschlossen. Hier gibt es eine gute Doku von WLED direkt meine ich. Hier bitte auf die Spannung und auf die Stabilisierung achten.
    (Widerstand, Kondensator und oder Logic Level Shifter)
    Besonders die WS2814 sind das sehr sensibel.

    POE Varianten sind leider selten. Ich wüsste da nur die etwas teure Quinled Version.

    Wlan gibt es unzählige ESP32 Controller die man gut verwenden kann.

    Wenn man ein Mikrofon verwenden will sollte man ein Digitales nehmen die Analogen haben oft Probleme.

    Hier noch ein Tip für die Langlebigkeit. Brightness factor runter stellen. Die Strips bringen oftmals zwischen ca 85 und 100 nicht mehr so viel Lichtleistung. Der Verbrauch und die Hitze steigt aber stark an. Hier bisschen probieren und den Wert anpassen. Einen Strip lange auf 100% zu betreiben ist auch nicht gerade gut. Meistens benötigt man dafür eine Kühlung was viele vernachlässigen.

    Nach einiger Strecke ist ein zusätzliches Einspeisen sehr sinnvoll. Je geringer die Spannung desto öfter muss man das tun.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen