🛠 Publier des données en MQTT/HTTP via le Wi-Fi du GIGA R1

Arduino GIGA R1 · intermediaire · Schéma : IMG-giga-r1-i3-1-mqtt-wifi.svg — Le module Wi-Fi Murata 1DX embarqué du GIGA R1 relié sans fil à un routeur, puis à un courtier MQTT et un serveur HTTP sur Internet.

Objectifs

Connecter le GIGA R1 à Internet grâce à son module Wi-Fi + Bluetooth LE embarqué (Murata LBEE5KL1DX-883, antenne externe). Vous mettrez en place une requête HTTP robuste en appliquant le contournement documenté du blocage TCP (bogue #937 : lire tout le corps de réponse, sinon une connexion sur cinq échoue en -3005) et vous éviterez le plantage lié à un objet WiFiClient global (bogue #753).

Matériel

Code complet

// GIGA R1 WiFi — HTTP GET robuste (contournement du blocage TCP, bogue #937)
#include <Arduino.h>
#include <WiFi.h>
#include <ArduinoHttpClient.h>

const char* SSID = "votre-ssid";
const char* PASS = "votre-pass";

void connexionWifi {
  WiFi.begin(SSID, PASS);
  unsigned long debut = millis;
  while (WiFi.status != WL_CONNECTED && millis - debut < 20000) delay(200);
  if (WiFi.status == WL_CONNECTED) Serial.println(WiFi.localIP);
}

void setup {
  Serial.begin(115200);
  connexionWifi;
}

void loop {
  // Client en variable locale : un objet global a provoque un crash de l'OS (bogue #753)
  WiFiClient wifi;
  HttpClient client(wifi, "example.com", 80);
  client.get("/");
  // Vider entierement le corps de réponse, sinon ~1 connexion sur 5 échoue (-3005)
  while (client.available) Serial.write(client.read);
  client.stop;
  Serial.println("\n--- requête terminee ---");
  delay(10000);
}

Pour MQTT, remplacez la couche HttpClient par la bibliothèque PubSubClient : client.connect("giga", "user", "pass") puis client.publish("maison/temp", "21.5") vers le port 1883 de votre courtier.

Vérification attendue

Le Moniteur série affiche l'adresse IP obtenue par DHCP, puis le contenu HTML de la page récupérée toutes les 10 secondes, sans blocage de 30 secondes. En MQTT, le courtier reçoit le message publié sur le sujet choisi.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels