🛠 ADC et bruit Wi-Fi : le moyennage qui sauve
Objetivos
En el ESP32-C3, el ADC1 ocupa los GPIO0-4 y el ADC2 los GPIO2-6 — con la misma regla que en el ESP32: el ADC2 no está disponible cuando el Wi-Fi está funcionando. Incluso en el ADC1, las ráfagas de la radio inyectan ruido en las mediciones (picos de corriente de emisión). Usted evidenciará este ruido y lo neutralizará mediante un promedio en ventana.
Material
- 1 placa ESP32-C3
- 1 fuente de tensión estable (salida de divisor o referencia) en GPIO3 (ADC1_CH3)
- Acceso Wi-Fi 2,4 GHz
Código completo
#include <WiFi.h>
const uint8_t CAPTEUR = 3; // GPIO3 = ADC1_CH3 (ADC1 sur C3)
const uint8_t N = 64;
uint32_t moyenneFenetre {
uint64_t somme = 0;
for (uint8_t i = 0; i < N; i++) somme += analogRead(CAPTEUR);
return (uint32_t)(somme / N);
}
void setup {
Serial.begin(115200);
analogSetPinAttenuation(CAPTEUR, ADC_11db);
Serial.printf("1 echantillon : %u | moyenne %u : %u\n",
analogRead(CAPTEUR), N, moyenneFenetre);
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("Wi-Fi : %s\n",
WiFi.status == WL_CONNECTED ? "connecte" : "echec");
}
void loop {
uint32_t brut = analogRead(CAPTEUR);
uint32_t lisse = moyenneFenetre;
Serial.printf("brut %u | moyenne %u echantillons %u\n", brut, N, lisse);
delay(500);
}
Verificación esperada
Sin Wi-Fi, la lectura bruta ya es estable. Una vez conectado (y más durante una transferencia), el valor bruto comienza a fluctuar decenas de puntos al ritmo de las ráfagas, mientras que el promedio de 64 muestras permanece casi fijo: la relación señal/ruido mejora en un factor de raíz de N, es decir, aproximadamente 8 en este caso.
Errores frecuentes
- Conectar la medición en GPIO2 o GPIO4 (ADC2) y culpar al ruido: con el Wi-Fi activo, la lectura falla primero debido a la coexistencia ADC2/Wi-Fi.
- Promediar sin filtrar los valores atípicos: un único pico de radio puede distorsionar un promedio pequeño; prefiera una mediana o un filtro deslizante.
- Olvidar la primera muestra después de despertar: siempre descarte una o dos muestras antes de la medición útil.
- Esperar una estabilidad de 12 bits: la parte baja del ADC del ESP32-C3 es ruidosa por naturaleza, apunte a 9-10 bits utilizables y calibre en tensión real.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino