INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32 und WS2812 funktioniert nicht mit WiFi
02.06.2021, 19:45
Beitrag #1
ESP32 und WS2812 funktioniert nicht mit WiFi
Hallo Liebe Gemeinde,
ich habe folgendes Problem.
Ich möchte mit dem „Wemos MINI D1 ESP32“ im Multi Task zwei unabhängige Abläufe ausführen.

Task 1 soll mit einem WS2812 LED Band verschiedene Effekte darstellen.
Task 2 soll sich die Uhrzeit per WiFi hohlen und an ein WS2812 LED Band darstellen.
Nun das Problem:
Ohne WiFi werden die LED Bänder einwandfrei dargestellt, mit WiFi fangen die LED Bänder an zu flackern und erzeugen Pixel Fehler.
Die aktuelle Library die ich nutze ist die „Adafruit_NeoPixel.h“
Ich habe auch schon die „NeoPixelBus.h“ und die „FastLED.h“ Library getestet, immer das gleiche Ergebnis.
Ich habe Tagelang im Internet Recherchiert, ich stehe mit diesem Problem nicht alleine da, aber ich konnte keine Lösung finden.
Kann es sein das wir uns zurückentwickeln? Was mit dem ESP 8266 funktioniert hat funktioniert mit dem ESP32 nicht mehr!?
Code:
#if !(defined(ESP32))
#error This code is intended to run on ESP32 platform! Please check your Tools->Board setting.
#endif
#include "WiFi.h"
#include "WiFiManager.h"            // https://github.com/tzapu/WiFiManager
char hostname[] = "Verzweiflung";   // Netzname/Hostname
#include "time.h"
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LED Band Anfang ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <Adafruit_NeoPixel.h>
#define NUM_LEDS 193      // Task code 1
Adafruit_NeoPixel pixelsAmbient = Adafruit_NeoPixel(NUM_LEDS, 4, NEO_GRB + NEO_KHZ800);
#define NUM_LEDS2 4       // Task code 2
Adafruit_NeoPixel pixelsUhr = Adafruit_NeoPixel(NUM_LEDS2, 2, NEO_GRB + NEO_KHZ800);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LED Band Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const char* ntpServer = "de.pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
int second, minute, hour, day, month, year, weekday;
struct tm timeinfo;
TaskHandle_t Task1;
TaskHandle_t Task2;

void setup() {
  Serial.begin(115200);
  pixelsAmbient.begin();
  pixelsAmbient.show();
  pixelsUhr.begin();
  pixelsUhr.show();
  pixelsAmbient.setBrightness(50);
  pixelsUhr.setBrightness(5);
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WiFi anmelden ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  WiFi.mode(WIFI_STA);          // explicitly set mode, esp defaults to STA+AP
    WiFi.disconnect(true);
    WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);
    WiFi.setHostname(hostname);
    //WiFi.softAP("AP");
    WiFiManager wm;               // Local intialization. Once its business is done, there is no need to keep it around
    wm.setAPCallback(configModeCallback);
    if (!wm.autoConnect()) {
    Serial.println("failed to connect and hit timeout");
    ESP.restart();              // reset and try again, or maybe put it to deep sleep
    delay(1000);
    }
    Serial.println("connected...yeey :)");
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WiFi anmelden ENDE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, &Task1, 0);
  delay(500);
  xTaskCreatePinnedToCore(Task2code, "Task2", 10000, NULL, 1, &Task2, 1);
  delay(500);
}
void configModeCallback(WiFiManager* myWiFiManager) {
  Serial.println("Entered config mode");
  Serial.println(WiFi.softAPIP());
  Serial.println(myWiFiManager->getConfigPortalSSID());
}
void Task1code( void * pvParameters ) {
  Serial.print("Task1 running on core ");
  Serial.println(xPortGetCoreID());
  for (;;) {
    colorWipe(pixelsAmbient.Color(255, 0, 0), 50); // Red
    colorWipe(pixelsAmbient.Color(0, 255, 0), 50); // Green
    colorWipe(pixelsAmbient.Color(0, 0, 255), 50); // Blue
    theaterChase(pixelsAmbient.Color(127, 127, 127), 50); // White
    theaterChase(pixelsAmbient.Color(127, 0, 0), 50); // Red
    theaterChase(pixelsAmbient.Color(0, 0, 127), 50); // Blue

    rainbow(20);
    rainbowCycle(20);
    theaterChaseRainbow(50);
  }
}
void Task2code( void * pvParameters ) {
  Serial.print("Task2 running on core ");
  Serial.println(xPortGetCoreID());
  for (;;) {
    TimeUpdate();
    pixelsUhr.setPixelColor(0, pixelsUhr.Color(0, 255, 255));
    pixelsUhr.setPixelColor(1, pixelsUhr.Color(0, 255, 255));
    pixelsUhr.setPixelColor(2, pixelsUhr.Color(0, 255, 255));
    pixelsUhr.setPixelColor(3, pixelsUhr.Color(0, 255, 255));
    pixelsUhr.show();
    delay(3000);
    pixelsUhr.setPixelColor(0, pixelsUhr.Color(255, 0, 255));
    pixelsUhr.setPixelColor(1, pixelsUhr.Color(255, 0, 255));
    pixelsUhr.setPixelColor(2, pixelsUhr.Color(255, 0, 255));
    pixelsUhr.setPixelColor(3, pixelsUhr.Color(255, 0, 255));
    pixelsUhr.show();
    delay(3000);
  }
}
void loop() {}
void TimeUpdate() {
  if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
    return;
  }
  second = timeinfo.tm_sec;
  minute = timeinfo.tm_min;
  hour = timeinfo.tm_hour;
  day = timeinfo.tm_mday;
  month = timeinfo.tm_mon + 1;
  year = timeinfo.tm_year + 1900;
  weekday = timeinfo.tm_wday + 1;
  Serial.print(day);
  Serial.print(".");
  Serial.print(month);
  Serial.print(".");
  Serial.println(year);
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);
  Serial.println(weekday);
}

void colorWipe(uint32_t c, uint8_t wait) {
  for (uint16_t i = 0; i < pixelsAmbient.numPixels(); i++) {
    pixelsAmbient.setPixelColor(i, c);
    pixelsAmbient.show();
    delay(wait);
  }
}
void rainbow(uint8_t wait) {
  uint16_t i, j;

  for (j = 0; j < 256; j++) {
    for (i = 0; i < pixelsAmbient.numPixels(); i++) {
      pixelsAmbient.setPixelColor(i, Wheel((i + j) & 255));
    }
    pixelsAmbient.show();
    delay(wait);
  }
}
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
    for (i = 0; i < pixelsAmbient.numPixels(); i++) {
      pixelsAmbient.setPixelColor(i, Wheel(((i * 256 / pixelsAmbient.numPixels()) + j) & 255));
    }
    pixelsAmbient.show();
    delay(wait);
  }
}
void theaterChase(uint32_t c, uint8_t wait) {
  for (int j = 0; j < 10; j++) { //do 10 cycles of chasing
    for (int q = 0; q < 3; q++) {
      for (uint16_t i = 0; i < pixelsAmbient.numPixels(); i = i + 3) {
        pixelsAmbient.setPixelColor(i + q, c);  //turn every third pixel on
      }
      pixelsAmbient.show();

      delay(wait);

      for (uint16_t i = 0; i < pixelsAmbient.numPixels(); i = i + 3) {
        pixelsAmbient.setPixelColor(i + q, 0);      //turn every third pixel off
      }
    }
  }
}
void theaterChaseRainbow(uint8_t wait) {
  for (int j = 0; j < 256; j++) {   // cycle all 256 colors in the wheel
    for (int q = 0; q < 3; q++) {
      for (uint16_t i = 0; i < pixelsAmbient.numPixels(); i = i + 3) {
        pixelsAmbient.setPixelColor(i + q, Wheel( (i + j) % 255)); //turn every third pixel on
      }
      pixelsAmbient.show();

      delay(wait);

      for (uint16_t i = 0; i < pixelsAmbient.numPixels(); i = i + 3) {
        pixelsAmbient.setPixelColor(i + q, 0);      //turn every third pixel off
      }
    }
  }
}
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) {
    return pixelsAmbient.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if (WheelPos < 170) {
    WheelPos -= 85;
    return pixelsAmbient.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return pixelsAmbient.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Liebe Grüße
Mirkan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 20:16 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2021 20:18 von Vapalus.)
Beitrag #2
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
Verwendest du einen Levelshifter?
Vielleicht eine blöde Frage, aber - wer weiß.

In der heutigen Zeit ist gesunder Menschenverstand so etwas Ähnliches wie eine Superkraft - aber keine nützliche.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 20:29
Beitrag #3
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
(02.06.2021 20:16)Vapalus schrieb:  Verwendest du einen Levelshifter?
Vielleicht eine blöde Frage, aber - wer weiß.
Sorry,
was ist ein Levelshifter?
Gruß Mirkan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 20:37 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2021 20:43 von Fips.)
Beitrag #4
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
(02.06.2021 19:45)Mirkan schrieb:  ESP32

