🛠 Se connecter au Wi-Fi et interroger une API HTTP

M5StickC Plus2 (M5Stack) — kit vestible "stick" con ESP32-PICO-V3-02 (SKU K016-P2) · intermediaire · Schéma : IMG-m5stack-stick-c-plus-2-intermediaire-3-m5stick-c2-wifi-http.svg — M5StickC Plus2 reliée par une onde Wi-Fi 2,4 GHz à un routeur puis à un serveur HTTP, l'écran affichant la température récupérée en JSON.

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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales