Outils pour utilisateurs

Outils du site


start:arduino:esp32:wifi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
start:arduino:esp32:wifi [2022/01/10 14:28] – créée gerardadminstart:arduino:esp32:wifi [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ======== Reconnecter ESP32 au WIFI après une connexion perdue ======== ======== Reconnecter ESP32 au WIFI après une connexion perdue ========
 +
 +[[https://microcontrollerslab.com/reconnect-esp32-to-wifi-after-lost-connection/| Article original EN]]
  
 Dans ce tutoriel, nous allons apprendre à reconnecter la carte ESP32 au réseau WIFI lorsqu'elle perd temporairement la connexion. À travers différentes méthodes, nous allons démontrer cette fonctionnalité. Par conséquent, ce guide sera très utile pour éviter la nuisance de perdre constamment la connexion réseau pour de nombreuses raisons telles que le redémarrage du routeur WiFi, l'ESP32 est hors de portée du routeur WiFi, le routeur perd de l'alimentation et redémarre. Dans ce tutoriel, nous allons apprendre à reconnecter la carte ESP32 au réseau WIFI lorsqu'elle perd temporairement la connexion. À travers différentes méthodes, nous allons démontrer cette fonctionnalité. Par conséquent, ce guide sera très utile pour éviter la nuisance de perdre constamment la connexion réseau pour de nombreuses raisons telles que le redémarrage du routeur WiFi, l'ESP32 est hors de portée du routeur WiFi, le routeur perd de l'alimentation et redémarre.
Ligne 14: Ligne 16:
 Vous pouvez également utiliser la fonction WiFi.disconnect() puis WiFi.begin(ssid,password) dans un ordre particulier. La fonction WiFi.begin(ssid,password) prendra deux arguments. Vous pouvez également utiliser la fonction WiFi.disconnect() puis WiFi.begin(ssid,password) dans un ordre particulier. La fonction WiFi.begin(ssid,password) prendra deux arguments.
  
-    Le nom de votre réseau WIFI appelé SSID est le premier argument. +    *Le nom de votre réseau WIFI appelé SSID est le premier argument. 
-    Le deuxième argument est le mot de passe de votre réseau WIFI associé. Assurez-vous de spécifier les fonctions dans le bon ordre.+    *Le deuxième argument est le mot de passe de votre réseau WIFI associé. Assurez-vous de spécifier les fonctions dans le bon ordre.
  
-2ème méthode : ESP.restart()+===2ème méthode : ESP.restart()===
  
 L'autre moyen de se reconnecter au WiFi consiste à redémarrer l'appareil ESP32. En utilisantESP.restart()fonction, nous pouvons redémarrer la carte de développement ESP32. Cela peut récupérer la connexion réseau perdue. L'autre moyen de se reconnecter au WiFi consiste à redémarrer l'appareil ESP32. En utilisantESP.restart()fonction, nous pouvons redémarrer la carte de développement ESP32. Cela peut récupérer la connexion réseau perdue.
Ligne 26: Ligne 28:
 Suivez le croquis Arduino ci-dessous. La fonction boucle infinie () exécutera la fonctionnalité susmentionnée. Après toutes les 20 secondes, il vérifiera si la carte est toujours connectée au WIFI ou non. Sinon, il essaiera de se reconnecter en se déconnectant d'abord, puis en essayant de se reconnecter. Suivez le croquis Arduino ci-dessous. La fonction boucle infinie () exécutera la fonctionnalité susmentionnée. Après toutes les 20 secondes, il vérifiera si la carte est toujours connectée au WIFI ou non. Sinon, il essaiera de se reconnecter en se déconnectant d'abord, puis en essayant de se reconnecter.
  
 +<code c 003.ino>
 #include <WiFi.h> #include <WiFi.h>
  
Ligne 62: Ligne 65:
   }   }
 } }
 +</code>
  
 Vous pouvez augmenter le temps de revérification en modifiant la valeur du délai dans la ligne suivante : Vous pouvez augmenter le temps de revérification en modifiant la valeur du délai dans la ligne suivante :
  
 +<code c 004.ino>
 unsigned long delay = 20000; // 20 seconds delay unsigned long delay = 20000; // 20 seconds delay
 +</code>
  
 Cette méthode est une bonne solution pour reconnecter le WiFi à l'ESP32 en cas de perte accidentelle de la connexion. Mais avec cette méthode, nous devons interroger la if ((WiFi.status() != WL_CONNECTED) && (current_time – previous_time >=delay))condition à chaque exécution de loop(). Cette méthode est une bonne solution pour reconnecter le WiFi à l'ESP32 en cas de perte accidentelle de la connexion. Mais avec cette méthode, nous devons interroger la if ((WiFi.status() != WL_CONNECTED) && (current_time – previous_time >=delay))condition à chaque exécution de loop().
  
 L'alternative à la loop()méthode consiste à utiliser ESP32 WIFI Events. Nous allons montrer en détail une autre fonctionnalité utile connue sous le nom d'événements WIFI. Cela aidera à détecter la connexion réseau perdue. De plus, une fonction sera appelée pour gérer une reconnexion réussie. Ceci est discuté dans la section ci-dessous. L'alternative à la loop()méthode consiste à utiliser ESP32 WIFI Events. Nous allons montrer en détail une autre fonctionnalité utile connue sous le nom d'événements WIFI. Cela aidera à détecter la connexion réseau perdue. De plus, une fonction sera appelée pour gérer une reconnexion réussie. Ceci est discuté dans la section ci-dessous.