Versuchst du den Moderatoren Arbeit zu beschaffen?

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 20:38 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2021 20:39 von Vapalus.)
Beitrag #5
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
Ah.
Okay, fangen wir mal am Anfang an: Wenn du den WS2812 genau anguckst (Datenblatt), steht da, dass er mit 5 Volt funktioniert, ein Signal aber genau dann als "HIGH" definiert ist, wenn es 0.7 *Vcc (also 0.7*5, also mindestens 3,5 Volt) ist. Der ESP arbeitet aber mit 3.3 Volt, das heißt im "undefinierten" Bereich. Es kann durchaus sein, dass es daran liegt. Bei mir gibt es immer Fehlerpixel, wenn ich mit der Spannung unterhalb der 0.7 Vcc arbeite.
Manchmal hat man Glück, und die 5V Versorgungsspannung ist in Wirklichkeit 4,5 Volt, manchmal hat man Pech und sie ist 5,25 Volt.

Ach ja, und im Forum gibt es einen speziellen ESP Bereich Tongue

In der heutigen Zeit ist gesunder Menschenverstand so etwas Ähnliches wie eine Superkraft - aber keine nützliche.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 20:50
Beitrag #6
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
(02.06.2021 20:37)Fips schrieb:  
(02.06.2021 19:45)Mirkan schrieb:  ESP32

Versuchst du den Moderatoren Arbeit zu beschaffen?

Was habe ich nun schon wieder falsch gemacht?
Gruß
Mirkan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 21:00
Beitrag #7
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
Wenn es nur bei WLAN Probleme gibt, streut das WLAN Signal wahrscheinlich in die Datenleitung ein. Oder es ist zu wenig Strom verfügbar, und das Stromhungrige WLAN verursacht kurzzeitig Spannungseinbrüche. Obwohl ich da eher an andere Fehlerbilder denke.

Ist es ein fertiger Strip oder selber gelötet? C an jeder WS2812? Wie versorgst du die WS2812? Hast du einen Schaltplan zu deinem Projekt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2021, 21:14 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2021 21:16 von hotsystems.)
Beitrag #8
RE: ESP32 und WS2812 funktioniert nicht mit WiFi
(02.06.2021 20:50)Mirkan schrieb:  Was habe ich nun schon wieder falsch gemacht?

Den falschen Bereich gewählt.
Es gibt extra einen für die ESP.

Im übrigen tippe ich auch auf die Spannungsversorgung, die wohl zu schwach ausgelegt ist.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32-WROVER-DEV funktioniert nicht mehr Twantie 7 251 02.08.2021 11:53
Letzter Beitrag: amithlon
  ESP32 ist nicht gleich ESP32...Problem mit Node32s und Linux Mint 20.2. Uma bm-magic 0 181 29.07.2021 00:58
Letzter Beitrag: bm-magic
  ESP32-Cam mit BLYNK nutzen 4711engel 2 233 24.07.2021 20:57
Letzter Beitrag: 4711engel
  ESP32 T-Watch 2020 Lilygo AnFi 18 6.267 23.07.2021 19:39
Letzter Beitrag: Vapalus
  ESP32-CAM Pan Tilt 4711engel 0 224 22.07.2021 18:35
Letzter Beitrag: 4711engel
  Fehlermeldung, deren Rätsel ich nicht lösen kann BL007 3 292 21.07.2021 13:20
Letzter Beitrag: Tommy56
  ESP32 und sms kpc 27 4.206 11.07.2021 10:04
Letzter Beitrag: hotsystems
Wink ESP32 IR Empfang auf Core0 Flarki 9 1.071 30.06.2021 19:00
Letzter Beitrag: Flarki
  ESP32 LED D2 blinkt schnell Harry 17 1.938 29.06.2021 19:52
Letzter Beitrag: AnFi
  2 ESP32 laufen nicht zusammen SnecxXx 5 616 24.06.2021 17:08
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste