🛠 Publier des données en MQTT/HTTP via le Wi-Fi du GIGA R1
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
- 1 carte Arduino GIGA R1 WiFi
- Un réseau Wi-Fi 2,4 GHz avec identifiant et mot de passe
- Un PC avec Arduino IDE et la bibliothèque ArduinoHttpClient (Bibliothèques > Gestionnaire)
- Optionnel : un courtier MQTT public pour tester la publication
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
- Corps de réponse non vidé : blocages aléatoires -3005 toutes les ~5 connexions (bogue #937, contournement : toujours tout lire ou espacer les requêtes).
WiFiClient wifi;déclaré en global : crash de l'OS documenté (bogue #753) ; déclarez-le dans la fonction.- Wi-Fi 5 GHz uniquement : le module 1DX fonctionne sur les réseaux pris en charge par le cœur ; vérifiez que le SSID est bien visible.
- Firmware radio corrompu après des mises à jour : le Wi-Fi devient inutilisable (bogue #650) ; avec le cœur Zephyr, relancez le sketch FlashFormat pour restaurer le firmware du module 1DX.
- Identifiant/mot de passe avec caractères accentués dans le code source : échec d'authentification.
Autres tutoriels pour cette carte
- Faire clignoter la LED de l'Arduino GIGA R1
- Bouton poussoir et console série sur le GIGA R1
- Potentiomètre et sortie DAC sur la prise audio du GIGA R1
- Piloter un micro-servo avec la PWM du GIGA R1
- Connecter un capteur I2C sur le GIGA R1
- Programmer les deux cœurs M7 et M4 du GIGA R1 et les faire communiquer
Exemples de code pour cette carte
clignotante.inoArduinobouton.inoArduinorespiration.inoArduinoanalogique.inoArduinodac-onde.inoArduinooled-i2c.inoArduino