[gelöst]ESP32C3 Super Mini

Hallo zusammen,

ich habe ein Problem bei dem mir nicht mal die KI helfen kann. Ich habe mehrere ESP32C3 Super Mini im Einsatz. Die meisten sind über ESPHome eingebunden. Jetzt wollte ich einen Temperatursensor bauen der über das WLAN die Sensordaten an meinen MQTT Broker sendet. Leider bekomme ich keinen Zugang zu meinem WLAN. Das kuriose ist, dass die anderen ESPs bereits drin sind und wenn ich am Handy einen Hotspot auf mache verbindet sich der ESP auch. An den Einstellungen des Routers habe ich nichts geändert und die ESPs sind alle aus einer Bestellung alle gleich. Bei der Einbindung über ESPHome habe ich das selbe Problem.Ich habe bereits versucht mit den gängigen KIs eine Lösung zu finden aber ohne Erfolg. Hat jemand noch eine Idee?

@marcelbastler ,

:warning:
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.

Da kann man mal sehen, wie toll, ähhh schlau solche KI doch ist.
Ich tippe darauf, es liegt an Zeile 42.

Übersetzung:
Wenn Du uns nicht mehr Infos gibst können wird Dir nicht helfen.
Dein Problem ist, daß 3 funktionieren und ein 4-ter nicht.
Funktioniert der vierte wenn Du den Sketch eines der drei anderen draufspielst und den anderen abschaltest?
Wenn Ja hast Du einen Fehler im Sketch des vierten ESP.

Grüße Uwe

Wiki: 42 (Antwort)

Sorry. Ich war vorhin etwas durch den Wind, weshalb meine Infos etwas mager ausgefallen sind. Also ich versuche mal das Problem etwas ausführlicher zu beschreiben. Ich habe wie gesagt eine 5er Pack ESP32C3 Super Mini bestellt. Die ersten beiden konnte ich problemlos in mein WLAN und in mein bestehendes Home Assistant System einbinden. Dabei habe ich den ersten über ESP Home eingebunden und den zweiten als eigenständigen WLAN Sensor über MQTT in Home Assistant eingebunden. Als ich nun den dritten aus der Verpackung genommen habe und Ihn ebenfalls für den Einsatz als MQTT Sensor startklar machen wollte ging das Drama los. Mithilfe der KI habe ich dann irgendwann mal die Board und Chip Infos aus einem funktionierenden und einem (mittlerweile habe ich die restlichen alle ausprobiert) heruntergeladen um die zu vergleichen.

Hier die Ausgabe beim NICHT funktionierenden Board:

ESP32C3 Detaillierte Geräteinformation
------------------------------------
Chip Modell: ESP32-C3
Chip Revision: 4
CPU Frequenz: 160 MHz
Flash Größe: 4194304 Bytes
Flash Frequenz: 80000000 Hz
SDK Version: v5.4.1-1-g2f7dcd862a-dirty
Free Heap: 267596 Bytes

WiFi-Informationen:
MAC-Adresse: 00:00:00:00:00:00
WiFi-Modus: 0

Arduino-Framework-Informationen:
Arduino Version: 10819
ESP Arduino Version: 3.2.0
ESP-IDF Version: 5.4.1

Partitionsinfo (wenn verfügbar):
Sketch-Größe: 917744 Bytes
Freier Sketch-Speicher: 1310720 Bytes

Führe WLAN-Scan durch...
  1: ***** WLAN (-63 dBm) [Kanal: 6] [Verschlüsselung: 4]

Gerätediagnose abgeschlossen.

Hier die von einem funktionierenden:

ESP32C3 Detaillierte Geräteinformation
------------------------------------
Chip Modell: ESP32-C3
Chip Revision: 4
CPU Frequenz: 160 MHz
Flash Größe: 4194304 Bytes
Flash Frequenz: 80000000 Hz
SDK Version: v5.4.1-1-g2f7dcd862a-dirty
Free Heap: 267064 Bytes

WiFi-Informationen:
MAC-Adresse: 00:00:00:00:00:00
WiFi-Modus: 0

Arduino-Framework-Informationen:
Arduino Version: 10819
ESP Arduino Version: 3.2.0
ESP-IDF Version: 5.4.1

Partitionsinfo (wenn verfügbar):
Sketch-Größe: 917744 Bytes
Freier Sketch-Speicher: 1310720 Bytes

Führe WLAN-Scan durch...
  1: ***** WLAN (-64 dBm) [Kanal: 6] [Verschlüsselung: 4]
 
