publish: Se connecter à un réseau Wi-Fi avec un ESP8266
This commit is contained in:
@@ -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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
@@ -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("\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);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Voilà le résultat dans le **moniteur série** de l'application **Arduino IDE**.
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
@@ -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**.
|
||||
|
||||

|
||||
Reference in New Issue
Block a user