🛠 Client HTTP : récupérer une page en GET
Objectifs
Connecter la GIGA R1 WiFi à un réseau WPA2 en mode station, puis envoyer une requête HTTP GET brute avec WiFiClient et lire la réponse. Vous apprendrez surtout le réflexe propre à cette carte : toujours vider intégralement le corps de la réponse TCP, car sur le core mbed des corps TCP non lus empoisonnent les connexions suivantes (issue ArduinoCore-mbed #937).
Matériel
- Carte Arduino GIGA R1 WiFi avec antenne u.FL vissée
- Un point d'accès WiFi 2,4 GHz WPA2 (pas de 5 GHz)
- Câble USB-C, IDE avec le core « Arduino Giga R1 »
Code complet
// GIGA R1 WiFi — client HTTP GET (HTTP simple, sans TLS : voir le tuto HTTPS)
#include <WiFi.h>
const char SSID[] = "your-ssid";
const char PASS[] = "your-pass"; // WPA2
const char SERVEUR[] = "example.org";
const int PORT = 80;
void connexion {
Serial.print("Connexion a "); Serial.print(SSID);
WiFi.begin(SSID, PASS);
while (WiFi.status != WL_CONNECTED) { Serial.print("."); delay(200); }
Serial.print(" OK — IP "); Serial.println(WiFi.localIP);
}
void setup {
Serial.begin(115200);
while (!Serial) {}
connexion;
WiFiClient client;
if (!client.connect(SERVEUR, PORT)) { Serial.println("Connexion TCP echouee"); return; }
client.print("GET / HTTP/1.0\r\n");
client.print("Host: "); client.println(SERVEUR);
client.print("Connection: close\r\n\r\n");
unsigned long debut = millis;
while (client.connected && millis - debut < 10000) {
while (client.available) {
Serial.write(client.read); // on TOUT lit : ne jamais laisser des octets
} // en attente (issue #937 sur le core mbed)
}
client.stop; // purge + fermeture propre
Serial.println("\n--- fin de la réponse ---");
}
void loop {
if (WiFi.status != WL_CONNECTED) WiFi.reconnect;
delay(5000);
}
Vérification attendue
Après la ligne « Connexion à ... OK — IP 192.168.x.x », le moniteur série déverse le HTML renvoyé par le serveur (le contenu de la page d'exemple), puis « --- fin de la réponse --- ». Relancez plusieurs fois le sketch : chaque connexion doit réussir — c'est exactement là que le drainage complet du flux évite les blocages de l'issue #937.
Erreurs fréquentes
- Corps de réponse non lu : lire les en-têtes puis
client.stopen laissant le corps en attente finit par bloquer les connexions suivantes sur le core mbed. Lisez tout, toujours. Connection: keep-aliveimplicite : en HTTP/1.0 sans en-têteConnection: close, la socket reste ouverte et la boucle attend ; fermez proprement avecclient.stop.- DNS interne qui traîne : si votre réseau renvoie une fausse IP par DNS, testez avec l'IP directe dans
client.connect. - WiFi 5 GHz : le module 1DX est strictement 2,4 GHz ; un SSID unique double bande peut dérouter — testez avec un SSID invité 2,4 GHz.
- Mauvais core compilé : le code ci-dessus fonctionne sur les deux cores, mais les bibliothèques ne se mélangent pas ; recompilez si vous changez de core.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton.inoArduinorespiration.inoArduinoanalogique.inoArduinodac-onde.inoArduinooled-i2c.inoArduino