🛠 Se connecter au Wi-Fi et interroger une API HTTP
Objetivos
Conectar la M5StickC Plus2 a una red Wi-Fi de 2,4 GHz (el chip ESP32-PICO-V3-02 no admite 5 GHz; la antena 3D de la v2 ofrece un mejor alcance que la v1) e interrogar una API HTTP mediante GET con la biblioteca HTTPClient, para luego mostrar un valor extraído del JSON.
Material
- 1× M5StickC Plus2 (v2)
- Red Wi-Fi de 2,4 GHz + acceso a una API HTTP simple (p. ej.
http://ip.jsontest.como un servidor local) - Arduino IDE / PlatformIO: M5Unified + HTTPClient (incluido en el paquete esp32)
Código completo
// Wi-Fi 2.4 GHz + requete 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("echec, 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 requete
if (WiFi.status != WL_CONNECTED) WiFi.reconnect;
vTaskDelay(50 / portTICK_PERIOD_MS);
}
Verificación esperada
Tras la conexión, se muestra la IP local; pulsar A lanza una petición GET y la IP pública devuelta por la API se muestra en verde. El monitor serie muestra el cuerpo JSON en bruto.
Errores frecuentes
- Router en 5 GHz: el chip solo funciona con 802.11 b/g/n de 2,4 GHz — la red parece «no encontrarse» aunque exista.
- Olvidar
WiFi.mode(WIFI_STA)antes deWiFi.begin: comportamiento aleatorio. - Utilizar el ADC2 (pines G25/G26) para lecturas analógicas una vez que el Wi-Fi está activo: en el ESP32 clásico, el ADC2 no está disponible cuando el Wi-Fi está funcionando — usar ADC1 (G32/G33/G36).
- URL
https://con HTTPClient simple: se necesita WiFiClientSecure, de lo contrario se produce un error de conexión. - Cadena SSID/contraseña con acentos o caracteres escapados mal escritos en el código.
- Congelar el bucle durante la petición GET: la interfaz deja de responder; para un producto, colocar la petición en una tarea de FreeRTOS.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
hello-stick.inoArduinoboutons.inoArduinobuzzer.inoArduinoinclinometre.inoArduinohorloge.inoArduinoir-tv.inoArduino