Conéctese a la red wifi más fuerte en Esptop 10 utilizando la función wifimulti

Conéctese a la red wifi más fuerte en Esptop 10 utilizando la función wifimulti
ESP32 es una placa de microcontrolador basada en IoT que tiene soporte WiFi y Bluetooth. ESP32 puede operar en tres modos wifi diferentes (estación, acceso o ambos). El uso de todos estos modos ESP32 puede mejorar su conectividad inalámbrica en muchos pliegues. Hoy discutiremos el soporte multi-WiFi en ESP32 para conectarse a la red más fuerte disponible.

ESP32 con función wifimulti

ESP32 puede conectarse a múltiples redes si tenemos acceso a más de una red, solo necesitamos definir su SSID y contraseña dentro del código. Buscará la red disponible y se conectará a la red Wi-Fi más fuerte que definimos en código.

Nota: Recuerde que se conectará a una red a la vez si la conexión a esa red se pierde, ESP32 se conectará a otras redes WiFi disponibles.

Podemos abrir el ejemplo Wifimulti en Arduino IDE:

Ir a: Archivo> ejemplos> wifi> wifimulti

Cómo agregar múltiples redes wifi en ESP32

Para agregar múltiples redes wifi en la placa ESP32. Usaremos el Wifimulti función con addap (). La función addap () puede aceptar múltiples SSID y contraseñas como argumento. Para agregar múltiples redes, su SSID y las contraseñas deben definirse por separado. La siguiente es la sintaxis para agregar más de una red usando Wifimulti función con addap ():

wifimulti.addAP ("SSID Network1", "Password1");
wifimulti.addAP ("SSID Network2", "Password2");
wifimulti.addAP ("SSID Network3", "Password3");

Cómo conectarse a la red wifi más fuerte en ESP32

Para conectar ESP32 con la red más fuerte disponible, combinaremos el ESP32 WiFi Scan y Wifi Multi Ejemplo. Escribiremos un código en Arduino IDE que hará los siguientes pasos:

  • Escanear para las redes disponibles
  • Imprima su RSSI (resistencia a la señal) en el monitor en serie. Entonces, podemos verificar la red más fuerte disponible
  • Se conecta automáticamente a la red más fuerte
  • Si pierde la conexión, se conectará automáticamente a la próxima red más fuerte disponible

Para probar el código, utilizaremos un Teléfono inteligente punto de acceso y una red WiFi. Siempre asigne un nombre simple a la red de puntos de acceso móvil para evitar cualquier error.

Ahora cargue el código dado en la placa ESP32 usando Arduino IDE.

Código

Abra el código Arduino IDE y de carga en ESP32. Recuerde seleccionar el puerto COM.

#include /*biblioteca wifi incluida* /
#Include /*Biblioteca Multi Wifi incluida* /
Wifimulti wifimulti;
/*Por tiempo de conexión AP. Aumente cuando ESP32 tome más tiempo para la conexión*/
const uint32_t ConnectTimeOutms = 10000;
setup () void
De serie.comenzar (115200); /*Comienza la comunicación en serie*/
retraso (10);
Wifi.modo (wifi_sta); /*Esp32 wifi inicializado como estación*/
/*Escriba todo el SSID conocido y sus contraseñas*/
wifimulti.addAP ("su SSID", "Contraseña"); /*Red 1 queremos conectar*/
wifimulti.addap ("teléfono"); /*Red 2 queremos conectar*/
// Wifi.ScannetWorks dará redes totales
int n = wifi.ScannetWorks (); /*Escanear para la red disponible*/
De serie.println ("escaneo hecho");
if (n == 0)
De serie.println ("No hay redes disponibles"); /*Imprime si no se encuentra ninguna red*/

demás
De serie.imprimir (n);
De serie.println ("redes encontradas"); /*Imprime si se encuentra la red*/
para (int i = 0; i < n; ++i)
De serie.imprimir (i + 1); /*Imprima el SSID y RSSI de la red disponible*/
De serie.imprimir(": ");
De serie.Imprimir (wifi.Ssid (i));
De serie.imprimir(" (");
De serie.Imprimir (wifi.Rssi (i));
De serie.imprimir(")");
De serie.println ((wifi.CiCrytionType (i) == wifi_auth_open)?"": "*");
retraso (10);


/*Se conecta a la red definida más fuerte disponible con SSID y contraseña disponibles*/
De serie.println ("conectarse a wifi ...");
if (wifimulti.run () == wl_connected)
De serie.println ("");
De serie.println ("conectado a la red wifi");
De serie.println ("Dirección IP de la red conectada:");
De serie.println (wifi.localip ()); /*Imprime la dirección IP de la red conectada*/


bucle void ()
if (wifimulti.ejecutar (ConnectTimeOutms) == wl_connected) /*Si la conexión la perdida se conectará a la próxima red* /
De serie.imprimir ("wifi conectado:");
De serie.Imprimir (wifi.Ssid ());
De serie.imprimir(" ");
De serie.println (wifi.Rssi ());

demás
De serie.println ("wifi no conectado!"); /*Si todas las condiciones fallan imprima esto* /

retraso (1000);

Código iniciado definiendo bibliotecas WiFi para ESP32, luego creamos un Wifimulti objeto. A continuación, en la parte de configuración agregamos dos redes. Uno es una red WiFi que está encriptada con contraseña, por lo que tenemos que proporcionar una contraseña, mientras que la segunda red que es un punto de acceso de teléfonos inteligentes está abierta, por lo que no necesitamos ninguna contraseña que acaba de escribir la red SSID.

A continuación, usando wifimulti.correr() El comando ESP32 se conectará a la red más fuerte disponible. Una vez que el WiFi esté conectado, el código imprima el SSID de red conectado, la dirección IP y el RSSI.

Producción

Después de cargar el código a ESP32 primero, buscará la red disponible, se conectará a la red más fuerte disponible. Aquí podemos ver el valor de RSSI para cada red, un RSSI más bajo significa que la red es la red.

Podemos ver que ESP32 está conectado al red telefónica Porque tiene un Rssi valor de -62 y la otra red cuyo SSID y contraseña se definen es Equipo Sam cuyo valor es -73. Aquí la red de puntos de acceso móvil tiene un valor RSSI más cercano a cero significa una conexión más fuerte.

Ahora desconecte el punto de acceso del teléfono inteligente. ESP32 se conectará a otras redes más fuertes disponibles. Como en la salida, podemos ver que ESP32 ahora está conectado a la próxima red más fuerte disponible. La red a la que está conectado es el equipo Sam que tiene valor RSSI 0f -65.

Conclusión

ESP32 puede conectarse a la red más fuerte disponible en su círculo. Solo necesitamos definir múltiples redes SSID y contraseña dentro del código. Utilizando el Wifimulti La función ESP32 escaneará las redes disponibles y cuando se pierda la conexión se conectará a otras redes disponibles dentro del rango ESP32.