WLED Lichterkette RGB Neopixel

Begonnen von Eistee, 29 November 2021, 21:00:37

Vorheriges Thema - Nächstes Thema

tobi01001

Zitat von: Eistee am 05 Dezember 2021, 10:23:43
Ich geh mal nicht darauf ein was hier geschrieben wurde. Da kann sich jeder selbst seine Meinung zu machen.

Für die die es selbst bauen wollen mal ein paar weitere Infos:

Der D1 mini (ESP) arbeitet mit 3,3V. Die LED Strips und auch die Lichterkette arbeiten mit 5V. Das macht es normalerweise notwendig das das Datensignal von 3,3V auf 5V hochgezogen wird. Die meisten steuerbaren LEDs funktionieren aber wenn das Kabel nicht zu lang ist auch mit 3,3V auf der Datenleitung. So hab ich das bei mir realisiert.

Angeschlossen habe ich am D1 mini die 3 nebeneinander liegenden Anschlüsse
5V (Spannungsversorgung)
G (Masse)
D4 (GPIO2)

Als Netzteil habe ich festgestellt das ein 500mA Netzteil etwas zu schwach ist. Die LEDs leuchten dann nicht ganz hell. Ein ~1A oder größeres USB Netzteil sollte es dann also sein. Ich versorge die 100LED über den micro USB Stecker des D1 mini. Das klappt bei mir bis jetzt ganz gut. Ich möchte aber auch erwähnen das diese Art des Anschlusses nicht optimal ist. Es gibt für das WLED Projekt auch jede menge Controller die auch hier im FHEM Forum schon zu finden sind die dann auch entsprechend 5V auf der Datenleitung haben und eine Sicherung sowie einen Glättungskondensator beinhalten.

Danke für die Rückmeldung zur Länge... Werde ich mir dann doch mal bestellen. Die anderen Stripes habe ich eher auf Pixeldichte ausgelegt...

Aber:
Du treibst 100 Leds über den Micro-USB des D1 Mini? Eine einzelne Led kann da bis zu 60mA ziehen (real sind es eher 45-50) wenn man sie auf weiß stellt. aber selbst nur eine Farbe bis an die 20 mA.

Wenn du also alle 100 weiß leuchten lässt, schiebst du evtl. 6A über den Micro USB (etwas begrenzt durch dein Netzteil) der eher für <500mA ausgelegt ist. Das werden dir Netzteil und der D1 Mini ziemlich schnell übel nehmen...
Und in der Variante würde ich das dann auch besser nicht zum Kauf anbieten (nicht ohne Disclaimer etc...).

Kenne jetzt die WLED SW nicht. Ich habe (je nach Anzahl LEDs) mind. ein 3A Netzteil dran und begrenze zusätzlich per SW.

Mit direkt 10cm Abstand zwischen den Pixeln wären die für Weihnachtsbeleuchtung und sochle Späße natürlich besser geeignet...

Falls jemand Interesse an der SW und dem "Fhem Modul" (ist nicht wirklich eins - zumindest kein gutes) hat:
https://github.com/tobi01001/LED_Stripe_Dynamic_web_conf
https://github.com/tobi01001/FHEM-LED_CONTROL-

FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

hankyzoolander

#16
Hallo, finde ich cool.
Wo steht denn die config von den Leds drin? anzahl Pixel,Pin,wlan usw drin?
Suche mich gerade zum dämon.

edit:

bekomme beim kompilieren nen python fehler
Traceback (most recent call last):
  File "C:\Users\Kevin\Downloads\LED_Stripe_Dynamic_web_conf-main\LED_Stripe_Dynamic_web_conf-main\git_rev_macro.py", line 3, in <module>
    revision = subprocess.check_output(["git", "rev-parse", "HEAD"]).strip()
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 505, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
OSError: 'python git_rev_macro.py' exited 1:
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\main.py", line 180:
    env.SConscript("$BUILD_SCRIPT")
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Script\SConscript.py", line 597:
    return _SConscript(self.fs, *files, **subst_kw)
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Script\SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "C:\Users\Kevin\.platformio\platforms\espressif8266\builder\main.py", line 238:
    target_elf = env.BuildProgram()
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 61:
    env.ProcessProgramDeps()
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 125:
    env.ProcessFlags(env.get("BUILD_FLAGS"))
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 223:
    env.Append(**env.ParseFlagsExtended(flags))
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 186:
    for key, value in env.ParseFlags(str(raw)).items():
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Environment.py", line 815:
    do_parse(arg)
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Environment.py", line 667:
    arg = self.backtick(arg[1:])
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Environment.py", line 579:
    raise OSError("'%s' exited %d" % (command, status))
