DIY Weihnachtsdeko mit ESP32 WLED und LED Strips
Weihnachten steht vor der Tür. Obwohl es schon seit 2 Monaten das ganze gute Zeug, wie Lebkuchen und Spekulatius gibt, war noch nie so wenig Weihnachtsstimmung wie in diesem Jahr hab ich das Gefühl.
Zeit, da was zu machen. Mit einem Mini DIY Projekt, denn das dauert tatsächlich nicht all zu lang. Wir basteln uns heute ein bischen LED-Deko aus einem LED Strip (WS2812 z.b.) und einem ESP32.
Im Netzt gibt es ein sehr tolles Projekt Namens WLED, was so gut gemacht ist, das man fast garnix mehr selber coden muss.
Materialliste
- ESP32 oder ESP8266
- Rechner zum flashen + Micro USB Kabel
- LED Strip (Ich hab den APA102)
- 3-4 Jumper Kabel
ESP32 mit dem Rechner verbinden
Das ist tatsächlich der schwierigste Schritt, wenn man vorher noch nix oder lang nix mehr mit den Dingern gemacht hat. Nutz ich Arduino IDE? Oder Plattform IO?
Keine Sorge, brauchen wir heute alles nicht. Nur den Treiber.
Ich schließe also meinen ESP32 z.b. von <$>Amazon</$> mit dem Micro USB Kabel an den Rechner an. Hier gibt es die erste Fehlerquelle: Stellt sicher, dass euer Kabel auch die Pins für Daten hat und nicht nur zum Laden gut ist.
Jetzt öffne ich den Gerätemanager unter Windows und schaue unter Anschlüsse ob etwas erkannt wurde. Mit etwas Glück habt ihr die Treiber schon drauf. Sonst wird vermutlich zumindest der Chip angezeigt, aber eine Meldung, dass der Treiber nicht automatisch installiert werden konnte.
Treiber finden & installieren
Mein ESP32 Board nutzt den CP2102 – Treiber, den wir von Silicone Labs herunter laden können.
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
Ich habe einfach den Universal Windows Driver genommen. Im Gerätemanager können wir mit einem rechts-klick auf unser Gerät klicken und auf Treiber aktualisieren gehen. Dann wählen wir „Treiber auf dem Gerät suchen“ aus und navigieren zum Ordner, wo wir den eben heruntergeladenen Ordner finden. Hier reicht es die oberste Ebene zu nehmen. Vergesst nicht, die Zip-Datei auch wirklich zu entpacken. Zip-Archive werden nicht gefressen. Wenn das geklappt hat, sollte nun der COM X (Bei mir COM3) angezeigt werden.
Ggf. braucht euer Board andere Treiber, die man aber relativ ähnlich installieren kann und normalerweise auch durch eine kurze Google-Suche findet.
ESP Flash Tool herunterladen
Es gibt mehrere Wege um WLED auf euer Board zu flashen. Der m.m.n. einfachste Weg ist das Tool, das WLED selbst bereitstellt. Der ESP WLED Flasher, den ihr <hier/> bzw. <hier/> direkt bekommt.
WLED Image herunterladen
Fehlt noch das eigentliche Image. Wir können einfach ein vorkompilierten Build von <hier/> nehmen. Ich hab die einfache ESP32 Version genommen.
Nun können wir das WLED Flasher Tool starten (ESP-flasher.exe, was bei mir zu einer kleinen Sicherheitsmeldung führte. Unter Weitere Informationen können wir es dann Trotzdem Ausführen.
Hier wählen wir nun unseren Serial Port (Bei mir immernoch COM3) und suchen das .bin File von WLED.
Jetzt klicken wir auf Flash ESP und sehen in der Console den Fortschritt.
LED Strip verbinden
Der letzte Schritt ist dann den LED Strip mit dem ESP32 zu verbinden. Je nachdem, welchen Strip ihr habt, gibt es hier kleine Unterschiede, aber keine Sorge, das ist nicht schlimm. Man muss nur drauf achten, dass ihr den Strip an der richtigen Seite anschließt, dass der Pfeil von den Anschlüssen weg zeigt. Der Gleichstrom fließt nur in eine Richtung (haha) und LEDs sind Halbleiter.
Mein Strip hat 144 LEDs. Ich Verbinde 5V and 5V des ESP. Bei mehr Länge bzw. mehr LEDs ist es ggf. ratsam, die Spannungsversorgung des Strips über ein extra Netzteil (z.B: ein <$>5V Raspberry PI Netzteil<$>) umzusetzen. Mein Strip hat dafür sogar zwei extra Kabel an GND und 5V.
GND (Ground) kommt an Ground. D kommt immer an G16 beim ESP32. Beim ESP8266 ist es glaube ich D4. Ich hab noch einen Clock-Pin den ich an G16 anschließe. Ihr könnt gleich aber in der WLED Software die PIN-Belegung ändern.
Nun sollte es schon ein bisschen was Leuchten (bei mir waren es die ersten 3 LEDs).
Mit WLED AP Verbinden
Der ESP32 macht jetzt einen WLAN Access Point namens WLED AP auf. Das Kennwort ist wled1234. Wenn wir uns verbinden, werden wir direkt auf das Captive Portal weitergeleitet. Hier können wir den ESP32 nun auch ins Heimnetz verbinden.
WLED hat auch eine Mobile App, die ich mir installiert hab, die automatisiert nach existierenden WLED-ESPs im Heimnetz sucht und diese dann entspannt steuerbar macht. Es gibt sogar eine Home Assistant Integration, was überaus praktisch ist. Man kann auch einfach über wled-xyz.local im Browser auf das Web-Interface zugreifen. Falls ihr eure URL vorher nicht konfiguriert habt, schaut einfach im Router-Interface nach der neuen IP oder nutzt das Smartphone per APP für die nächsten Schritte.
LED Strip konfigurieren
Ich gehe also zunächst in die Config (WebApp und Mobile App sehen sehr gleich aus) und wechsle in die LED Preferences:
Hier kann ich den Typ meines LED-Strips ändern, die art wie die Farben angesteuert werden (Bei mir GRB statt RGB) die Anzahl der LEDs eingeben (144) – wenn ihr kleinere Werte nehmt, werden halt auch nur diese Menge LEDs gesteuert. Und natürlich zur Not die GPIOs updaten, falls ihr die falschen Pins verbunden habt.
Man kann hier noch jede Menge andere Dinge rumspielen, hab ich aber nicht gemacht.
Play & Have Fun
Nun können wir das fertige Gerät halbwegs stabil in ein 3D-Druck housing stecken und an den Weihnachtsbaum hängen. In der App gibt es schon jede Menge vorprogrammierte Effekte. Man kann sogar Playlists erstellen und anscheinend gibt es sogar einen Build mit Mikrophon, da muss ich mich aber noch einlesen. Also erstmal bis dahin! Enjoy!
Home Assistant
Home Assistant entdeck den WLED ESP sogar automatisch, wie cool ist das denn!