ESP32 verliert immer wieder die Verbindung

Ich habe ein neues MH-ET Live esp32 MiniKit Modul. Gekauft habe ich mir dies für WLED Soundreactive GitHub - atuline/WLED: Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi.

Verwendetes Beispielprogramm: HelloServer und fsbrowser aus der Beispielbibliothek von der Arduino IDE

  • Stromversorgung über usb
  • Keine Angeschlossenen Pins am ESP32
  • Entfernung zwischen ESP32 und Router ca. 35cm

Es ist unerheblich welche Anwendung auf dem ESP32 installiert ist. HelloServer, fsbrowser,
wled oder wled sound reactive.

Fehlerbeschreibung:
Nach einer gewissen Zeit kann man sich nicht mehr mit dem ESP32 Modul verbinden.
Die Zeitspanne ist unterschiedlich. Manchmal wenige Minuten. Manchmal länger. Meistens 7-10 Minuten.
Die IP des ESP32 wird (meistens) in meinen Netzwerkverbindungen vom Router weiterhin angezeigt.
Eine Verbindung zu dieser IP ist aber nicht möglich.
Ein Flashen des ESP32 ist dennoch möglich.
Verschiedene USB Ports wurden getestet. Mit WLed auch eine externe Stromversorgung.
Es hilft nur ein Reset.
Es ist egal ob man sich vom Smartphone aus verbinden möchte oder vom PC. WLED hat auch eine Android APP, diese kann sich dann auch nicht verbinden.

Zum Testen habe ich HelloServer auf einem Wemos D1 mini installiert, dort gab es keine Probleme. Auch Wled lief auf dem Wemos einwandfrei.

Eigentlich würde ich sagen, dass Modul hängt sich auf aber man kann es mit der Arduino IDE flashen wenn es die Verbindung verloren hat.

Manchmal bekomme ich im debug log folgende Meldungen vom Sketch HelloServer:

20:07:32.888 -> [D][WiFiGeneric.cpp:374] _eventCallback(): Event: 5 - STA_DISCONNECTED
20:07:32.941 -> [W][WiFiGeneric.cpp:391] _eventCallback(): Reason: 6 - NOT_AUTHED
20:09:32.905 -> [D][WiFiGeneric.cpp:374] _eventCallback(): Event: 8 - STA_LOST_IP

Diese Meldung kommt aber nicht immer. Auffällig sind auch die 2 Minuten zu der letzten Meldung. Ich weiß nicht ob dies auch bei WLED kommt.

Ist das Modul defekt oder übersehe ich etwas?

Der ESP32 zieht schon mal sehr viel Strom und dein ESP32 verliert dadurch die Verbindung.
Eine stabile Stromversorgung schafft abhilfe.

Danke für deine schnelle Antwort.
Ich kann mir allerdings nicht vorstellen das es an der Stromversorgung liegt.
Ich verwende ein hochwertiges kurzes usb Kabel und hatte damit noch nie probleme. Auch das 3A Netzteil ist kein billig teil. Auserdem ist ein Kondensator paralell geschaltet.
Der meiste Strom wird beim Verbinden gezogen. Das funktioniert bei mir einwandfrei. Erst viel später bricht die Verbindung ab. Ohne das irgend etwas verändert wurde. Es ist auch kein pin belegt.
Ich habe schon viele ESP verbaut. ESP01, ESP12, Wemos usw. Dieses Problem hatte ich noch nie.

Gibt es noch andere Ursachen die das Problem verursachen könnten?

Na klar gibt es die.
Nur wir können nicht auf deinen Arbeitsplatz sehen, somit ist es schwer da zu helfen.
Z.B. Kontaktfehler, defekte Kabel, schlechte Lötstellen....was möchtest du noch lesen ?

Dennoch ist die Spannungsversorgung mein Favorit, auch wenn du es nicht glauben willst.
Ein ESP32 braucht deutlich mehr Strom als ein ESP8266 und ich kenne das Problem, wenn dieser aus USB versorgt werden soll.
Baue eine eigene Versorgung für den ESP32 auf und wir sehen weiter.

