ESP-Baudrate-Suche: vor jedem AT leere Zeile senden, README ergaenzt

Zeichensalat vom Uno-Reset oder von Versuchen mit falscher Baudrate landete
vor dem naechsten AT (ESP antwortete ERROR statt OK -> sporadisch E1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phase1Deliverables
Matias Mas Viehl 2026-10-28 17:17:34 +01:00
parent 604a24086c
commit 74104047c9
2 changed files with 19 additions and 0 deletions

View File

@ -99,3 +99,18 @@ Der 3,3-V-Pin des Uno liefert nur ca. 150 mA, der ESP-01 braucht beim Start kurz
| WLAN Fehler E2 | ESP antwortet, Station-Modus nicht setzbar |
| WLAN Fehler E3 | Hotspot nicht erreichbar: SSID/Passwort, „Maximale Kompatibilität“ aus, Hotspot aus |
| CCS811 Fehler! | Sensor antwortet nicht am I2C: Verkabelung prüfen, `firmware/ccs811_diagnose` zeigt den genauen Schritt |
### „Mal geht's, mal nicht“ (E1 trotz richtiger Verkabelung)
**Beobachtung:** Bei korrekter, gekreuzter Verkabelung kam trotzdem manchmal „WLAN Fehler E1“. Zuverlässig lief es nur mit diesem Ablauf:
1. ESP **gerade** anschließen (TX → Pin 1, RX → Pin 0), Reset am Haupt-Uno
2. ESP **gekreuzt** anschließen (TX → Pin 0, RX → Pin 1), nochmal Reset
**Vermutete Ursache:** Der Sketch sucht beim Start die Baudrate des ESP (115200, 9600, 57600, 38400). Jeder Versuch mit falscher Baudrate – und auch der Uno-Reset selbst, bei dem die TX-Leitung kurz offen ist – kommt beim ESP als Zeichensalat an. Der ESP hängt diesen vor den nächsten Befehl (`x#~AT` statt `AT`), antwortet `ERROR` statt `OK`, und die Suche dreht sich im Kreis.
**Fix in der Firmware:** `espBaudrateFinden()` in `esp_wifi.h` schickt jetzt vor jedem `AT` eine leere Zeile. Damit schließt der ESP den Zeichensalat als eigene (ungültige) Zeile ab, und das folgende `AT` kommt sauber an. Damit sollte einmal gekreuzt anschließen + Reset reichen. Falls nicht, hilft weiterhin der Ablauf oben als Notlösung.
Weitere Ursachen für wechselndes Verhalten:
- **Strom am Limit:** Ein Elko (100–470 µF) direkt zwischen VCC und GND am ESP fängt die Stromspitzen ab.
- **iPhone-Hotspot versteckt sich** nach einer Weile ohne verbundenes Gerät (dann E3): vor dem Reset Einstellungen → Persönlicher Hotspot öffnen.
- **Wackelkontakte** an GND, TX oder RX im Steckbrett.

View File

@ -57,6 +57,10 @@ bool espBaudrateFinden() {
for (uint8_t runde = 0; runde < 2; runde++) {
for (uint8_t i = 0; i < 4; i++) {
espSerial.begin(raten[i]);
// Leere Zeile zuerst: schliesst Zeichensalat ab, den der ESP beim Uno-Reset oder durch
// einen Versuch mit falscher Baudrate empfangen hat. Sonst wird daraus z. B. "x#~AT" -> ERROR.
espSerial.print(F("\r\n"));
delay(100);
if (espBefehl(F("AT"), "OK", 1000)) {
return true;
}