-3ème méthode : événements WiFi ESP32+ 
 +===3ème méthode : événements WiFi ESP32===
  
 La méthode de boucle infinie () indiquée ci-dessus aidera à récupérer la connexion WIFI perdue, mais est légèrement gênante et gaspille les ressources ESP32. Pour une meilleure approche, nous allons essayer d'utiliser les événements ESP32 WIFI à la place. Les événements WIFI détecteront directement l'absence de WIFI. De plus, il appellera simultanément une fonction de gestion pour se reconnecter au réseau. La méthode de boucle infinie () indiquée ci-dessus aidera à récupérer la connexion WIFI perdue, mais est légèrement gênante et gaspille les ressources ESP32. Pour une meilleure approche, nous allons essayer d'utiliser les événements ESP32 WIFI à la place. Les événements WIFI détecteront directement l'absence de WIFI. De plus, il appellera simultanément une fonction de gestion pour se reconnecter au réseau.
Ligne 76: Ligne 83:
 À des fins de détection et de reconnexion, deux événements WIFI sont très utiles. Ceux-ci sont donnés ci-dessous. À des fins de détection et de reconnexion, deux événements WIFI sont très utiles. Ceux-ci sont donnés ci-dessous.
  
-    SYSTEM_EVENT_STA_CONNECTED: L'ESP32 est en mode station et est connecté à un point d'accès (AP). +    *SYSTEM_EVENT_STA_CONNECTED: L'ESP32 est en mode station et est connecté à un point d'accès (AP). 
-    SYSTEM_EVENT_STA_DISCONNECTED: L'ESP32 est en mode station et est déconnecté du point d'accès (AP).+    *SYSTEM_EVENT_STA_DISCONNECTED: L'ESP32 est en mode station et est déconnecté du point d'accès (AP).
  
 Nous utiliserons un croquis Arduino pour expliquer comment les événements WIFI fonctionneront. Grâce à ces événements, l'ESP32 pourra se reconnecter au routeur instantanément après avoir perdu la connexion. Nous utiliserons les deux événements mentionnés ci-dessus à cet égard. Nous utiliserons un croquis Arduino pour expliquer comment les événements WIFI fonctionneront. Grâce à ces événements, l'ESP32 pourra se reconnecter au routeur instantanément après avoir perdu la connexion. Nous utiliserons les deux événements mentionnés ci-dessus à cet égard.
-Esquisse Arduino 
  
-Ouvrez votre IDE Arduino et accédez à Fichier > Nouveau pour ouvrir un nouveau fichier. Copiez le code ci-dessous dans ce fichier. Ce code fonctionnera pour votre carte de développement ESP32. Vous devez remplacer les informations d'identification du réseau.+==Esquisse Arduino==
  
 +Ouvrez votre IDE Arduino et accédez à Fichier > Nouveau pour ouvrir un nouveau fichier. Copiez le code ci-dessous dans ce fichier. Ce code fonctionnera pour votre carte de développement ESP32. Vous devez remplacer les informations d'identification du réseau.
 +<code c 005.ino>
 #include <WiFi.h> #include <WiFi.h>
 const char* ssid = "Your_SSID"; const char* ssid = "Your_SSID";
Ligne 121: Ligne 129:
   delay(1000);   delay(1000);
 } }
 +</code>
  
-Comment fonctionne le code ?+==Comment fonctionne le code ?==
  
 Premièrement, nous allons inclure la WiFi.hbibliothèque. Cette bibliothèque aidera à établir la connexion entre notre module ESP32 à un réseau sans fil. Premièrement, nous allons inclure la WiFi.hbibliothèque. Cette bibliothèque aidera à établir la connexion entre notre module ESP32 à un réseau sans fil.
  
 +<code c 006.ino>
 #include <WiFi.h> #include <WiFi.h>
 +</code>
  
 Ensuite, nous allons créer deux variables globales, une pour le SSIDet l'autre pour le mot de passe. Ceux-ci contiendront nos identifiants de réseau qui seront utilisés pour se connecter à notre réseau sans fil. Remplacez-les tous les deux par vos informations d'identification pour assurer une connexion réussie. Ensuite, nous allons créer deux variables globales, une pour le SSIDet l'autre pour le mot de passe. Ceux-ci contiendront nos identifiants de réseau qui seront utilisés pour se connecter à notre réseau sans fil. Remplacez-les tous les deux par vos informations d'identification pour assurer une connexion réussie.
  
 +<code c 007.ino>
 const char* ssid = "Your_SSID"; const char* ssid = "Your_SSID";
 const char* password = "Your_Password"; const char* password = "Your_Password";
 +</code>
  
 Fonctions définies par l'utilisateur Fonctions définies par l'utilisateur
Ligne 137: Ligne 150:
 Ensuite, nous définirons des fonctions que nous devrons appeler plus tard dans le code. Dans un premier temps, nous définirons leWifi_connecté()une fonction. Cette fonction sera appelée lorsque notre ESP32 se connectera à un point d'accès via leSYSTEM_EVENT_STA_CONNECTEDun événement. Cette fonction imprimera : « Connexion réussie au point d'accès » sur notre moniteur série. Ensuite, nous définirons des fonctions que nous devrons appeler plus tard dans le code. Dans un premier temps, nous définirons leWifi_connecté()une fonction. Cette fonction sera appelée lorsque notre ESP32 se connectera à un point d'accès via leSYSTEM_EVENT_STA_CONNECTEDun événement. Cette fonction imprimera : « Connexion réussie au point d'accès » sur notre moniteur série.
  
 +<code c 008.ino>
 void Wifi_connected(WiFiEvent_t event, WiFiEventInfo_t info){ void Wifi_connected(WiFiEvent_t event, WiFiEventInfo_t info){
   Serial.println("Successfully connected to Access Point");   Serial.println("Successfully connected to Access Point");
 } }
 +</code>
  
 Dans un deuxième temps, nous définirons le Get_IPAddress()une fonction. Celui-ci sera appelé lorsque notre carte ESP32 utilisera l'événementSYSTEM_EVENT_STA_GOT_IPpour accéder à son adresse IP. Grâce à cette fonction Get_IPAddress(), nous imprimerons « WIFI est connecté ! » et l'adresse IP de notre module sur le moniteur série. Dans un deuxième temps, nous définirons le Get_IPAddress()une fonction. Celui-ci sera appelé lorsque notre carte ESP32 utilisera l'événementSYSTEM_EVENT_STA_GOT_IPpour accéder à son adresse IP. Grâce à cette fonction Get_IPAddress(), nous imprimerons « WIFI est connecté ! » et l'adresse IP de notre module sur le moniteur série.
  
 +<code c 009.ino>
 void Get_IPAddress(WiFiEvent_t event, WiFiEventInfo_t info){ void Get_IPAddress(WiFiEvent_t event, WiFiEventInfo_t info){
   Serial.println("WIFI is connected!");   Serial.println("WIFI is connected!");
Ligne 148: Ligne 164:
   Serial.println(WiFi.localIP());   Serial.println(WiFi.localIP());
 } }
 +</code>
 Enfin, nous définirons le Wifi_déconnecté()une fonction. Cette fonction sera appelée lorsque notre ESP32 se déconnectera d'un point d'accès via l'événement SYSTEM_EVENT_STA_DISCONNECTED. Cette fonction imprimera « Déconnecté du point d'accès WIFI ». Il précisera également la raison dans un numéro de code pour la déconnexion. De plus, il essaiera également de se reconnecter au réseau via leWi-Fi.commence() une fonction. Enfin, nous définirons le Wifi_déconnecté()une fonction. Cette fonction sera appelée lorsque notre ESP32 se déconnectera d'un point d'accès via l'événement SYSTEM_EVENT_STA_DISCONNECTED. Cette fonction imprimera « Déconnecté du point d'accès WIFI ». Il précisera également la raison dans un numéro de code pour la déconnexion. De plus, il essaiera également de se reconnecter au réseau via leWi-Fi.commence() une fonction.
  
 +<code c 010.ino>
 void Wifi_disconnected(WiFiEvent_t event, WiFiEventInfo_t info){ void Wifi_disconnected(WiFiEvent_t event, WiFiEventInfo_t info){
   Serial.println("Disconnected from WIFI access point");   Serial.println("Disconnected from WIFI access point");
Ligne 159: Ligne 176:
 } }
  
