Der Fehler, der erst im Betrieb auftaucht
Du baust einen Analogsensor auf, misst am Schreibtisch, alles stimmt. Dann schaltest du das WLAN ein, damit die Werte irgendwohin gehen — und die Messwerte sind Unsinn oder bleiben ganz aus.
Der Grund ist eine Eigenheit, die man nur kennt oder eben nicht: Der zweite Analog-Digital-Wandler wird vom WLAN mitbenutzt.
Der klassische ESP32 hat zwei Wandler. ADC1 gehört dir allein. ADC2 teilt sich der Funk mit dir — und wenn WLAN läuft, hat der Funk Vorrang.
Die ESP-IDF-Dokumentation sagt dazu schlicht: „ADC2 is also used by Wi-Fi." Der Treiber schützt zwar davor, dass beide gleichzeitig zugreifen, aber das heisst für dich nur: Deine Messung schlägt fehl, statt falsche Werte zu liefern. Messen kannst du trotzdem nicht.
Ein Analogeingang, der auch bei aktivem WLAN messen soll, gehört an ADC1.
Das ist eine Entscheidung, die beim Verdrahten fällt, nicht im Programm.
Welcher Pin an welchem Wandler hängt
ESP32 (klassisch)
| Wandler | Kanäle | Pins |
|---|---|---|
| ADC1 — frei | CH0 … CH7 | GPIO36, 37, 38, 39, 32, 33, 34, 35 |
| ADC2 — mit WLAN geteilt | CH0 … CH9 | GPIO4, 0, 2, 15, 13, 12, 14, 27, 25, 26 |
Die Pins sind in Kanalreihenfolge aufgeführt: ADC1_CH0 liegt auf GPIO36, ADC1_CH4 auf GPIO32.
Zwei Dinge fallen an dieser Tabelle auf. Erstens: ADC1 ist genau die Gruppe GPIO32 bis GPIO39 — also unter anderem die sechs nur-Eingang-Pins aus dem letzten Modul. Diese Pins sind zum Messen gemacht. Zweitens: In ADC2 stecken vier Strapping-Pins (GPIO0, 2, 12, 15). Diese Kanäle sind also gleich doppelt heikel.
ESP32-S3
| Wandler | Pins |
|---|---|
| ADC1 | GPIO1 bis GPIO10 |
| ADC2 | GPIO11 bis GPIO20 |
Auch hier gilt die WLAN-Einschränkung für ADC2. Beachte, dass GPIO19 und GPIO20 gleichzeitig die USB-Pins sind.
ESP32-C6
| Wandler | Pins |
|---|---|
| ADC1 | GPIO0 bis GPIO6 |
Der C6 hat gar kein ADC2. Damit entfällt das ganze Problem — dafür gibt es nur sieben Analogkanäle, und sie überschneiden sich mit den Strapping-Pins GPIO4 und GPIO5 sowie den JTAG-Pins GPIO4 bis GPIO7.
Das ist ein Punkt für die Chipauswahl: Der C6 hat kein WLAN-Problem beim Messen, aber deutlich weniger Auswahl.
Merkhilfe
ADC1 zuerst. Wenn du beim Planen einen Analogeingang brauchst, nimm einen ADC1-Kanal, auch wenn gerade kein WLAN vorgesehen ist. Es kommt öfter WLAN dazu als weg.
Und noch einmal, weil es der häufigste Übertragungsfehler ist: Diese Pinlisten gelten je Chip. GPIO32 ist beim klassischen ESP32 ein ADC1-Kanal. Beim S3 ist GPIO32 ein Flash-Pin. Beim C6 gibt es GPIO32 gar nicht.
Kurze Selbstkontrolle
Zählt nicht — nur zum Prüfen, ob es angekommen ist.
1.Dein Analogsensor an GPIO25 eines klassischen ESP32 liefert korrekte Werte — bis du WLAN einschaltest. Warum?
2.Warum stellt sich dieselbe Frage beim ESP32-C6 nicht?
Quellen
- ESP-IDF Programming Guide, ADC Oneshot Mode Driver, Abschnitt „Hardware Limitations" — „ADC2 is also used by Wi-Fi."
- ESP-IDF Programming Guide, GPIO & RTC GPIO (ESP32) — ADC2-Pins sind bei aktivem WLAN nicht verwendbar
- ESP32 Series Datasheet v5.2, Appendix „IO_MUX" — Zuordnung der ADC-Kanäle zu GPIO
- ESP32-S3 Series Datasheet v2.2, Tabelle 2-8 „Analog Functions" — ADC1 auf GPIO1–10, ADC2 auf GPIO11–20
- ESP32-C6 Series Datasheet v1.5, Tabelle 2-9 „Analog Functions" — nur ADC1, Kanäle CH0–CH6 auf GPIO0–6
Stand geprüft am 3. August 2026.