Connettiti alla rete WiFi più forte in Esptop 10 utilizzando la funzione Wifimulti

Connettiti alla rete WiFi più forte in Esptop 10 utilizzando la funzione Wifimulti
ESP32 è una scheda microcontrollore basata su IoT con supporto WiFi e Bluetooth. ESP32 può funzionare in tre diverse modalità WiFi (stazione, accesso o entrambi). L'uso di tutte queste modalità ESP32 può migliorare la sua connettività wireless di molte pieghe. Oggi discuteremo del supporto multi-wifi in ESP32 per connettersi alla rete più forte disponibile.

ESP32 con funzione wifimulti

ESP32 può connettersi a più reti se abbiamo accesso a più di una rete, dobbiamo solo definire il loro SSID e la loro password all'interno del codice. Cercherà la rete disponibile e si connetterà alla rete Wi-Fi più forte che definiamo nel codice.

Nota: Ricorda che si connetterà a una rete alla volta se la connessione a quella rete è persa, quindi ESP32 si connetterà ad altre reti WiFi disponibili.

Possiamo aprire l'esempio Wifimulti in Arduino IDE:

Vai a: File> Esempi> WiFi> Wifimulti

Come aggiungere più reti WiFi in ESP32

Per aggiungere più reti WiFi nella scheda ESP32. Useremo il Wifimulti funzione con ADDAP (). La funzione ADDAP () può accettare più SSID e password come argomento. Per aggiungere più reti che i loro SSID e le password devono essere definiti separatamente. Di seguito è riportata la sintassi per aggiungere più di una rete utilizzando Wifimulti funzione con ADDAP ():

Wifimulti.ADDAP ("SSID Network1", "Password1");
Wifimulti.ADDAP ("SSID Network2", "Password2");
Wifimulti.ADDAP ("SSID Network3", "Password3");

Come connettersi alla rete WiFi più forte in ESP32

Per collegare ESP32 con la rete più forte disponibile combineremo l'ESP32 WiFi Scan e WiFi Multi Esempio. Scriveremo un codice in Arduino IDE che farà i seguenti passaggi:

  • Scansion per le reti disponibili
  • Stampa il loro RSSI (resistenza al segnale) sul monitor seriale. Quindi, possiamo controllare la rete più forte disponibile
  • Si connette automaticamente alla rete più forte
  • Se perde connessione, si connetterà automaticamente alla prossima rete più forte disponibile

Per testare il codice, useremo un Smartphone Hotspot e una rete wifi. Assegna sempre un nome semplice alla rete di hotspot mobile per evitare qualsiasi errore.

Ora carica il codice indicato nella scheda ESP32 utilizzando Arduino IDE.

Codice

Apri Arduino IDE e CODICE DI CARICA IN ESP32. Ricorda di selezionare la porta com.

#include /*libreria wifi inclusa* /
#include /*libreria multi wifi inclusa* /
Wifimulti Wifimulti;
/*Per AP Connect Time. Aumentare quando ESP32 richiede più tempo per la connessione*/
const uint32_t ConnectTimeoutms = 10000;
void setup ()
Seriale.Inizia (115200); /*Inizia la comunicazione seriale*/
ritardo (10);
Wifi.modalità (wifi_sta); /*ESP32 WiFi inizializzato come stazione*/
/*Digita tutti i SSID noti e le loro password*/
Wifimulti.ADDAP ("il tuo SSID", "password"); /*Network 1 Vogliamo connetterci*/
Wifimulti.ADDAP ("telefono"); /*Network 2 vogliamo connetterci*/
// Wifi.scannetworks fornirà reti totali
int n = wifi.scannetworks (); /*Scansiona per la rete disponibile*/
Seriale.println ("scan fad");
if (n == 0)
Seriale.println ("nessuna reti disponibile"); /*Stampe se nessuna rete trovata*/

altro
Seriale.stampa (n);
Seriale.println ("reti trovate"); /*Stampe se la rete trovata*/
per (int i = 0; i < n; ++i)
Seriale.stampa (i + 1); /*Stampa SSID e RSSI della rete disponibile*/
Seriale.stampa(": ");
Seriale.Stampa (wifi.Ssid (i));
Seriale.stampa(" (");
Seriale.Stampa (wifi.Rssi (i));
Seriale.stampa(")");
Seriale.println ((wifi.criptiontype (i) == wifi_auth_open)?"": "*");
ritardo (10);


/*Si connette alla rete definita più forte disponibile con SSID e password disponibile*/
Seriale.println ("connessione a wifi ...");
if (wifimulti.run () == wl_connected)
Seriale.println ("");
Seriale.println ("connesso alla rete WiFi");
Seriale.println ("Indirizzo IP della rete connessa:");
Seriale.println (wifi.localip ()); /*Stampa l'indirizzo IP della rete connessa*/


void loop ()
if (wifimulti.run (connectimeoutms) == wl_connected) /*Se la connessione persa si connetterà alla rete successiva* /
Seriale.print ("wifi connesso:");
Seriale.Stampa (wifi.Ssid ());
Seriale.stampa(" ");
Seriale.println (wifi.RSSI ());

altro
Seriale.println ("wifi non connesso!"); /*Se tutte le condizioni falliscono stampa questo* /

ritardo (1000);

Codice avviato definendo le librerie WiFi per ESP32, quindi abbiamo creato un Wifimulti oggetto. Successivamente, nella parte di configurazione abbiamo aggiunto due reti. Uno è una rete WiFi crittografata sulla password, quindi dobbiamo fornire una password mentre la seconda rete che è un hotspot per smartphone è aperta, quindi non abbiamo bisogno di una password appena digitata la rete SSID.

Successivamente, usando Wifimulti.correre() Il comando ESP32 si connetterà alla rete più forte disponibile. Una volta che il WiFi è connesso, il codice collegato stamperà la rete connessa SSID, l'indirizzo IP e RSSI.

Produzione

Dopo aver caricato il codice su ESP32 prima scansionerà per la rete disponibile, quindi si connetterà alla rete disponibile più forte. Qui possiamo vedere il valore RSSI per ogni rete un RSSI inferiore significa più forte è la rete.

Possiamo vedere che ESP32 è collegato a rete telefonica Perché ha un RSSI valore di -62 e l'altra rete il cui SSID e la password sono definiti Team Sam il cui valore è -73. Qui la rete di hotspot mobile ha un valore RSSI più vicino a zero significa una connessione più forte.

Ora scollega l'hotspot per smartphone. ESP32 si connetterà ad altre reti disponibili più forti. Come nell'output possiamo vedere ESP32 è ora collegato alla prossima rete disponibile più forte. Rete a cui è connesso è il team Sam con valore RSSI 0F -65.

Conclusione

ESP32 può connettersi alla rete più forte disponibile nel suo cerchio. Dobbiamo solo definire più reti SSID e password all'interno del codice. Usando il Wifimulti Funzione ESP32 scansionerà per le reti disponibili e quando si perde la connessione si connetterà ad altre reti disponibili nell'intervallo ESP32.