Gerätediagnose abgeschlossen.

Danach habe ich folgenden (von der KI generierten) Sketch hochgeladen um detailierte Infos über den Fehler zu bekommen:

#include <WiFi.h>
#include <esp_wifi.h>

const char* ssid = "***** WLAN";  // Ihr WLAN-Name
const char* password = "******";  // Ihr WLAN-Passwort

void setup() {
  Serial.begin(115200);
  delay(1000);
  
  Serial.println("\nESP32C3 WiFi-Verbindungstest mit alternativen Authentifizierungseinstellungen");
  Serial.println("---------------------------------------------------------------------");
  
  // Vollständiges Reset des WiFi
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);
  delay(1000);
  
  // WiFi-Modus setzen
  WiFi.mode(WIFI_STA);
  delay(500);
  
  // MAC-Adresse prüfen
  String mac = WiFi.macAddress();
  Serial.print("MAC-Adresse: ");
  Serial.println(mac);
  
  // WiFi-Konfiguration mit niedrigerem Sicherheitsniveau versuchen
  Serial.println("\nVerbindungsversuch 1: Standard WPA/WPA2-PSK");
  WiFi.begin(ssid, password);
  
  int attempt = 0;
  Serial.print("Verbinde");
  while (WiFi.status() != WL_CONNECTED && attempt < 30) {
    delay(500);
    Serial.print(".");
    attempt++;
  }
  Serial.println();
  
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("Verbindung erfolgreich!");
    reportSuccess();
  } else {
    Serial.println("Verbindung fehlgeschlagen");
    
    // Versuch 2: Alternative Verbindungsmethode
    Serial.println("\nVerbindungsversuch 2: Alternativ mit PMF deaktiviert");
    WiFi.disconnect(true);
    delay(1000);
    
    // WiFi-Konfiguration mit deaktiviertem PMF (Protected Management Frames)
    // Dies kann bei einigen WPA2/WPA3-Kombinationen helfen
    wifi_config_t conf;
    memset(&conf, 0, sizeof(wifi_config_t));
    strcpy((char*)conf.sta.ssid, ssid);
    strcpy((char*)conf.sta.password, password);
    conf.sta.pmf_cfg.capable = false;
    conf.sta.pmf_cfg.required = false;
    
    esp_wifi_set_config(WIFI_IF_STA, &conf);
    esp_wifi_connect();
    
    attempt = 0;
    Serial.print("Verbinde");
    while (WiFi.status() != WL_CONNECTED && attempt < 30) {
      delay(500);
      Serial.print(".");
      attempt++;
    }
    Serial.println();
    
    if (WiFi.status() == WL_CONNECTED) {
      Serial.println("Verbindung erfolgreich mit alternativer Methode!");
      reportSuccess();
    } else {
      Serial.println("Auch alternative Verbindung fehlgeschlagen");
      Serial.printf("WiFi-Status: %d\n", WiFi.status());
    }
  }
}

void reportSuccess() {
  Serial.printf("IP-Adresse: %s\n", WiFi.localIP().toString().c_str());
  Serial.printf("Gateway: %s\n", WiFi.gatewayIP().toString().c_str());
  Serial.printf("DNS: %s\n", WiFi.dnsIP().toString().c_str());
  Serial.printf("Subnet: %s\n", WiFi.subnetMask().toString().c_str());
  Serial.printf("RSSI: %d dBm\n", WiFi.RSSI());
  Serial.printf("Kanal: %d\n", WiFi.channel());
}

void loop() {
  delay(10000);
  
  if (WiFi.status() == WL_CONNECTED) {
    Serial.printf("Verbindung stabil, RSSI: %d dBm\n", WiFi.RSSI());
  } else {
    Serial.printf("Verbindungsstatus: %d\n", WiFi.status());
  }
}

Jetzt spinn ich komplett. Während ich hier schreibe habe ich die 3 Boards nochmal getestet und alle verbinden sich. Ich dreh durch.

Wozu hier diese 2 Libraries ?

#include <WiFi.h>
#include <esp_wifi.h>

Die erste reicht völlig.

Das kann ich leider nicht sagen.

Das ist das Problem, wenn man auf die unwissende KI hört.
Mein Tipp: Einfach lernen.
Nimm den 2. raus und teste.

Bislang haben wir damit in diesem Forum keine besonders positiven Erfahrungen gemacht, weil der Fragesteller ahnungslos ist und die KI ihre Quellen nicht preisgibt. Das sind schlechte Voraussetzungen, um helfen zu können. Andererseits enthält Dein Programm ein paar schöne Ideen.

