Neuigkeiten:

Privates MODX und LINUX BLOG, User Registrierung ist deaktiviert! Fragen oder Tipps? Bitte per Matrix: @jolichter:tchncs.de

Hauptmenü

WLED ESP8266-Arduino mit LED-Strips

Begonnen von Jo, 2021-05-21 | 21:17:33

« vorheriges - nächstes »

Jo

Hier mein Versuchsaufbau mit einem ESP8266-Arduino und LED-Strips WS2812B (5V) und WS2815 (12V)

WLED (WLED WIKI) ist eine geniale Open Source Software für ESP Controller um z.B. WSxxx oder SKxxx LEDs zu steuern (LED-Streifen mit einzeln steuerbaren LEDs). Solche ESPs lassen sich mit WLED einfach in ioBroker z.B. per cURL in einem Blockly (exec Befehl) ohne extra Adapter integrieren (siehe unten). Es gibt auch einen Adapter der die entspr. Datenpunkte anlegt (iobroker.wled). Via Node-RED und cURL sollte das auch mit KNX oder Loxone funktionieren? Sehe das es auch eine WLED Unterstüzung seit V0.11.0 für Loxone gibt.

LEDs haben bei voller Helligkeit einen Stromverbrauch von maximal ca. 20 mA (0.1W) je Farbe, also je RGB LED 60mA (0.3W) und RGBW 80mA (0.4W). Für mein 5V Demo Strip mit 60 RGB LEDs müsste ich also ein 5V-Netzteil mit 3.6A verwenden (18A bei 300 LEDs!). Ich begrenze den Strom per Setup auf 1500mA, testweise habe ich die LEDs an einem Labornetzteil (max. 13A) angeschlossen und optisch war es nur etwas heller. Ein 12A Netzteil kann daher bei 5m und 300 LEDs auch ausreichend sein. Wenn bei langen Strips ab ca. 3m die hinteren LEDs dunkler leuchten, hilft nur Spannungsinjektionen oder die Versorgungsspannung in der Mitte einzuspeisen. Auch eine Möglichkeit ist die Einspeisung Plus von einer Seite und Minus von der anderen Seite des Strip anzuschließen, dass hat den Vorteil das der Widerstand für alle LEDs gleich groß ist und es zu keinem Helligkeitsunterschied kommt. Bei mehr als 180 LEDs und/oder langen Kabelstrecken würde ich jedenfalls 12V (z.B. WS2815) LED-Strips mit einem 12V/8A Netzteil bei 5m empfehlen, da hier der Spannungsabfall und Strombedarf geringer ist. Hierbei muss der ESP an einem 5V Netzteil oder Regulator mit gemeinsamen GND betrieben werden!

Verwendete Demo Hardware:
Wichtig: Die Amazon Links dienen nur zur Produktinfo und ich bin an keinem Affiliate-Programm gebunden! Hauptsächlich meide ich sogar Amazon, siehe z.B. Marktcheck checkt Amazon.


* gibt es auch als RGBW (4 Farben) LED-Strip mit bis zu 144 LEDs/m, z.B. dieser SK6812 (RGBNW = RGB + natürliches Weiß, 4000K-4500K).

Anschlussschema mit einem Widerstand ca. 220-470 Ohm am Datenpin D4 um eine mögliche Beschädigung zu verhindern. Bei einem BTF2815 12V (5m) war mein 470 Ohm Widerstand zu groß (falsche Farben und flackern), mit einem kleineren 220 Ohm Widerstand funktioniert dieser auch sicher.



1 ) Die GUI Software die ich zum Flashen meines ESP8266 unter Linux Manjaro verwendet habe, heißt NodeMCU PyFlasher und lässt sich aus den AUR Repos installieren. Das sollte auch mit einem ESP32 funktionieren, ist aber für diesen Zweck unnötig (Bluetooth und 2 CPU's).
yay -S nodemcu-pyflasher
2 ) Um auf die serielle Schnittstelle zugreifen zu können, benötigt Manjaro (Arch Linux) Berechtigungen und muss Mitglied der Gruppen uucp und lock sein. Aktuellen Benutzer hinzufügen:
sudo usermod -aG uucp $USER
sudo usermod -aG lock $USER
dann den PC neu starten.

3 ) Nun zum Flashen des ESP8266. Benötigt wird die aktuelle Firmware von WLED welche auf github.com/Aircoookie/WLED/releases zu finden ist. Ich habe die zum Zeitpunkt meiner Installation "WLED_0.12.0_ESP8266.bin" geladen (siehe Version mit der Aufschrift "Latest").

