publish: Se connecter à un réseau Wi-Fi avec un ESP8266

This commit is contained in:
Cédrix
2026-05-17 00:02:10 +02:00
parent a7e18bc5f3
commit 0eadbbd1af
5 changed files with 159 additions and 161 deletions
@@ -1,15 +0,0 @@
{
"title": "Se connecter à un réseau Wi-Fi avec un ESP8266",
"_updated_at": "2026-05-16 22:02:08",
"slug": "se-connecter-a-un-reseau-wifi",
"published": true,
"published_at": "2022-02-05 10:34",
"category": "Électronique",
"tags": {
"tags": [
"ESP"
]
},
"seo_title": "",
"seo_description": ""
}
@@ -1,115 +0,0 @@
# 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é
```cpp
#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](20201111-233656.png)
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.
+97 -26
View File
@@ -1,44 +1,115 @@
# Se connecter à un réseau Wifi
# Se connecter à un réseau Wi-Fi avec un ESP8266
Les extraits de codes suivants ont été testés avec un **Espressif ESP8266** / **ESP 12F** soudé sur une carte **NodeMcu V3**.
## Le matériel utilisé
Un connexion **Wifi Client** permet d'indiquer à l'**ESP** de se connecter à un réseau Wifi, désigné dans notre code par la variable **wifi_ssid**, utilisée par la méthode **WiFiMulti.addAP**. Il est également possible d'indiquer un mot de passe en tant que second paramètre (`WiFiMulti.addAP(wifi_ssid, "mot de passe");`).
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.
```C
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
const char* wifi_ssid = "AP_for_Alpinux_FABLAB";
> ⚠️ **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é
```cpp
#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;
ESP8266WiFiMulti WiFiMulti;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
Serial.println("\n--- Démarrage de l'ESP8266 ---");
// Tentative de connexion Wifi
// 1. On passe l'ESP en mode Station (client Wi-Fi)
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(wifi_ssid);
Serial.print("Tentative de connexion au Wifi .");
while (WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
// 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);
}
Serial.println("\n");
Serial.println("Connexion Wifi réussie");
// 4. Connexion établie : on affiche les infos réseau
Serial.println("\nConnexion 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);
}
}
```
Voilà le résultat dans le **moniteur série** de l'application **Arduino IDE**.
### Ce qu'il faut retenir, étape par étape
![](20201111-233656.png)
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](20201111-233656.png)
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.
+18 -5
View File
@@ -1,18 +1,31 @@
{
"uuid": "cf6f24c0-6d6f-4c69-b901-0ada82c66f46",
"slug": "se-connecter-a-un-reseau-wifi",
"title": "Se connecter à un réseau Wifi",
"title": "Se connecter à un réseau Wi-Fi avec un ESP8266",
"author": "cedric@abonnel.fr",
"published": true,
"published_at": "2022-02-05 10:34:42",
"featured": false,
"published_at": "2022-02-05 10:34",
"created_at": "2022-02-05 10:34:42",
"updated_at": "2022-02-05 10:34:42",
"revisions": [],
"updated_at": "2026-05-16 22:02:10",
"revisions": [
{
"n": 1,
"date": "2026-05-16 22:02:10",
"comment": "Titre modifié, tags modifiés, contenu modifié",
"title": "Se connecter à un réseau Wifi"
}
],
"cover": "",
"files_meta": [],
"external_links": [],
"seo_title": "",
"seo_description": "",
"og_image": "",
"category": "Électronique"
"category": "Électronique",
"tags": {
"tags": [
"ESP"
]
}
}
@@ -0,0 +1,44 @@
# Se connecter à un réseau Wifi
Les extraits de codes suivants ont été testés avec un **Espressif ESP8266** / **ESP 12F** soudé sur une carte **NodeMcu V3**.
Un connexion **Wifi Client** permet d'indiquer à l'**ESP** de se connecter à un réseau Wifi, désigné dans notre code par la variable **wifi_ssid**, utilisée par la méthode **WiFiMulti.addAP**. Il est également possible d'indiquer un mot de passe en tant que second paramètre (`WiFiMulti.addAP(wifi_ssid, "mot de passe");`).
```C
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
const char* wifi_ssid = "AP_for_Alpinux_FABLAB";
ESP8266WiFiMulti WiFiMulti;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n");
// Tentative de connexion Wifi
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(wifi_ssid);
Serial.print("Tentative de connexion au Wifi .");
while (WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\n");
Serial.println("Connexion Wifi réussie");
Serial.print("Adresse IP : ");
Serial.println(WiFi.localIP());
}
void loop() {
}
```
Voilà le résultat dans le **moniteur série** de l'application **Arduino IDE**.
![](20201111-233656.png)