Hier siehst Du eine Begrenzung auf 30 Versuche. Bei mir genügen weniger als 5, aber es waren vereinzelt auch schon mal deutlich mehr, das hängt von der Belegung der Funkfrequenzen ab. Eventuell ist es hilfreich, Du läßt Dir mal ein paar Versuchszahlen anzeigen. Außerdem könntest Du den zweiten, mir bislang unbekannten Weg bewußt nutzen, um zu testen, ob er überhaupt zum Erfolg führt. Ich werde das mit meiner Fritz!Box mal tun. Versuch macht kluch!


Inzwischen getestet mit Verbindungsversuch 1:

Verbindungsversuch 1: Standard WPA/WPA2-PSK
Verbinde..
Verbindung erfolgreich!
IP-Adresse: 192.168.178.27
Gateway: 192.168.178.1
DNS: 192.168.178.1
Subnet: 255.255.255.0
RSSI: -24 dBm
Kanal: 6
Verbindung stabil, RSSI: -29 dBm
Verbindung stabil, RSSI: -30 dBm
Verbindung stabil, RSSI: -30 dBm

Verbindungsversuch 1 komentiert:

Verbindungsversuch 1: Standard WPA/WPA2-PSK
Verbinde
Verbindung fehlgeschlagen

Verbindungsversuch 2: Alternativ mit PMF deaktiviert
Verbinde..............................
Auch alternative Verbindung fehlgeschlagen
WiFi-Status: 255
Verbindungsstatus: 255
Verbindungsstatus: 255
Verbindungsstatus: 255

Da scheint die Alternative keine bei mir funktionierende zu sein.


Noch ein Tipp: Wenn Deine ESPs 24/7 laufen, sollte die WiFi-Verbindung in Zeitintervallen überprüft und bei Nichtverbindung neu aufgebaut werden. Die WiFi-Verbindungsaufnahme gehört daher in eine Funktion, die auch von loop() aufgerufen wird.

WiFi-Verbindungsfunktion
void routerVerbindung()
{
  unsigned long connDauer = 20000;
  unsigned long connTimer = millis();

  if (WiFi.status() != WL_CONNECTED)
  {
    DEBUG_F("Verbindung zum Router ");
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    WiFi.begin(STA_SSID, STA_PASSWORD);
    while (WiFi.status() != WL_CONNECTED && (millis() - connTimer < connDauer)) {
      digitalWrite(LED_BUILTIN, 1);
      delay(250);
      digitalWrite(LED_BUILTIN, 0);
      delay(250);
      DEBUG_F(".");
    }
    if (WiFi.status() == WL_CONNECTED)
    {
      WiFi.setAutoReconnect(true);
      WiFi.persistent(false);  // true = default, bei reboot werden ssid+pass in den Flash geschrieben, killt den freien Speicher!
      DEBUG_L("\nVerbunden mit: " + WiFi.SSID());
      DEBUG_L("Esp32 IP: " + WiFi.localIP().toString() + "\n");
    } else {
      DEBUG_L(" nicht hergestellt");
    }
  }
}

Habe mal die Gelegenheit genutzt, meine KI zum Thema KI Einsatz zu befragen:

Die Antwort:

Um KI Ergebnisse bewerten zu können, muss man selber programmieren können, und zusätzlich lernen, wie man sinnvoll KI einsetzt.

Ist also kein Mittelweg, sondern eigentlich ein doppelter. Und wird auf Dauer normales Arbeiten, sogar produktiver als heute.

Ist wie mit dem Schreiben überhaupt: Jeder der dazu heute üblicherweise eine Tastatuur benutzt, könnte es prinzipiell auch ohne, mit der Hand.
Und sich blind auf SpeechToText verlassen (ohne lesen zukönnen) geht auch noch nicht immer.

In deinen Geräteinformationen ist eine für mich komische MAC-Adresse zu sehen.
Siehst du die auch in der Fritzbox? :thinking:
Ich denke die Fritzbox zickt rum wenn sich mehrere Geräte mit der gleichen MAC-Adresse anmelden wollen.

grafik

Ich habe hier ja eine ganz schöne Debatte zum Thema KI ausgelöst. Zuerst einmal möchte ich mit dem Vorurteil aufräumen, ich sei "ahnungslos". Der Grund warum ich die KI nutze ist ein ganz anderer aber den interessiert ja anscheinend niemanden.

