🛠 Publier des données en MQTT/HTTP via le Wi-Fi du GIGA R1
Objetivos
Conectar el GIGA R1 a Internet mediante su módulo Wi-Fi + Bluetooth LE integrado (Murata LBEE5KL1DX-883, antena externa). Implementará una solicitud HTTP robusta aplicando la solución documentada para el bloqueo TCP (error #937: leer todo el cuerpo de la respuesta, de lo contrario una de cada cinco conexiones falla con el error -3005) y evitará el bloqueo relacionado con un objeto WiFiClient global (error #753).
Material
- 1 placa Arduino GIGA R1 WiFi
- Una red Wi-Fi de 2,4 GHz con nombre de red (SSID) y contraseña
- Un PC con Arduino IDE y la biblioteca ArduinoHttpClient (Bibliotecas > Administrador de bibliotecas)
- Opcional: un broker MQTT público para probar la publicación
Código completo
// 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 reponse, sinon ~1 connexion sur 5 echoue (-3005)
while (client.available) Serial.write(client.read);
client.stop;
Serial.println("\n--- requete terminee ---");
delay(10000);
}
Para MQTT, reemplace la capa HttpClient por la biblioteca PubSubClient: client.connect("giga", "user", "pass") y luego client.publish("maison/temp", "21.5") hacia el puerto 1883 de su broker.
Verificación esperada
El Monitor serie muestra la dirección IP obtenida por DHCP, seguido del contenido HTML de la página recuperada cada 10 segundos, sin bloqueos de 30 segundos. En MQTT, el broker recibe el mensaje publicado en el tema elegido.
Errores frecuentes
> NO VERIFICADO: la sensibilidad y las bandas exactas del módulo 1DX en el GIGA (la ficha técnica de Murata no se ha desplegado en esta revisión); pruebe con su router.
- Cuerpo de la respuesta no vaciado: bloqueos aleatorios -3005 aproximadamente cada 5 conexiones (error #937, solución: siempre leer todo o espaciar las solicitudes).
WiFiClient wifi;declarado como global: bloqueo del sistema operativo documentado (error #753); declárelo dentro de la función.- Solo Wi-Fi de 5 GHz: el módulo 1DX funciona en las redes admitidas por el núcleo; verifique que el SSID sea visible.
- Firmware de radio dañado tras actualizaciones: el Wi-Fi se vuelve inutilizable (error #650); con el núcleo Zephyr, vuelva a ejecutar el sketch FlashFormat para restaurar el firmware del módulo 1DX.
- Nombre de red/contraseña con caracteres acentuados en el código fuente: fallo de autenticación.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.inoArduinobouton.inoArduinorespiration.inoArduinoanalogique.inoArduinodac-onde.inoArduinooled-i2c.inoArduino