Objectifs
- Utiliser le moniteur série (Serial.begin(115200)) comme console de debug de l'M5Stack.
- Lire une entrée analogique sur le connecteur Grove PORT.B (noir), relié à G26/G36 — des canaux ADC1, utilisables même quand le Wi-Fi est actif (contrairement à l'ADC2).
- Afficher la valeur brute (0-4095) à la fois sur le port série et sur l'écran.
Matériel
- 1 M5Stack Core + câble USB-C.
- 1 capteur analogique Grove (potentiomètre, capteur de lumière, etc.) sur PORT.B, ou simplement une broche G36 reliée via un potentiomètre à 3,3 V et GND.
- Attention : logique 3,3 V — ne jamais injecter 5 V sur une broche analogique.
Code complet
#include <M5Unified.h>
const int PIN_CAPTEUR = 36; // PORT.B (Grove noir), ADC1_CH0
uint16_t moyenne {
uint32_t s = 0;
for (int i = 0; i < 16; i++) { s += analogRead(PIN_CAPTEUR); delay(2); }
return s / 16;
}
void setup {
Serial.begin(115200);
auto cfg = M5.config;
M5.begin(cfg);
analogReadResolution(12); // 0..4095
M5.Display.setTextSize(2);
Serial.println("Console série M5Stack — 115200");
}
void loop {
uint16_t v = moyenne;
float mv = v * 3300.0f / 4095.0f; // ADC1 non linéaire en bout de plage
Serial.printf("brut=%u ~%u mV\n", v, (unsigned)mv);
M5.Display.fillRect(0, 40, 320, 60, TFT_BLACK);
M5.Display.setCursor(10, 45);
M5.Display.printf("ADC G36 : %u", v);
delay(250);
}
Vérification attendue
- Le moniteur série (115200) affiche deux nouvelles lignes par seconde avec une valeur brute qui bouge quand on sollicite le capteur (lumière, potentiomètre).
- L'écran affiche la même valeur en gros caractères.
- À la masse (broche déconnectée ou reliée à GND), la valeur chute près de 0 ; près de 3,3 V elle dépasse 3000.
Erreurs fréquentes
- Mauvais débit série : le pont USB-serial (CP2104 ou CH9102F) fonctionne à 115200 ; un débit différent affiche du bruit.
- Choisir une broche ADC2 (par ex. G25, partagée avec le haut-parleur) : l'ADC2 est indisponible dès que le Wi-Fi tourne, et G25 est déjà pris par le HP.
- Attendre une précision d'encodeur : l'ADC de l'ESP32 classique est non linéaire ; d'où la moyenne sur 16 lectures.
- Oublier delay ou vTaskDelay dans loop : le watchdog et le Wi-Fi apprécient mal les boucles bloquantes.
- Câbler 5 V sur G36 : l'ESP32 est en 3,3 V maximum.