Koble til det sterkeste WiFi -nettverket i ESPTOP 10 ved hjelp av Wifimulti -funksjon

Koble til det sterkeste WiFi -nettverket i ESPTOP 10 ved hjelp av Wifimulti -funksjon
ESP32 er et IoT -basert mikrokontrollertavle som har WiFi og Bluetooth -støtte. ESP32 kan operere i tre forskjellige WiFi -modus (stasjon, tilgang eller begge deler). Å bruke alle disse modusene ESP32 kan forbedre den trådløse tilkoblingen med mange bretter. I dag skal vi diskutere multi-wifi-støtten i ESP32 for å koble til det sterkeste tilgjengelige nettverket.

ESP32 med wifimulti -funksjon

ESP32 kan koble til flere nettverk Hvis vi har tilgang til mer enn ett nettverk, trenger vi bare å definere SSID -en og passordet deres i koden. Det vil søke etter det tilgjengelige nettverket og koble til det sterkeste Wi-Fi-nettverket vi definerer i kode.

Merk: Husk at det vil koble seg til ett nettverk om gangen hvis forbindelsen til det nettverket går tapt, så vil ESP32 koble til andre tilgjengelige WiFi -nettverk.

Vi kan åpne wifimulti -eksempel i Arduino IDE:

Gå til: Fil> eksempler> wifi> wifimulti

Hvordan legge til flere WiFi -nettverk i ESP32

For å legge til flere WiFi -nettverk i ESP32 -styret. Vi vil bruke Wifimulti funksjon med addap (). Addap () -funksjonen kan godta flere SSID -er og passord som et argument. For å legge til flere nettverk, bør SSID og passord defineres separat. Følgende er syntaksen for å legge til mer enn ett nettverk ved hjelp av Wifimulti funksjon med addap ():

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

Hvordan koble til sterkeste wifi -nettverk i ESP32

For å koble ESP32 med det sterkeste tilgjengelige nettverket vil vi kombinere ESP32 WiFi -skanning og WiFi multi -eksempel. Vi vil skrive en kode i Arduino IDE som vil gjøre følgende trinn:

  • Skann etter tilgjengelige nettverk
  • Skriv ut RSSI (signalstyrke) på seriell skjerm. Så vi kan sjekke det sterkeste tilgjengelige nettverket
  • Kobles automatisk til det sterkeste nettverket
  • Hvis den mister tilkoblingen, vil den automatisk koble seg til det neste tilgjengelige sterkeste nettverket

For å teste koden, vil vi bruke en Smarttelefon Hotspot og et wifi -nettverk. Alltid tilordne et enkelt navn til det mobile hotspot -nettverket for å unngå feil.

Last nå opp koden gitt i ESP32 -styret ved hjelp av Arduino IDE.

Kode

Åpne Arduino IDE og laste opp kode i ESP32. Husk å velge COM -port.

#include /*wifi -bibliotek inkludert* /
#include /*multi wifi -bibliotek inkludert* /
Wifimulti wifimulti;
/*Per AP Connect Time. Øk når ESP32 tar mer tid til tilkobling*/
const uint32_t connectimeoutms = 10000;
void setup ()
Serie.Begin (115200); /*Seriell kommunikasjon begynner*/
forsinkelse (10);
Wifi.modus (wifi_sta); /*ESP32 wifi initialisert som stasjon*/
/*Skriv alle kjente SSID og passordene deres*/
Wifimulti.addap ("din ssid", "passord"); /*Nettverk 1 vi vil koble til*/
Wifimulti.addap ("telefon"); /*Nettverk 2 Vi vil koble til*/
// wifi.Scannetworks vil gi totale nettverk
int n = wifi.scannetworks (); /*Skann etter tilgjengelig nettverk*/
Serie.println ("skanning gjort");
if (n == 0)
Serie.Println ("Ingen tilgjengelige nettverk"); /*Skriver ut hvis ingen nettverk ble funnet*/

annet
Serie.trykk (n);
Serie.println ("nettverk funnet"); /*Utskrifter hvis nettverket ble funnet*/
for (int i = 0; i < n; ++i)
Serie.trykk (i + 1); /*Skriv ut SSID og RSSI for tilgjengelig nettverk*/
Serie.skrive ut(": ");
Serie.trykk (wifi.Ssid (i));
Serie.skrive ut(" (");
Serie.trykk (wifi.Rssi (i));
Serie.skrive ut(")");
Serie.Println ((wifi.EncryptionType (i) == wifi_auth_open)?"": "*");
forsinkelse (10);


/*Kobles til sterkest tilgjengelig definert nettverk med SSID og passord tilgjengelig*/
Serie.println ("koble til wifi ...");
if (wifimulti.run () == wl_connected)
Serie.println ("");
Serie.println ("koblet til WiFi -nettverk");
Serie.println ("IP -adresse til tilkoblet nettverk:");
Serie.Println (wifi.localip ()); /*Skriver ut IP -adresse til tilkoblet nettverk*/


void loop ()
if (wifimulti.Run (ConnectTimeOutms) == WL_CONNECTED) /*Hvis tilkoblingen mistet, vil den koble seg til neste nettverk* /
Serie.print ("wifi tilkoblet:");
Serie.trykk (wifi.Ssid ());
Serie.skrive ut(" ");
Serie.Println (wifi.Rssi ());

annet
Serie.println ("wifi ikke tilkoblet!"); /*Hvis alle forhold mislykkes, skriv ut dette* /

forsinkelse (1000);

Kode startet med å definere wifi -biblioteker for ESP32, så opprettet vi en Wifimulti gjenstand. Neste, i oppsettdelen la vi til to nettverk. Den ene er et wifi -nettverk som er passordkryptert, så vi må oppgi et passord mens det andre nettverket som er en smarttelefon -hotspot er åpent, så vi trenger ikke noe passord bare skrevet nettverket SSID.

Deretter bruker du Wifimulti.løpe() Kommando ESP32 vil koble seg til det tilgjengelige sterkeste nettverket. Når WiFi er tilkoblet kode, vil du skrive ut den tilkoblede nettverket SSID, IP -adresse og RSSI.

Produksjon

Etter å ha lastet opp kode til ESP32 først vil den skanne etter det tilgjengelige nettverket, og vil koble seg til det sterkeste tilgjengelige nettverket. Her kan vi se RSSI -verdien for hvert nettverk en lavere RSSI betyr sterkere er nettverket.

Vi kan se at ESP32 er koblet til Telefonnettverk fordi den har en RSSI verdien av -62 og det andre nettverket hvis SSID og passord er definert er Team Sam hvis verdi er -73. Her har det mobile hotspot -nettverket en RSSI -verdi nærmere null betyr en sterkere forbindelse.

Koble fra smarttelefonens hotspot. ESP32 vil koble seg til andre sterkere tilgjengelige nettverk. Som i output kan vi se ESP32 nå er koblet til det neste sterkeste tilgjengelige nettverket. Nettverk som det er koblet til, er Team Sam som har RSSI -verdi 0f -65.

Konklusjon

ESP32 kan koble seg til det sterkeste nettverket som er tilgjengelig i sin sirkel. Vi trenger bare å definere flere nettverk SSID og passord i koden. Bruker Wifimulti Funksjon ESP32 vil skanne etter tilgjengelige nettverk, og når tilkoblingen går tapt, vil den koble seg til andre tilgjengelige nettverk i ESP32 -serien.