WS2812B mit ESP8266 ansteuern

Hallo Zusammen
ich möchte mit einem ESP8266mod ein WS2812 LED Strip ansteuern. Ich habe zum testen der Beispielsketch "auto mode cycle" von der Library "WS2812FX" auf den ESP8266 hochgeladen. Leider Funktionierte dieser nicht. Auf dem Arduino funktioniert der Code einwandfrei. Der ESP8266 funktioniert ausserdem auch da ich ihn mit dem Blink code getestet habe. Den LED Strip habe ich am ESP am Pin D4 (Laut google ist dies der GPIO 2). Als Board habe ich die ESP8266 Bordverwaltung installiert und dann das Board "Generic ESP8266 Module" ausgewählt. Muss ich da unter Werkzeuge noch etwas einstellen? Weil da gibt es ganz viele neuue einstellungen die Ich vom Arduino her noch nicht kenne.

Und ja ich benötige wirklich den ESP. Den unten Erwähnten Code habe ich nur verwendet um überhaupt mal den WS2812 zum laufen zu bringen. Leider ohne Erfolg.

Nochmal zu meiner Frage: wiso funktioniert der Sketch auf einem Normalen Arduino aber auf dem ESP8266 nicht?

Folgenden ESP verwende ich:

Hier noch der erwähnte Beispielcode:

#include <WS2812FX.h>

#define LED_COUNT 14
#define LED_PIN 2

#define TIMER_MS 5000

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);

unsigned long last_change = 0;
unsigned long now = 0;

void setup() {
  ws2812fx.init();
  ws2812fx.setBrightness(255);
  ws2812fx.setSpeed(1000);
  ws2812fx.setColor(0x007BFF);
  ws2812fx.setMode(FX_MODE_STATIC);
  ws2812fx.start();
}

void loop() {
  now = millis();

  ws2812fx.service();

  if(now - last_change > TIMER_MS) {
    ws2812fx.setMode((ws2812fx.getMode() + 1) % ws2812fx.getModeCount());
    last_change = now;
  }
}

Es könnte am Spannungspegel liegen. 3,3 vs 5V. Siehe Datenblatt

Vielen Dank für die Antwort. Ja das habe ich dem Moment auch gerade herausgefunden :sweat_smile:. Wenn ich einen ESP32 Verwende sollte es aber funktionieren oder?

Der gibt auch nur 3,3V aus.

Gruß Tommy

Das Problem mit den 3.3V ist, es kann gehen oder auch nicht.

Wenn du eine Diode hast, kannst du das mal testen: Cheating At 5V WS2812 Control To Use 3.3V Data | Hackaday

Das funktioniert bei mir mit alten WS2812 problemlos. Es soll neue geben, die auch mit 3,3V angesteuert werden können.

Gruß Tommy

Ja, das Datenblatt wurde geändert.

Du weist aber leider nicht, welche Du bekommst.

Gruß Tommy

Damit Du das immer bei Hand hast ausdrucken :wink:

1 Like

Weiss jemand ob es dafür irgend eine Lösung gibt? Also Grundsätzlich empfängt mein Code eigentlich daten von einem Rasperry Pi über Wlan empfangen und dann nach diesen Daten den LED Strip ansteuern. Gibt es ein anderse Bauteil welches mit der Arduino IDE Programmiert werden kann und daten über Wlan empfangen kann und nicht so gross / teuer ist. Was ich mir gerade noch überlegt habe wäre zusätzlich einen Arduino Nano zu nehmen und dann die Daten die der ESP empfängt über RX unt TX an den Nano zu senden. das Würde so funktionieren. Habs getestet. Ist halt nicht opitmal, da dies dann wieder etwas mehr platz verwendet. Oder könnte man auch ein Step up Converter von 3,3 V auf 5V verwenden? funktioniert das so?

Ja genau das Bild habe ich auch gesehen. Löst aber mein Problem nicht, dass die Ausgangsspannung nur bei 3,3V liegt.

Hast Du Dir den Link in #5 mal angeschaut? Dort steht die Lösung drin.

Gruß Tommy

Nein :wink:
Was möglich wäre mit Transistor den Pegel erhöhen, leider habe nicht probiert.

Den Link in #5 hast Du gesehen?

Ich dachte das Funktioniert nicht zu 100%? Also kanns mal versuchen danke.

Doch, das ist die/ eine Lösung für das 3.3V Problem.

Nein es funktioniert nicht. Hab es gerade Probiert

Dann muss ich wahrscheinlich wirklich mit einem Arduino Nano machen :melting_face:. Ausser jemand hätte noch eine Idee (ohne basteln). Die Andere Lösung wäre ausserdem ein zu grosses gebastel (wobei es ja sowiso nicht funktioniert.

Dann machst Du etwas anderes falsch, was wir nicht wissen.

Gruß Tommy

Dann zeig doch mal, wie du es gemacht hast.
Foto reicht.

Viele andere haben es genau so zum Laufen gebracht.
Daher vermute ich einen Fehler in deinem Aufbau.

Und was genau verstehst du unter "ohne basteln" ?