betateilchen  <--- my personal hero

sinus61

Zitat von: tobi01001 am 09 Dezember 2021, 23:21:52

Kenne jetzt die WLED SW nicht. Ich habe (je nach Anzahl LEDs) mind. ein 3A Netzteil dran und begrenze zusätzlich per SW.

Kann man ja in WLED auch begrenzen. In den Einstellungen wird ja darauf hingewiesen die Begrenzung auf max. 1A zu setzen wenn man den ESP über USB versorgt und die Spannungsversorgung des Strip direkt am ESP abgreift.

Bei 100 LEDs würde ich aber auch eher ein externes Netzteil für die Lichterkette nehmen, sonst schränkt man sich ja in Helligkeit und Effektauswahl ziemlich ein.

Eistee

Macht euch da nicht all so viel Sorgen. Den Strom begrenzt das Netzteil. Und die LEDs in der Lichterkette können gar nicht so viel Strom ziehen wie die auf den LED Stripes. Am D1 Mini der 5V Pin ist außerdem direkt mit der USB Buchse verbunden. Der ESP wird also nicht überlastet. Wenn auf dem Netzteil 2A steht wird es nicht mehr liefern. Und dann durchbrennen. Es ist eher so das dann die 5V einbrechen und die Lichterkette dunkler wird.

tobi01001

#19
Zitat von: hankyzoolander am 12 Dezember 2021, 13:04:27
Hallo, finde ich cool.
Wo steht denn die config von den Leds drin? anzahl Pixel,Pin,wlan usw drin?
Suche mich gerade zum dämon.

edit:

bekomme beim kompilieren nen python fehler
Traceback (most recent call last):
  File "C:\Users\Kevin\Downloads\LED_Stripe_Dynamic_web_conf-main\LED_Stripe_Dynamic_web_conf-main\git_rev_macro.py", line 3, in <module>
    revision = subprocess.check_output(["git", "rev-parse", "HEAD"]).strip()
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 505, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Kevin\.platformio\python3\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
OSError: 'python git_rev_macro.py' exited 1:
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\main.py", line 180:
    env.SConscript("$BUILD_SCRIPT")
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Script\SConscript.py", line 597:
    return _SConscript(self.fs, *files, **subst_kw)
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Script\SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "C:\Users\Kevin\.platformio\platforms\espressif8266\builder\main.py", line 238:
    target_elf = env.BuildProgram()
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 61:
    env.ProcessProgramDeps()
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 125:
    env.ProcessFlags(env.get("BUILD_FLAGS"))
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 223:
    env.Append(**env.ParseFlagsExtended(flags))
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Util.py", line 748:
    return self.method(*nargs, **kwargs)
  File "C:\Users\Kevin\.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 186:
    for key, value in env.ParseFlags(str(raw)).items():
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Environment.py", line 815:
    do_parse(arg)
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Environment.py", line 667:
    arg = self.backtick(arg[1:])
  File "C:\Users\Kevin\.platformio\packages\tool-scons\scons-local-4.2.0\SCons\Environment.py", line 579:
    raise OSError("'%s' exited %d" % (command, status))


Das habe ich erwartet. :-)
Ich sollte das mal besser beschreiben und auf github evtl etwas einfacher gestalten.
Aber die Readme dort hast du nicht im Detail angeschaut  ;)


Anzahl LEDs kannst du in der platformio.ini für die jeweilige Umgebung / environment unter "build flags" einstellen:
-DLED_COUNT=120

oder:
-DLED_COUNT_TOT=512
-DLED_OFFSET=0