Als nächstes habe ich den ESP8266 mit einem Micro-USB-Kabel am Computer angeschossen und den NodeMCU PyFlasher (/usr/bin/nodemcu-pyflasher) geöffnet.



Normalerweise sind alle Geräte in Linux nur Dateien und bei serielle Schnittstellen ist das nicht anders. Das erste sollte daher "/dev/ttyUSB0" sein und das zweite "/dev/ttyUSB1" usw. Diese GUI macht das Flashen sehr einfach: "Serial Port" auswählen, Firmware Datei auswählen und den Flash Vorgang starten.

Hinweis für ein späteres Software-Update-Verfahren. Die Software verfügt über eine integrierte OTA-Software-Update-Fähigkeit: Zuerst muss diese aktivieren werden, indem die korrekte OTA-Passphrase (Standard: "wledota") im Einstellungsmenü eingegeben wird. Entferne das Häkchen in der Checkbox "OTA locked", speichere dann die Einstellungen und starte den ESP neu. Anschließend kann unter Config -> Security & Update die Option Manual OTA Update ausgewählt werden und ein neues Release Binary hochgeladen werden (im Dezember 2021 so erfolgreich WLED_0.13.0-b5_ESP8266.bin installiert).

4 ) nach dem Flashen habe ich mich mit WLAN in das Gerät eingeloggt (Notebook oder Smartphone) und per Webinterface die WLED App an meinem Router angemeldet:

SSID ist "WLED-AP" und das Passwort ist "wled1234", Aufruf des Webinterface im Browser: http://4.3.2.1

Dann unter "Config" und "WiFi Setup" die WLED-AP an euren Router anmelden "connect to existing network" (Beispiel!):
  • SSID: [Router SSID]
  • Network password: [Router WLAN Passwort]
  • Static IP: 192.168.1.42 (eine feste freie IP)
  • Static gateway: 192.168.1.1 (Router IP)
  • Static subnet mask: 255.255.255.0
  • mDNS adress: http://wled-42.local
  • Config Access Point: alles leer gelassen




Nun kann ich per http://wled-42.local oder http://192.168.1.42 das Webinterface WLED starten.


Da WLED viele unterschiedlichen LED-Strips unterstützt muss das Strip erst passend konfiguriert werden, ich musste z.B. LED outputs von RGB auf GRB umstellen (erste LED grün anstatt rot). Wenn du wie ich zum Testen einen 1m LED-Streifen mit 60 LEDs/m hast, musst du unter "LED Preferences" 60 eintragen (bei 5m 300). Dabei wird dir auch ein passendes Netzteil (Ampere) vorgeschlagen. Cool: Anschließend kann die Leistung des Netzteils angeben werden (Maximum Current). WLED wird die Helligkeit der LEDs entsprechend reduzieren, daher ist es auch möglich ein kleineres Netzteil zu nutzen.

Demo 1


Demo 2 (nein, werde den Ofen nicht anmachen, war nur ein joke ;-)


Demo 3 (Regenbogen Simulation Terrasse, 5m Strip unsichtbar in der Überdachung montiert)



Ich steuere mein WLED per HTTP Request API via cURL unter ioBroker
(cURL sendet unter Linux standardmäßig ohne jegliche Optionen eine HTTP-GET-Anfrage)

Quelle: HTTP-request-API

Schönes Beispiel für eine Beleuchtung im Garagensturz mit WLED (RGBW) auf YouTube: Link

Ein paar Beispiele für mein DEMO RGB Strip mit 60 LEDs. Bei 5m wie in dem YT-Link sind es 300 RGBW LEDs und müsste dann angepasst werden - S2, S, SP und W (weiße LED).
(S2=60 Anzahl der LEDs, S = Set segment start, SP = Set segment spacing, T = Off/On/Toggle (0/1/2), A = master brightness (0-255), FX = Effect index)

Tor in Bewegung (rot):
curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=0&S2=60&GP=1&SP=0&RV=0&SB=255&A=128&R=255&G=0&B=0&R2=0&G2=0&B2=0&FX=60&SX=203&IX=246&T=1"
ioBroker cURL Demo (Hörmann Tor mit UAP1):


