Forum: Mikrocontroller und Digitale Elektronik ESP32 - WS2812B - FastLED Anzeigefehler


von Dima U. (Gast)


Lesenswert?

Moin,

ich habe mir mal paar schöne ESP32 gekauft. Da ich schon viel mit den 
WS2812B und der FastLED Library gearbeitet habe, dachte ich es würde 
kein Problem sein das auch auf einem ESP auszuprobieren. Meine Codes 
liefen auf den AtMega328 Modulen Problemlos. Der  ESP8266 - 01  war mir 
mit der Zeit zu lästig, immer dieses neu verkabeln, somit habe ich den 
ESP32 ausprobiert. Nach dem Hochladen des DemoReel100 Sketches, bleiben 
die LEDs im Rainbow Effekt als Standbild und blinken ca alle 2-3 Hell 
auf. Der ESP an sich funktioniert, ich bekomme jedes Standard WIFI und 
UDP Programm zum laufen.


Nach meiner 2 Tägigen Recherche, liegt es scheinbar an der Taktfrequenz 
des ESP32. Wie ich es verstanden habe, fehlt ein Bit oder ähnliches in 
der gesamten Übertragung zum WS2812B , sodass die LEDs nicht 
ordnungsgemäß angesteuert werden.
Ich habe einige Lösungen gesehen, unter anderem einen langen Code, wo 
jemand das Protokoll Manuel über PIN = High / PIN = Low angesteuert hat.

Das ist mir zu lästig. Daraufhin kam ich auf ein Code Zusatz.

#define FASTLED_ALLOW_INTERRUPTS 0

Das sollte im Code eingefügt werden, bevor:

#include "FastLED.h"

erwähnt wird.

Es brachte den DemoReel100 Sketch zum laufen, jedoch mit einem sehr 
schnellen Flackern.
Es scheint ein sehr verbreitetes Problem zu sein. Die Adafruit_NeoPixel 
Library hab ich auch ausprobiert. Es scheint mal mehr oder weniger 
Stabil zu laufen.

Deswegen meine Frage:

Hat zufällig jemand eine weitere Lösung, wie ich das Problem zwischen 
ESP32 und WS2812B lösen kann? Ich sitze inzwischen seit 3 Tagen an 
diesem Problem und komm einfach nicht weiter.

Grüße

von Stefan F. (Gast)


Lesenswert?

Was hat die Taktfrequenz des Mikrocontrollers mit fehlenden Bits zu tun?

Ich habe eher das Gefühl, dass du wild geraten hast. An Deiner Stelle 
würde ich die Kommunikation zwischen dem µC und den LED's mit einem 
Logic Analyzer aufzeichnen und kontrollieren.

Mein Vermutung: Dein Programm wird durch die WLAN Funktionen der 
Basis-Firmware unterbrochen, so dass keine kontinuierlich gleichmäßigen 
Signale erzeugt werden. Das ist zumindest beim ESP8266 so.

Eventuell kommst du weiter, indem du herausfindest, wie man den zweiten 
CPU Kern exklusiv nutzt.

Aber vorher besorgst du dir einen Logic analyzer.

von Michael U. (amiga)


Lesenswert?

Hallo,

ich müßte mal meinen Bekannten fragen, zumindest lief die aktuelle 
FastLED mit dem ESP32 bei ihm. Ich gkaube aber, es war ein 3,3V->5V 
Pegelwandler nötig, weil seine WS2812B-Matrix sonst nicht dem Pegel des 
ESP32 klarkam.
Die Nutzung der RMT-Hardware des ESP32 war aber wohl auch nicht 100% 
störungsfrei bei WLAN-Aktivitäten.

Gruß aus berlin
Michaeö

von Dima U. (Gast)


Lesenswert?

Das würde mich vielleicht weiter bringen, danke!

Ich werde das mit dem Pegelwandler mal ausprobieren!

Danke!

von Michael U. (amiga)


Lesenswert?

Hallo,

so, gerade etwas mit meinem Bekannten geplaudert...
Die Pegelwandlergeschichte betraf seine Matrix, die auch am ESP8266 
nicht ohne Pegelwandler lief, vermutlich etwas andere LEDs obwohl sie 
als WS2812B angegeben sind und auch so laufen.

Sein WS2812B Stripe lief auch am ESP32 mit der FastLED und dem Reel-Demo 
ohne weitere Änderungen erstmal sauber.
Beim ESP32 wird dann die RMT-Hardware genutzt, die geht aber wohl nicht 
an allen GPIO. Er hatte GPIO12 benutzt, warum gerade den weiß er nicht 
mehr...

Gruß aus Berlin
Michael

von Dima U. (Gast)


Lesenswert?

Also ich habe es nun mit einem Logic Channel Converter 5V -> 3,3V 
probiert. Es bringt leider nichts. Wenn ich die Neopixel Library 
benutze, geht es zwar, aber jedes mal wenn ich   strip.show(); 
benutze, entstehen immer mind. 1 bis 20 Pixelfehler auf 218 Pixel 
verteilt.

Es geht zwar, nervig ist es trotzdem und leider hat die Neopixel Library 
nicht so viele Funktionen, wie FastLED. Zumindest von den Möglichkeiten 
die ich bisher kenne.

Danke dir Trotzdem.

von Michael U. (amiga)


Lesenswert?

Hallo,

eigentlich eigenartig. Die FastLED benutzt für den ESp32 eigene 
Routinen, die auch die RMT-Hardware nutzen. Das sollte eigentlich 
erstmal ohne Probleme gehen.
Hast Du mal in \sketchbook\libraries\FastLED\platforms\esp\32 geschaut, 
was er da in clockless_esp32.h dazu schreibt?.
Hattese Du beim Test außer dem FastLED-Kram noch mehr auf dem ESP32 
laufen?

Gruß aus Berlin
Michael

von Edith (Gast)


Lesenswert?

Hallo hast du die WS2812 zumlaufen gebracht?
Hab ein ESP32 mit WS2812 und habe auch das problem mit den Flackern 
einiger LED´s. Habe verschieden Pegelwanlder versucht. brachte aber 
alles keinen erfolg.
Das einziege was mir aufgefalle ist. Sobalt im am Datapin mit den 
Osyloskop messe ist daa flacken quasi verschwunden. Warum ist mir ein 
rätsel?

von Phil (Gast)


Lesenswert?

Hey!
Dies kann damit zusammenhängen dass die Kapazität der Oszilloskop Probe 
hilft.
Hast du n Data Pin Widerstand drin?

LG Phil

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.