Bei letzteren bleibt die Anzahl LED_OFFSET Pixels aus - so als wären sie nicht vorhanden. Hatte ich mal für das beleuchtete Halloweentablett gebraucht....

PIN: 3 (RX) - geht nur PIN3, da ich DMA (direct memory access) nutze - verhindert flackern und spart Rechenleistung (kein bit banging).

WLAN: Läuft über WiFi Manager, d.h. wenn der ESP frisch ist, spannt er aus dem Namen (LED_Name in der platformio.ini) einen Accesspoint auf. Mit dem verbunden, kannst du unter 192.168.4.1 WLAN konfigurieren.

Also am besten in der platformio.ini eine Env für deinen Anwendungsfall erstellen. Name und Anzahl LEDs vergeben. upload port und protocol erstmal auskommentieren und per kabel flashen (für OTA müsstest die IP wissen).
z.B.

default_envs = wemos_my_LEDs
[common_env_data]
...
...
[env:wemos_my_LEDs]
led_name = My LEDs
platform = espressif8266@2.6.3
board = d1_mini
board_build.filesystem = littlefs
framework = arduino
monitor_speed = 115200
monitor_filters = esp8266_exception_decoder
;upload_port = 192.168.2.89
;upload_protocol = espota
build_flags =
    ${common_env_data.build_flags}
    -DLED_COUNT=100
lib_deps = ${common_env_data.lib_deps_builtin}
extra_scripts = ${common_env_data.extra_scripts}
...

Python Fehler:
- Scheint das Macro zu sein, was die GIT-Revision extrahiert...
Kannst du das in der platformio.ini unter:
build_flags =
    ;!python git_rev_macro.py

einfach mal auskommentieren?

Ich nehme das um zu schauen, ob alle ESPs auf den gleichen Stand sind....
Das zweite Makro setzt individulle website icons und den LED_Name etc. im Filesystem. Damit kann ich die leichter auseinander halten...

Aber ich kann, wenn dir das alles zu komplitziert und komplex erscheint, gerne einen vereinfachten branch aufmachen wo diese Späße und sonderlocken nicht notwendig sind... So arg viel Arbeit ist das nicht.
[EDIT]
Probier mal das: Sollte in platformio über VSCode direkt kompilierbar sein: https://github.com/tobi01001/LED_Stripe_Dynamic_web_conf/tree/simpleConfig
Und wenn dir das taugt, können wir noch immer die etwas "komplexere" Variante ans laufen bringen. - Und ich die Dokumentation aktualisieren.

Aber vielleicht braucht es dafür besser einen Extra Thread. Wollte das Thema hier nicht kapern...
[/EDIT]

LG


Edit:
Zitat von: Eistee am 13 Dezember 2021, 15:38:46
Macht euch da nicht all so viel Sorgen. Den Strom begrenzt das Netzteil. Und die LEDs in der Lichterkette können gar nicht so viel Strom ziehen wie die auf den LED Stripes. Am D1 Mini der 5V Pin ist außerdem direkt mit der USB Buchse verbunden. Der ESP wird also nicht überlastet. Wenn auf dem Netzteil 2A steht wird es nicht mehr liefern. Und dann durchbrennen. Es ist eher so das dann die 5V einbrechen und die Lichterkette dunkler wird.
Ich hänge die trotzdem "immer" direkt ans Netzteil und den ESP gleichermaßen direkt an GND und 5V. Im "Datenblatt" was ich gesehen hatte, sind sie mit 2.88 W pro Meter angegeben, also 28.8 W für die Gesamtlänge was dann wieder knapp 6A sind... Meine sind gerade angekommen. Kanns bei Gelegenheit auch gerne mal messen ;)
Anyway, wenn Netzteil und SW begrenzen, ist der Schaden ggf nicht so groß.

Ich mache mir deshalb "Sorgen", weil mir Strom nicht ganz fremd ist, aber vielmehr deshalb, weil ich wegen (m)einer Unvorsicht ein jumper wire als Heizdraht verwendet hatte... Okay, das Netztteil was da dran war würde auch erst ab 20A begrenzen... ;)
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

hankyzoolander