Tor geöffnet (grün):
curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=0&S2=60&GP=1&SP=0&RV=0&SB=255&A=128&R=0&G=255&B=0&R2=0&G2=0&B2=0&FX=0&T=1"
Einschaltanimation - Aus - Spots:
curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=0&S2=60&GP=1&SP=0&RV=0&SB=255&A=128&R=255&G=255&B=255&R2=0&G2=0&B2=0&FX=60&SX=64&IX=113&T=1"curl "http://192.168.1.42/win&T=0"curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=5&S2=60&GP=7&SP=5&RV=0&SB=255&A=128&R=255&G=255&B=255&R2=0&G2=0&B2=0&FX=0&T=1"
aus:
curl "http://192.168.1.42/win&T=0"ein:
curl "http://192.168.1.42/win&T=1"umschalten (toggle):
curl "http://192.168.1.42/win&T=2"
Effekte (Liste der Effekte und Paletten)

TV Simulator (FX=116)
curl "http://192.168.1.42/win&T=1&A=128&FX=116&SX=0&IX=128"
Scanner Dual (FX=60)
curl "http://192.168.1.42/win&T=1&A=128&FX=60&SX=0&IX=128"

Random Colors (FX=5)
Einschalten und konstantes, sehr langsames Überblenden aller LEDs von einer einzelnen Zufallsfarbe zu einer anderen einzelnen Zufallsfarbe
curl "http://192.168.1.42/win&T=1&A=128&FX=5&SX=0&IX=128"
das gleiche schneller
curl "http://192.168.1.42/win&T=1&A=128&FX=5&SX=255&IX=128"


Strommessung mit BTF-LIGHTING WS2815 12 Volt (5m 300 LEDs)
Der BTF2815 ist ein WS2815-Klon, der einen UCS1903-Chip verwendet. Der Test von QuinLED zeigte das der BTF2815 bessere Eigenschaften als der original WS2815 hat (YT: 24v on 12v WS2815 / BTF2815 | Will it burn?).

  • BTF-LIGHTING WS2815 Modell: BTF-12V-060L-W
  • Netzteil MW LPV-150-12 | 12VDC / max. 10A (5A tut es auch, siehe Messergebnisse unten)
  • Converter 12DC zu 5 VDC für den ESP (Masse mit dem 12 Volt Netzteil verbunden)
  • Firmware WLED_0.12.0_ESP8266
  • alle LEDs an (Brightness 100%): win&SM=0&S2=300&RV=0&SB=255&A=255&R=255&G=255&B=255&R2=0&G2=0&B2=0&FX=0&T=1
  • Multimeter Fluke 115 True RMS

WLED kann den Strom nur "schätzen" (kalkulieren) und daher sind die Werte nicht genau. Hier kalkuliert WLED den Strip mit "WS2815 (12mA)".

WLED Strombegrenzung 880mA, WLED Schätzung ist 866mA, gemessen mit Fluke 780mA


WLED Strombegrenzung 1500mA, WLED Schätzung ist 1488mA, gemessen mit Fluke 1290mA


WLED Strombegrenzung 6000mA (also offen), WLED Schätzung ist 4000mA, gemessen mit Fluke 3300mA


Die letzte Messung entspricht 40Watt und die Spannung des Netzteils bleibt stabil genau 12,0Volt. Das entspricht nicht den 90Watt (0.3W/LED) die BTF angibt (Link). Diese Angaben von BTF sind schlichtweg gelogen. Auf der Seite von thesmarthomehookup.com wurden fast meine gleichen Messungen an einem WS2815 dargestellt, jedoch mit 150 LEDs, darum ca. 20Watt.


Nachtrag: Auf QuinLED findet ihr die gleiche Messung mit 300 LEDs.

Auch wichtig: Der Ruhestrom mit ESP und 5V-Converter, wenn die LEDs aus sind (win&T=0), ist gemessen ca. 530mA (WLED zeigt Current estimated usage: 400mA), das entspricht etwas mehr als 6Watt Sekundär und Primär bei 230Volt/105mA sind das 24Watt! Daher schalte ich das Netzteil bei Nichtgebrauch z.B. per Shelly aus. Gemessen an einem Shelly 1: Relais An 1W und Relais Aus 0,75W.



Hinweis:
  • Die WLED-Software benutzt ein Smartphone optimiertes Webinterface, wer mehrere WLED-LED-Strips in einer App zusammenfassen möchte kann die WLED Smartphone-App für Android oder iOS installieren.
  • LedFx kann Audio-Eingänge z.B. von einem Notebook oder Raspi sofort verarbeiten und das Audio als Echtzeit-Licht-Show zu mehreren LED-Stipes senden (WLED Sync Setup: E1.31 sACN).