Man sollte immer erst mögliche Fehlerquellen beseitigen, bevor man nach anderen Problem sucht. Und dazu zähle ich eine fehlerhafte Spannungsversorgung. Auch wenn die meisten "Anfänger" das nich wahr haben wollen.

Kontaktfehler, defekte Kabel, schlechte Lötstellen

Wenn das so wäre, dann ist das Modul defekt.

Wie bereits geschrieben. Ich habe den ESP auch schon an einem 3A Ansmann Netzteil betrieben. Mit diesem Netzteil habe ich schon anspruchsvollere Schaltungen versorgt. Ein Elko ist auch paralell geschaltet.
Was meinst du sonst mit eigene Versorgung? 3A Netzteil und Elko paralell. Was noch? Es ist ansonsten nichts em ESP angeschlossen was Fehler verursachen könnte.

Hallo,
hast du die IP des ESPschon mal angepingt wenn die "Verbindung weg" ist.
Heinz

Nein habe ich noch nicht gemacht? Versuche ich dann gleich mal. Was würde es bedeuten wenn man noch pingen kann bzw wenn nicht?

Hallo,
na ja wenn er sich anpingen lässt ist er noch nicht ganz weg tot . Die WIFI Geschichte läuft ja beim ESP32 in einer eigene RT-Task im Hintergrund. Wenn der Ping also geht würde ich ehr den Sketch als Fehlerquelle vermuten. Der Hallo Server sollte eigentlich dann aber laufen.
Heinz

Du schreibst, wenn der Fehler auftritt, kannst du ihn noch flashen.
Wie flashst du den ESP32, per OTA ?
Was für einen Router hast du ?
Laufen bei dir mehrere ESP ?

Per USB.
Das WLED Projekt ist sehr sauber gebaut. Da habe ich mir echt mühe gegeben. Ausreichend dicke und kurze Kabel. Sauber verlegte Kabel. Gute Stromversorgung usw. Ich kann mir da echt nicht vorstellen das es was mit der Stromversorgung zu tun hat.
Zum Testen, baue ich den esp32 aus und schließe ihn an usb an. Damit flashe ich und verfolge das serial log und usb dient in dem fall auch als Stromversorgung. Aber das ist ein hochweriges kurzes usb kabel. Wenn der ESP die Verbindung verliert, habe ich zum testen mal versucht zu flashen. Es ging.
Ich habe auch schon einmal das Netzteil zum versuchen verwendet. Das Problem war dass gleiche.

Wenn der ESP die Verbindung verloren hat, geht auch kein Ping.

Das würde die obige debug Aussage unterstützen. Das Ding ist also komplett raus. Hast Du mal den Abstand etwas größer gewählt, nur um das Thema HF Einstreuung auszuschließen.
Heinz

Ok, dann bleibt nichts als deinen Sketch zu posten.
Da muss was falsch laufen.

Ich habe hier einen ESP32 schon mehrere Tage (fast durchgehend) als Webradio mit Uhr laufen und das ohne Ausfälle. Wird ein Radiowecker.

Router ?
Anzahl ESP ?

Ach ja, wenn der nicht mehr im Netz ist, bist du sicher, dass der ESP noch läuft und nicht resettet wurde ?

Wo soll die herkommen ?
Bei 35 cm ist das unkritisch, bei der kleinen Leistung.

Och da wäre mal ein schönes Projekt. Was hast Du als zus. Hardware verwendet. Die Sache mit dem encoden und streamen wird ja nicht softi auf dem ESP gehen oder ?

Der T0 hat das Problem auch bei dem "Hallo Server" das macht mich so stutzig.
HF vom Router , ja macht nicht wirklich Sinn weiß ich. Oberwellen, vielfaches , harmonische. Schwingung, die grüne Tapete, der Geist aus der Flasche :wink: ... Dann bleibt ja nur das Ding hat einen Schuss. Man könnte noch mal den AP Modus versuchen ob das Problem da auch auftritt.
Heinz