Hallo,
ah ok ich teste das die Tage aus. Hab keinen wemos mehr zur Hand. Der letzte hat leider nach em flashen den Geist aufgegeben. Morgen sollten aber die 5 neuen kommen.
Würde mir das gerne nachbauen, aber ohne den knob und Display kram. Quasi nur die Leds per fhem steuern.

Danke für deine Mühe.
betateilchen  <--- my personal hero

hankyzoolander

#21
Hallo, danke für deine Mühe.
Habe das simple geflasht. Hat auch sofort durchkompiliert und hochgeladen.
Hab im webif meine Wlandaten eingetragen. Wemos hat von meinem Router auch ne ip bekommen. Nur leider ist es ne leere Seite.
Bekomme kein Webinterface angezeigt.
Hab nur die Anzahl Leds auf 86 geändert.


edit:
Bekomme beim Kompilieren ne Warnung das SPIFFS veraltet wäre, ich in erwägung ziehen sollte auf LittleFS oder ein anderes FIlesystem wechseln sollte??
betateilchen  <--- my personal hero

tobi01001

Klingt erstmal so als hat alles funktioniert.
Ich vermute, du hast das Filesystem noch nicht hochgeladen. Die SPIFFs Warnung kommt von einer Library (AsyncWebServer) und kann ignoriert werden.

Über das Platformio Menü musst du mittels "Upload Filesystem" den Datenordner hochladen. Dann funktioniert auch das WEB-interface.

Ob der Rest funktioniert, kannst du aber bereits so testen mit z.B.
deineip/status   status des wemos/der software als JSON
deineip/all        alle möglichen parameter und settings als JSON - daraus werden webpage und fhem modul befüllt
deineip/allvalues  aktuelle werte aller veränderbarer parameter.

deineip/set?power=1    sollte die LEDs im "static" mode mit Rainbow palette aktivieren

Und letztendlich "müsste" das fhem-modul auch unabhängig web-interface funktionieren...

FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

Horti

#23
Hallo zusammen,

meine Lichterkette ist mittlerweile angekommen.

Wenn ich das hier bis jetzt richtig interpretiert habe, kommen GND und +5V direkt ans Netzteil und Data an irgendeinen Pin des Wemos?

Hat vielleicht jemand ein fertiges Binary, das man nur Flashen und per Web konfigurieren kann? Anschließen und Flashen ist ja noch kein Problem, aber Libraries zusammenkopieren und übersetzen, da wird die Zeit doch knapp...

Edit: konnte mir meine Frage nun (hoffentlich) selbst beantworten:
https://kno.wled.ge/

Horti

#24
Nach einiger Bastelei und Recherche läuft es auch nun bei mir.

Mögliche Stolperfallen:
- bei meiner Bezugsquelle waren die Drähte falsch beschriftet, so dass die Lichterkette erstmal dunkel blieb. Die richtige Beschaltung lautet: 5V - GND - Data, bei mir waren die GND und Data in der Beschreibung vertauscht.
- ich musste in der WLED Oberfläche nicht SK6812 einstellen sondern WS281x

OT: kennt jemand ein 3D-Druck-Modell einer Box, um ein Unterputz-Gerät darin zu verstauen, idealerweise inkl. Zugentlastung? Würde gerne mein Netzteil und den D1 endusertauglich und WAF-conform verpacken ;)

Eistee

#25
Hi,

ich habe dieses Gehäuse (https://www.thingiverse.com/thing:4063654) genommen und etwas angepasst da ich das ganze ja über mico USB versorge.
Ich hab das Kabel der LED Lichterkette direkt am D1 mini angelötet. die "Zugentlastung" habe ich mit einem Knoten im Kabel gemacht.
Den D1 mini mit Heißkleber eingeklebt. Dann mit ausreichend Heißkleber aufgefüllt so das der Deckel kleben bleibt. Fertig. Hat dann in etwa die Größe eine Streichholzschachtel.

Netzteil habe ich einfach ein USB Steckernetzteil mit ausreichen Amper genommen und halt ein USB Kabel. Hab davon genug rumliegen von diversen Geräten.

Gruß Alina