Recherche de site Web

Se connecter au réseau WiFi le plus puissant dans ESP32 en utilisant la fonction WiFiMulti.


L'ESP32 est une carte microcontrôleur basée sur l'IoT disposant d'un support WiFi et Bluetooth. L'ESP32 peut fonctionner dans trois modes WiFi différents (Station, Accès ou les deux). En utilisant tous ces modes, l'ESP32 peut améliorer sa connectivité sans fil de plusieurs façons. Aujourd'hui, nous allons discuter du support multi-WiFi dans l'ESP32 pour se connecter au réseau disponible le plus fort.

ESP32 avec la fonction WiFiMulti

L'ESP32 peut se connecter à plusieurs réseaux si nous avons accès à plus d'un réseau, il suffit de définir leurs SSID et mot de passe dans le code. Il recherchera le réseau disponible et se connectera au réseau Wi-Fi le plus puissant que nous avons défini dans le code.

Remarque : N'oubliez pas qu'il se connectera à un réseau à la fois. Si la connexion à ce réseau est perdue, l'ESP32 se connectera à d'autres réseaux WiFi disponibles.

Nous pouvons ouvrir l'exemple WiFiMulti dans l'IDE Arduino :

Allez à: Fichier > Exemples > WiFi > WifiMulti

Comment ajouter plusieurs réseaux WiFi dans l'ESP32

Pour ajouter plusieurs réseaux WiFi sur la carte ESP32. Nous allons utiliser la fonction WifiMulti avec addAP(). La fonction addAP() peut accepter plusieurs SSID et mots de passe comme arguments. Pour ajouter plusieurs réseaux, leurs SSID et mots de passe doivent être définis séparément. Voici la syntaxe pour ajouter plus d'un réseau en utilisant la fonction WifiMulti avec addAP() :

wifiMulti.addAP("SSID Network1", "Password1");

wifiMulti.addAP("SSID Network2", " Password2");

wifiMulti.addAP("SSID Network3", " Password3");

Comment se connecter au réseau WiFi le plus puissant sur ESP32

Pour connecter l'ESP32 au réseau le plus puissant disponible, nous allons combiner l'analyse WiFi de l'ESP32 et l'exemple multitâche WiFi. Nous allons écrire un code dans l'IDE Arduino qui effectuera les étapes suivantes :

  • Scanner les réseaux disponibles
  • Imprimez leur RSSI (force du signal) sur le moniteur série. Ainsi, nous pouvons vérifier le réseau le plus fort disponible.
  • Se connecte automatiquement au réseau le plus puissant.
  • S'il perd la connexion, il se reconnectera automatiquement au prochain réseau disponible le plus puissant.

Pour tester le code, nous utiliserons un point d'accès Smartphone et un réseau WiFi. Assignez toujours un nom simple au réseau mobile pour éviter toute erreur.

Téléchargez maintenant le code donné dans la carte ESP32 en utilisant l'IDE Arduino.

Code

Ouvrez l'IDE Arduino et téléchargez le code sur l'ESP32. N'oubliez pas de sélectionner le port COM.

#include <WiFi.h> /*WIFI library included*/

#include <WiFiMulti.h> /*Multi WIFI library included*/

WiFiMulti wifiMulti;
/*Per AP connect time. Increase when ESP32 take more time for connection*/ 
const uint32_t connectTimeoutMs = 10000;
void setup(){
  Serial.begin(115200);  /*Serial communication begins*/
  delay(10);
  WiFi.mode(WIFI_STA);    /*ESP32 WIFI initialized as Station*/
  /*Type all known SSID and their passwords*/
  wifiMulti.addAP("YOUR SSID", "PASSWORD");  /*Network 1 we want to connect*/
  wifiMulti.addAP("phone");  /*Network 2 we want to connect*/
  // WiFi.scanNetworks will give total networks
  int n = WiFi.scanNetworks();  /*Scan for available network*/
  Serial.println("scan done");  
  if (n == 0) {
      Serial.println("No Available Networks");  /*Prints if no network found*/
  } 
  else {
    Serial.print(n);
    Serial.println(" Networks found");  /*Prints if network found*/
    for (int i = 0; i < n; ++i) {
      Serial.print(i + 1);  /*Print the SSID and RSSI of available network*/
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(")");
      Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
      delay(10);
    }
  }
 /*Connects to strongest available defined network with SSID and Password available*/
   Serial.println("Connecting to Wifi..."); 
  if(wifiMulti.run() == WL_CONNECTED) {
    Serial.println("");
    Serial.println("Connected to WIFI Network");
    Serial.println("IP address of Connected Network: ");
    Serial.println(WiFi.localIP());    /*Prints IP address of connected network*/
  }
}
void loop(){
   if (wifiMulti.run(connectTimeoutMs) == WL_CONNECTED) {  /*if the connection lost it will connect to next network*/
    Serial.print("WiFi connected: ");
    Serial.print(WiFi.SSID());
    Serial.print(" ");
    Serial.println(WiFi.RSSI());
  }
  else {
    Serial.println("WiFi not connected!");  /*if all conditions fail print this*/
  }
  delay(1000);
}

Le code a commencé par définir les bibliothèques WiFi pour l'ESP32, puis nous avons créé un objet WiFiMulti. Ensuite, dans la partie configuration, nous avons ajouté deux réseaux. L'un est un réseau WiFi qui est crypté par mot de passe, donc nous devons fournir un mot de passe, tandis que le second réseau, qui est un point d'accès smartphone, est ouvert, donc nous n'avons pas besoin de mot de passe, juste à taper le SSID du réseau.

Ensuite, en utilisant la commande wifiMulti.run(), l'ESP32 se connectera au réseau disponible le plus puissant. Une fois que le Wi-Fi est connecté, le code affichera le SSID du réseau connecté, l'adresse IP et le RSSI.

Sortie

Après avoir télécharger le code sur l'ESP32, il va d'abord scanner les réseaux disponibles avant de se connecter au réseau le plus fort. Ici, nous pouvons voir la valeur RSSI pour chaque réseau ; une valeur RSSI plus faible signifie que le réseau est plus fort.

Nous pouvons voir que l'ESP32 est connecté au réseau téléphonique car il a une valeur RSSI de -62 et l'autre réseau dont le SSID et le mot de passe sont définis est Team SAM dont la valeur est -73. Ici, le réseau de point d'accès mobile a une valeur RSSI plus proche de zéro, ce qui signifie une connexion plus forte.

Déconnectez maintenant le point d'accès du smartphone. L'ESP32 se connectera automatiquement à d'autres réseaux disponibles plus puissants. Comme nous pouvons le voir dans la sortie, l'ESP32 est maintenant connecté au prochain réseau disponible le plus puissant. Le réseau auquel il est connecté est Team SAM avec une valeur RSSI de -65.

Conclusion

L'ESP32 peut se connecter au réseau le plus fort disponible dans son cercle. Nous devons simplement définir plusieurs SSID de réseau et mots de passe dans le code. En utilisant la fonction WiFiMulti, l'ESP32 scannera les réseaux disponibles et, lorsque la connexion est perdue, il se connectera à d'autres réseaux disponibles dans la portée de l'ESP32.