Files
abonnel-www/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.md
T
2026-05-17 00:01:52 +02:00

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

  1. WiFi.mode(WIFI_STA) : on indique que l'ESP sera client d'un réseau, pas un point d'accès.
  2. 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.
  3. wifiMulti.run() : retourne le statut courant. Tant que ce n'est pas WL_CONNECTED, on attend. Le paramètre connectTimeoutMs évite que l'ESP s'acharne indéfiniment sur un réseau qui ne répond pas.
  4. 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_ssid et wifi_password dans un fichier secrets.h ajouté 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.

Sortie dans le moniteur série

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.