🛠 ADC2, le piège quand le Wi-Fi est actif

ESP32 (original, classe ESP32-WROOM-32) · avance · Schéma : IMG-esp32-avance-3-adc2-piege-wifi-calibration.svg — Deux traces d'oscilloscope : l'ADC1 suit le potentiomètre, l'ADC2 reste à plat dès que le Wi-Fi démarre

Objectifs

Démontrer de visu le piège documenté : l'ADC2 de l'ESP32 (GPIO2, 4, 12-15, 17-19) est inutilisable dès que le Wi-Fi tourne, car le driver radio se le réserve. Vous comparerez les lectures ADC1 et ADC2 avant/après connexion Wi-Fi, puis aborderez la calibration de l'ADC 12 bits (atténuation, variabilité inter-cartes, eFuse).

Matériel

Code complet

#include <WiFi.h>

const uint8_t PIN_ADC2 = 4;    // ADC2_CH0
const uint8_t PIN_ADC1 = 34;   // ADC1_CH6, entrée seule

void setup {
  Serial.begin(115200);
  analogSetPinAttenuation(PIN_ADC2, ADC_11db);
  analogSetPinAttenuation(PIN_ADC1, ADC_11db);
  Serial.println(F("-- Avant Wi-Fi --"));
  Serial.printf("ADC2 GPIO4 : %d | ADC1 GPIO34 : %d\n",
                analogRead(PIN_ADC2), analogRead(PIN_ADC1));

  WiFi.mode(WIFI_STA);
  WiFi.begin("MON_SSID", "MA_CLE");
  uint32_t t0 = millis;
  while (WiFi.status != WL_CONNECTED && millis - t0 < 10000) delay(200);
  Serial.printf("Connecte : %s\n",
                WiFi.status == WL_CONNECTED ? "oui" : "non");
}

void loop {
  Serial.printf("Wi-Fi actif -> ADC2 : %d | ADC1 : %d\n",
                analogRead(PIN_ADC2), analogRead(PIN_ADC1));
  delay(1000);
}

Vérification attendue

Avant Wi-Fi, les deux lectures suivent les potentiomètrès. Une fois connecté, la lecture ADC2 se fige (0 ou valeur fantaisiste fixe) pendant que l'ADC1 continue de varier normalement : la coexistence ADC2/Wi-Fi est bien documentée, pas négociable.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels