5.8 KiB
Se connecter à un réseau Wi-Fi avec un ESP8266
Le matériel utilisé
Les exemples de code de cet article ont été testés sur un ESP8266 (puce ESP-12F) monté sur une carte de développement NodeMCU V3. C'est un combo très répandu chez les makers : la carte NodeMCU fournit l'alimentation, un convertisseur USB-série pour la programmation, et expose les broches GPIO de l'ESP8266 sur un format breadboard-friendly.
⚠️ Bon à savoir : l'ESP8266 ne sait communiquer qu'en Wi-Fi 2,4 GHz. Si votre box ne diffuse qu'en 5 GHz (cas de plus en plus fréquent), la connexion échouera silencieusement. Pensez à activer la bande 2,4 GHz dans les réglages de votre routeur, ou à utiliser un point d'accès dédié.
Le principe : le mode Station (STA)
Un ESP8266 peut fonctionner selon trois modes Wi-Fi :
- Station (STA) : il se connecte à un réseau existant, comme le ferait votre téléphone. C'est ce qu'on va faire ici.
- Access Point (AP) : il crée son propre réseau Wi-Fi auquel d'autres appareils peuvent se connecter.
- STA + AP : les deux à la fois.
Dans ce tutoriel, on configure l'ESP en mode Station pour qu'il rejoigne le réseau Wi-Fi de notre choix.
Deux approches : WiFi.begin() ou WiFiMulti ?
La bibliothèque officielle propose deux façons de se connecter :
| Approche | Quand l'utiliser |
|---|---|
WiFi.begin(ssid, password) |
Un seul réseau connu, code minimal. |
ESP8266WiFiMulti |
Plusieurs réseaux candidats : l'ESP scanne, puis se connecte automatiquement à celui qui a le meilleur signal (RSSI). Utile pour un objet qui se déplace entre plusieurs lieux (maison, atelier, FabLab…). |
On va utiliser WiFiMulti ici — c'est l'approche la plus robuste, même avec un seul réseau, car elle gère mieux les reconnexions.
Le code commenté
#include <ESP8266WiFi.h> // Bibliothèque Wi-Fi de base
#include <ESP8266WiFiMulti.h> // Gestion multi-réseaux
// Identifiants du réseau — à adapter
const char* wifi_ssid = "AP_for_Alpinux_FABLAB";
const char* wifi_password = "votre_mot_de_passe"; // "" si réseau ouvert
// Création de l'objet WiFiMulti
ESP8266WiFiMulti wifiMulti;
// Délai max d'attente par tentative de connexion (en ms)
const uint32_t connectTimeoutMs = 5000;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n--- Démarrage de l'ESP8266 ---");
// 1. On passe l'ESP en mode Station (client Wi-Fi)
WiFi.mode(WIFI_STA);
// 2. On enregistre le(s) réseau(x) auquel se connecter
// On peut appeler addAP() plusieurs fois pour plusieurs réseaux
wifiMulti.addAP(wifi_ssid, wifi_password);
// wifiMulti.addAP("Autre_Reseau", "autre_mdp"); // exemple
// 3. Boucle d'attente jusqu'à connexion réussie
Serial.print("Tentative de connexion au Wi-Fi");
while (wifiMulti.run(connectTimeoutMs) != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
// 4. Connexion établie : on affiche les infos réseau
Serial.println("\n✅ Connexion Wi-Fi réussie !");
Serial.print("Réseau : ");
Serial.println(WiFi.SSID());
Serial.print("Adresse IP : ");
Serial.println(WiFi.localIP());
Serial.print("Force du signal (RSSI) : ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
}
void loop() {
// Pour maintenir la connexion active et gérer les reconnexions,
// il est recommandé d'appeler régulièrement wifiMulti.run()
if (wifiMulti.run(connectTimeoutMs) != WL_CONNECTED) {
Serial.println("⚠️ Connexion perdue, tentative de reconnexion...");
delay(1000);
}
}
Ce qu'il faut retenir, étape par étape
WiFi.mode(WIFI_STA): on indique que l'ESP sera client d'un réseau, pas un point d'accès.wifiMulti.addAP(ssid, password): on déclare un réseau candidat. Si le réseau est ouvert (sans mot de passe), on peut passer un seul argument.wifiMulti.run(): retourne le statut courant. Tant que ce n'est pasWL_CONNECTED, on attend. Le paramètreconnectTimeoutMsévite que l'ESP s'acharne indéfiniment sur un réseau qui ne répond pas.WiFi.localIP(): une fois connecté, c'est cette adresse qu'on utilisera depuis un navigateur ou un autre programme pour dialoguer avec l'ESP.
💡 Astuce sécurité : ne committez jamais vos identifiants Wi-Fi sur un dépôt public. Une bonne pratique consiste à mettre
wifi_ssidetwifi_passworddans un fichiersecrets.hajouté au.gitignore.
Résultat dans le moniteur série
Une fois le code téléversé, ouvrez le Moniteur série de l'Arduino IDE (raccourci Ctrl+Maj+M) et réglez le débit à 115200 bauds — sinon vous ne verrez que des caractères incompréhensibles.
Vous devriez voir défiler les points pendant la connexion, puis l'adresse IP attribuée par votre box (via DHCP). Notez cette adresse : elle sera votre porte d'entrée vers l'ESP pour les tutoriels suivants (serveur web, API REST, MQTT…).
Diagnostic des problèmes courants
| Symptôme | Cause probable |
|---|---|
| Les points défilent à l'infini | Mauvais SSID/mot de passe, ou Wi-Fi en 5 GHz uniquement |
| Caractères illisibles dans le moniteur | Mauvais débit série (doit être à 115200) |
| Connexion qui tombe après quelques minutes | Alimentation USB insuffisante — un PC fournit parfois mal les pics de courant que demande le module Wi-Fi. Essayez un câble plus court ou une alim externe. |
WL_NO_SSID_AVAIL |
Le réseau n'est pas vu par l'ESP (hors de portée, ou caché) |
Pour aller plus loin
L'ESP saura automatiquement se reconnecter si le réseau tombe momentanément — il garde les identifiants en mémoire flash. Dans les prochains articles, on verra comment exploiter cette connexion pour faire de l'ESP un mini-serveur web, envoyer des données dans le cloud, ou recevoir des commandes via MQTT.
