🛠 Se connecter au Wi-Fi et interroger une API HTTP
Objectifs
Connecter la M5StickC Plus2 à un réseau Wi-Fi 2,4 GHz (la puce ESP32-PICO-V3-02 n'accepte pas le 5 GHz ; l'antenne 3D de la v2 offre une meilleure portée que la v1) et interroger une API HTTP en GET avec la bibliothèque HTTPClient, puis afficher une valeur extraite du JSON.
Matériel
- 1× M5StickC Plus2 (v2)
- Réseau Wi-Fi 2,4 GHz + accès à une API HTTP simple (ex.
http://ip.jsontest.comou un serveur local) - Arduino IDE / PlatformIO : M5Unified + HTTPClient (inclus dans le paquet esp32)
Code complet
// Wi-Fi 2.4 GHz + requête HTTP GET (reconnexion auto par minute)
#include <M5Unified.h>
#include <WiFi.h>
#include <HTTPClient.h>
const char* SSID = "VOTRE_WIFI_24GHZ";
const char* PASS = "motdepasse";
const char* URL = "http://ip.jsontest.com/"; // renvoie {"ip": "..."}
void setup {
auto cfg = M5.config;
M5.begin(cfg);
Serial.begin(115200);
M5.Display.setRotation(1);
M5.Display.setTextSize(1);
M5.Display.setTextColor(TFT_WHITE, TFT_BLACK);
M5.Display.printf("WiFi %s...\n", SSID);
WiFi.mode(WIFI_STA); // station uniquement
WiFi.begin(SSID, PASS);
while (WiFi.waitForConnectResult != WL_CONNECTED) {
M5.Display.println("échec, nouvelle tentative...");
delay(3000);
}
M5.Display.printf("IP: %s\n", WiFi.localIP.toString.c_str);
}
void boucleHttp {
HTTPClient http;
http.begin(URL);
int code = http.GET;
M5.Display.setCursor(0, 40);
if (code == HTTP_CODE_OK) {
String corps = http.getString;
int i = corps.indexOf("\"ip\": \"") + 7; // extraction JSON maison
String ip = (i > 6) ? corps.substring(i, corps.indexOf('"', i)) : "?";
M5.Display.setTextColor(TFT_GREEN, TFT_BLACK);
M5.Display.printf("IP publique: %s", ip.c_str);
Serial.println(corps);
} else {
M5.Display.setTextColor(TFT_RED, TFT_BLACK);
M5.Display.printf("HTTP erreur %d", code);
}
http.end;
}
void loop {
M5.update;
if (M5.BtnA.wasPressed) boucleHttp; // A = relancer une requête
if (WiFi.status != WL_CONNECTED) WiFi.reconnect;
vTaskDelay(50 / portTICK_PERIOD_MS);
}
Vérification attendue
Après connexion, l'IP locale s'affiche ; appuyer sur A lance un GET et l'IP publique renvoyée par l'API s'affiche en vert. Le moniteur série montre le corps JSON brut.
Erreurs fréquentes
- Router en 5 GHz : la puce ne fait que du 802.11 b/g/n 2,4 GHz — le réseau semble « introuvable » alors qu'il existe.
- Oublier
WiFi.mode(WIFI_STA)avantWiFi.begin: comportement aléatoire. - Utiliser l'ADC2 (broches G25/G26) pour de l'analogique une fois le Wi-Fi actif : sur l'ESP32 classique, l'ADC2 est indisponible quand le Wi-Fi tourne — utiliser ADC1 (G32/G33/G36).
- URL
https://avec HTTPClient simple : il faut WiFiClientSecure, sinon erreur de connexion. - Chaîne SSID/mot de passe avec accents ou caractères échappés mal écrits dans le code.
- Geler la boucle pendant le GET : l'interface ne répond plus ; pour un produit, mettre la requête dans une tâche FreeRTOS.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
hello-stick.inoArduinoboutons.inoArduinobuzzer.inoArduinoinclinometre.inoArduinohorloge.inoArduinoir-tv.inoArduino