From 0eadbbd1af71cc27fa332eddaa534d51a9730b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Sun, 17 May 2026 00:02:10 +0200 Subject: [PATCH] =?UTF-8?q?publish:=20Se=20connecter=20=C3=A0=20un=20r?= =?UTF-8?q?=C3=A9seau=20Wi-Fi=20avec=20un=20ESP8266?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../draft_overlay.json | 15 --- .../draft_overlay.md | 115 ---------------- cf6f24c0-6d6f-4c69-b901-0ada82c66f46/index.md | 123 ++++++++++++++---- .../meta.json | 23 +++- .../revisions/0001.md | 44 +++++++ 5 files changed, 159 insertions(+), 161 deletions(-) delete mode 100644 cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.json delete mode 100644 cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.md create mode 100644 cf6f24c0-6d6f-4c69-b901-0ada82c66f46/revisions/0001.md diff --git a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.json b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.json deleted file mode 100644 index 64df4ea..0000000 --- a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.json +++ /dev/null @@ -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": "" -} diff --git a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.md b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.md deleted file mode 100644 index 69239b2..0000000 --- a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/draft_overlay.md +++ /dev/null @@ -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 // Bibliothèque Wi-Fi de base -#include // 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. \ No newline at end of file diff --git a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/index.md b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/index.md index f975523..69239b2 100644 --- a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/index.md +++ b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/index.md @@ -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 -#include - -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 // Bibliothèque Wi-Fi de base +#include // 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 -![](20201111-233656.png) \ No newline at end of file +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. \ No newline at end of file diff --git a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/meta.json b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/meta.json index 708c7b9..cbc4672 100644 --- a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/meta.json +++ b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/meta.json @@ -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" + ] + } } diff --git a/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/revisions/0001.md b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/revisions/0001.md new file mode 100644 index 0000000..f975523 --- /dev/null +++ b/cf6f24c0-6d6f-4c69-b901-0ada82c66f46/revisions/0001.md @@ -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 +#include + +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) \ No newline at end of file