Ja, das habe ich mir auch gedacht. :wink:
Möchte meinen Vorgänger mit einem Atmega328 und UKW-Radio ersetzen.
Der ESP32 soll es auch allein können. Hatte aber zu wenig Infos dazu. Verwende den VS1053 fürs Radio und einen DFplayer falls das Web ausfällt. Ist auch Hardwaremäßig schon fast fertig und läuft Probe. Werde ich evtl. bei Fertigstellung in "geile Projekte" reinstellen. Obwohl es nichts besonderes ist, da es dazu viel im Web gibt.

Was das Problem hier von @modi0 ist, warte ich noch auf Antworten.

Ich habe einen ESP32 DEV als Webradio am laufen, auch ohne Probleme.
Meine Vermutung ist das dass Modul einen Knax hat. Wollte aber erst mal hier schauen ob es nicht doch was anderes sein kann.

Es ist das ganz normale Beispiel Sketch aus den Arduino IDE Beispielen.
Hier der Code:

#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>

const char* ssid = "myssid";
const char* password = "mypassword";

WebServer server(80);

const int led = 2;

void handleRoot() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "hello from esp32!");
  digitalWrite(led, 0);
}

void handleNotFound() {
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}

void setup(void) {
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp32")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
  delay(2);//allow the cpu to switch to other tasks
}

Außerdem habe ich es noch mit dem fsbrowser Sketch probiert und mit WLED. Sowohl sound reactive als auch normal.

Ich werde morgen dennoch mal etwas weiter weg gehen vom Router. Außerdem werde ich es noch mit einer Powerbank probieren, denke dann kann man die Stromversorgung als ursache ganz ausschließen.

Mein Router ist einer von O2. o2 HomeBox
ESP ist momentan nur einer Verbunden.
Feste IP habe ich auch schon probiert.
WLED hat außerdem eine option um WIFI Sleep zu verhindern. Bringt aber nix.

Wie kann ich herausfinden ob er noch läuft? Wie gesagt, Flashen kann ich ihn ohne Probleme wenn er nicht mehr im Netz ist. Und die ip wir im Router weiterhin als verbunden angezeigt. Meistens zumindest.

Mir kommt es fast so vor als würde er in den sleep mode gehen. Ohne Befehl, einfach so. Aber das ist nur ein Eindruck.

Du schreibst doch, du versorgst ihn über USB. Dann müsstest du etwas im seriellen Monitor sehen. Meist bringt er da eine Meldung. Du kannst auch eine Heardbeat-Led einbauen, die ständig blinkt, ohne den Controller zu stören. Also ohne delay. Wenn die aufhört, ist der abgestürzt.
Und wenn in deinem Router nur einer (ESP) angemeldet ist, sollte das auch kein Problem sein.

Ich habe den von dir geposteten Sketch getestet.
Der ESP32 läuft jetzt seit ca. 20 Min. und hat keinen Aussetzer.
Ich habe die Website geprüft, sowie ihn öfter angepingt. Der funktioniert.

Somit muss es an deiner Hardware (ESP32 oder Router) liegen.

1 Like

Habe das mit der Heartbeat LED gemacht und folgenden Code eingefügt:

unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }

Die LED Blinkt weiter wenn der ESP32 nicht mehr erreichbar ist :roll_eyes:
Heißt also er ist nicht abgestürzt. Was dann? Warum ist er nicht mehr erreichbar? Was kann ich noch tun um den Fehler einzugrenzen?

Manchmal kommt vom HelloServer Scetch diese Meldungen im Debugging log:

20:07:32.888 -> [D][WiFiGeneric.cpp:374] _eventCallback(): Event: 5 - STA_DISCONNECTED
20:07:32.941 -> [W][WiFiGeneric.cpp:391] _eventCallback(): Reason: 6 - NOT_AUTHED
20:09:32.905 -> [D][WiFiGeneric.cpp:374] _eventCallback(): Event: 8 - STA_LOST_IP

Diese Meldungen kommen aber nicht immer. Warum disconnected das Modul? not_authed, warum?

KA...evtl. hilft dies hier weiter.