Mittlerweile nutze ich die KI sehr oft um "schneller " zu einem Ergebnis zu kommen. Dabei kenne ich mich zwar grundsätzlich mit der Programmierung von Microcontrollern aus, bin aber kein (und muss es auch nicht sein) Experte auf dem Gebiet. Weiterhin hat es sich in der Vergangenheit gezeigt, dass in Foren gern mal die "Belehrungskeule" ausgepackt wird. So bekam ich in der Vergangeheit immer wieder Aussagen wie:

  • "Lern erstmal die Grundlagen!"
  • "Das ist ja Basic"
  • "Wenn man keine Ahnung hat ..."
  • u.v.m.

Bei solchen Kommentaren, die jeder Grundlage entbehren, spreche ich lieber mit der KI denn die nimmt sich wenigstens Zeit mir etwas zu erklären. Ich kenne die Grenzen der KI sehr gut und gehe immer systematisch vor. Nichts desto trotz habe ich mit der KI sehr viel über die Programmierung gelernt und Recherchen zu etwaigen Problemstellungen gehen wesentlich effizienter.

Sollte sich jemand an meiner Vorgehensweise gestört fühlen oder gar von meiner Inkompetenz beleidigt fühlen steht es jedem frei meine Fragen zu ignorieren.

Das ist mir auch schon aufgefallen. In der Seriellen Ausgabe wurde die MAC Adresse nicht angezeigt aber der ESP hat sich trotzdem verbunden. In einem anderen Sketch sowie in der Fritzbox wird die MAC Adresse korrekt angezeigt.

Eine KI nimmt Ihr Wissen von den Daten mit der sie trainiert wurde. Sind die Daten nicht genügend um das gestellte Problem zu lösen erfindet sie schon mal was.
Für eine Ki benutzer der keine oder wenig Programmverständnis hat, ist es nicht möglich zu verstehen, ob der Sketch das macht, was er soll oder ob er fehlerhaft, oder unvollständig ist.

Grüße Uwe

Dann solltest du hier aber auch etwas mehr drüber Wissen !

Ich danke dir für diese Gnade!

Übrigens:
Früher mussten wie hier nur gegen falsche Annahmen und gegen idiotische Tutorials kämpfen.
Heute müssen die Helfer gegen Maschinen antreten.

Früher war alles besser, sogar die Zukunft.

Warum werde ich für die Taten, mir völlig unbekannter Menschen, verantwortlich gemacht?

Bitte vergleiche nicht dieses Forum mit anderen, weniger guten.

Andererseits bin ich der Meinung daß das Forum helfen soll, daß jeder sein Projekt versteht und fertigstellen kann. Arbeit für anderen machen (zB Sketche schreiben) ist nicht unser Ziel.

Grüße Uwe

Wohl war! Da Du Dein Thema als "gelöst" gekennzeichnet hast, fühle ich mich so frei, noch ein paar Gedanken zu ergänzen :slightly_smiling_face:

Neben den Themen, die sich mit dem Programmieren konkreter Aufgaben beschäftigen, gibt es das Thema im Hintergrund, wie man mit bestimmten Situationen hier im Forum umgeht. Da geht es um Umgangsformen, wie geht man mit sicherheitsrelevanten Themen um oder eben auch, wie verhält man sich hinsichtlich KI. All diese Fragen werden nicht generell besprochen, sondern poppen immer dann auf, wenn es in einem Thema gerade den Antwortenden zu passen scheint. Für den Fragesteller wirkt das vermutlich irritierend.

Sollte ich Dich angegriffen haben, dann mit der Absicht, eine Antwort wie in #14 zu provozieren, weil ich wissen möchte, wie Du tickst. Ganz offensichtlich hast Du Dir mehr Gedanken gemacht als diejenigen, die ihr Thema sinngemäß mit "ich habe keine Ahnung, aber was die KI antwortet, funktioniert auch nicht" anfangen. Deine Antwort in #8 klang so und löste bei mir ein Gefühl "jetzt sollst Du also wieder den Müll, den die KI generiert hat, aufräumen" aus. Das enpfinde ich nicht als motivierend.

Vor ein paar Jahren gab es einen Film, wo Computern die Weltherrschaft übergeben wurde, diese die Menschen als Quell allen Übels erkannten und zu vernichten suchten. Eventuell wirkt dieser Film noch nach.

Ich bin in diesem Forum aktiv, um etwas zu lernen, und sei es über KI :wink:

Konkret würde mich in Deinem Programm in #8 die alternative Verbindungsmethode interessieren. Funktioniert diese bei Dir, ist sie also sinnvoll?