-Fonction Setup()+</code> 
 + 
 +==Fonction Setup()==
  
 À l'intérieur de mettre en place() fonction, nous ouvrirons la communication série à un débit en bauds de 115200. À l'intérieur de mettre en place() fonction, nous ouvrirons la communication série à un débit en bauds de 115200.
  
 +<code c 012.ino>
 Serial.begin(115200); Serial.begin(115200);
 +</code>
  
 Ensuite, nous appellerons WiFi.déconnecter()fonction avec true comme paramètre à l'intérieur. Cela supprimera toutes les informations d'identification réseau précédentes stockées dans la carte. Ensuite, nous appellerons WiFi.déconnecter()fonction avec true comme paramètre à l'intérieur. Cela supprimera toutes les informations d'identification réseau précédentes stockées dans la carte.
  
 +<code c 013.ino>
 WiFi.disconnect(true); WiFi.disconnect(true);
 +</code>
  
-Ensuite, nous appellerons WiFi.onEvent()fonction pour les trois événements WIFI. Ceux-ci seront SYSTEM_EVENT_STA_CONNECTED, SYSTEM_EVENT_STA_GOT_IP et SYSTEM_EVENT_STA_DISCONNECTED. Nous les passerons individuellement en tant que deuxièmes paramètres à l'intérieur de la fonction WiFi.onEvent(). Les fonctions précédemment définies par l'utilisateur agiront comme premiers paramètres.+Ensuite, nous appellerons WiFi.onEvent()fonction pour les trois événements WIFI. 
  
 +Ceux-ci seront SYSTEM_EVENT_STA_CONNECTED, SYSTEM_EVENT_STA_GOT_IP et SYSTEM_EVENT_STA_DISCONNECTED.
 +
 +Nous les passerons individuellement en tant que deuxièmes paramètres à l'intérieur de la fonction WiFi.onEvent(). Les fonctions précédemment définies par l'utilisateur agiront comme premiers paramètres.
 +
 +<code c 014.ino>
 WiFi.onEvent(Wifi_connected,SYSTEM_EVENT_STA_CONNECTED); WiFi.onEvent(Wifi_connected,SYSTEM_EVENT_STA_CONNECTED);
 WiFi.onEvent(Get_IPAddress, SYSTEM_EVENT_STA_GOT_IP); WiFi.onEvent(Get_IPAddress, SYSTEM_EVENT_STA_GOT_IP);
 WiFi.onEvent(Wifi_disconnected, SYSTEM_EVENT_STA_DISCONNECTED);  WiFi.onEvent(Wifi_disconnected, SYSTEM_EVENT_STA_DISCONNECTED); 
 +</code>
  
 Ensuite, nous connecterons notre carte ESP32 au point d'accès via le Wi-Fi.commence() une fonction. Ensuite, nous connecterons notre carte ESP32 au point d'accès via le Wi-Fi.commence() une fonction.
Ligne 182: Ligne 211:
 </code> </code>
  
-==Manifestation==+==Démonstration == 
 + 
 +Assurez-vous de choisir la bonne carte et le bon port COM avant de télécharger votre code sur la carte.  
 + 
 +Allez dans Outils > Carte et sélectionnez ESP32 Dev Module.  
 + 
 +Ensuite, allez dans Outils > Port et sélectionnez le port approprié via lequel votre carte est connectée.
  
-Assurez-vous de choisir la bonne carte et le bon port COM avant de télécharger votre code sur la carte. Allez dans Outils > Carte et sélectionnez ESP32 Dev Module. Ensuite, allez dans Outils > Port et sélectionnez le port approprié via lequel votre carte est connectée. 
 Cliquez sur le bouton de téléchargement pour télécharger le code dans la carte de développement ESP32. Cliquez sur le bouton de téléchargement pour télécharger le code dans la carte de développement ESP32.
 +
 Après avoir téléchargé votre code sur la carte de développement, appuyez sur son bouton ACTIVER. Après avoir téléchargé votre code sur la carte de développement, appuyez sur son bouton ACTIVER.
  
-Ouvrez votre Serial Monitor à un débit en bauds de 115200. Connectez-vous maintenant à votre réseau WIFI local. Interrompre la connexion. Le code du programme le détecte automatiquement et se reconnecte.+Ouvrez votre Serial Monitor à un débit en bauds de 115200.  
 + 
 +Connectez-vous maintenant à votre réseau WIFI local.  
 + 
 +Interrompre la connexion. Le code du programme le détecte automatiquement et se reconnecte. 
 + 
 Reconnecter ESP32 à la démo WIFI Moniteur série Reconnecter ESP32 à la démo WIFI Moniteur série
  
/home/chanteri/www/fablab37110/data/attic/start/arduino/esp32/wifi.1641821321.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)