Povežite se s najjačom WiFi mrežom u ESP32 koristeći WiFiMulti funkciju

Povezite Se S Najjacom Wifi Mrezom U Esp32 Koristeci Wifimulti Funkciju



ESP32 je mikrokontrolerska ploča temeljena na IoT-u koja podržava WiFi i Bluetooth. ESP32 može raditi u tri različita WiFi načina (stanica, pristup ili oba). Korištenjem svih ovih načina ESP32 može višestruko poboljšati svoju bežičnu povezanost. Danas ćemo raspravljati o multi-WiFi podršci u ESP32 za povezivanje na najjaču dostupnu mrežu.

ESP32 s funkcijom WiFiMulti

ESP32 se može spojiti na više mreža ako imamo pristup na više od jedne mreže, samo trebamo definirati njihov SSID i lozinku unutar koda. Tražit će dostupnu mrežu i spojiti se na najjaču Wi-Fi mrežu koju definiramo kodom.







Bilješka: Imajte na umu da će se spojiti na jednu po jednu mrežu ako se veza s tom mrežom izgubi, ESP32 će se povezati s drugim dostupnim WiFi mrežama.



Primjer WiFiMulti možemo otvoriti u Arduino IDE:



Ići : Datoteka > Primjeri > WiFi > WifiMulti





Kako dodati više WiFi mreža u ESP32

Za dodavanje više WiFi mreža u ESP32 ploču. Koristit ćemo se WifiMulti funkcija sa dodajAP() . Funkcija addAP() može prihvatiti više SSID-ova i lozinki kao argument. Za dodavanje više mreža njihov SSID i zaporke trebaju biti definirani odvojeno. Slijedi sintaksa za dodavanje više od jedne mreže pomoću WifiMulti funkcija sa dodajAP() :



wifiMulti. dodatiAP ( 'SSID mreža1' , 'Lozinka1' ) ;

wifiMulti. dodatiAP ( 'SSID mreža 2' , 'Lozinka2' ) ;

wifiMulti. dodatiAP ( 'SSID mreža 3' , 'Lozinka3' ) ;

Kako se spojiti na najjaču WiFi mrežu u ESP32

Za povezivanje ESP32 s najjačom dostupnom mrežom kombinirat ćemo ESP32 WiFi skeniranje i WiFi multi primjer. Napisat ćemo kod u Arduino IDE koji će izvršiti sljedeće korake:

  • Skenirajte dostupne mreže
  • Ispišite njihov RSSI (jačina signala) na serijskom monitoru. Dakle, možemo provjeriti najjaču dostupnu mrežu
  • Automatski se spaja na najjaču mrežu
  • Ako izgubi vezu, automatski će se spojiti na sljedeću dostupnu najjaču mrežu

Za testiranje koda koristit ćemo a Pametni telefon hotspot i WiFi mreža. Uvijek dodijelite jednostavno ime mreži mobilne pristupne točke kako biste izbjegli bilo kakvu pogrešku.

Sada prenesite kod dat na ESP32 ploči koristeći Arduino IDE.

Kodirati

Otvorite Arduino IDE i prenesite kod u ESP32. Ne zaboravite odabrati COM port.

#include /*WIFI biblioteka uključena*/

#include /*Uključena multi WIFI biblioteka*/

WiFiMulti wifiMulti ;
/*Po vremenu spajanja na AP. Povećajte kada ESP32 treba više vremena za povezivanje*/
konst uint32_t ConnectTimeoutMs = 10000 ;
poništiti postaviti ( ) {
Serijski. početi ( 115200 ) ; /*Počinje serijska komunikacija*/
odgoditi ( 10 ) ;
WiFi. način rada ( WIFI_STA ) ; /*ESP32 WIFI inicijaliziran kao stanica*/
/*Upišite sve poznate SSID i njihove lozinke*/
wifiMulti. dodatiAP ( 'VAŠ SSID' , 'ZAPORKA' ) ; /*Mreža 1 koju želimo spojiti*/
wifiMulti. dodatiAP ( 'telefon' ) ; /*Mreža 2 koju želimo spojiti*/
// WiFi.scanNetworks će dati ukupne mreže
int n = WiFi. scanNetworks ( ) ; /*Skeniraj dostupnu mrežu*/
Serijski. println ( 'skeniranje gotovo' ) ;
ako ( n == 0 ) {
Serijski. println ( 'Nema dostupnih mreža' ) ; /*Ispisuje ako nije pronađena mreža*/
}
drugo {
Serijski. ispisati ( n ) ;
Serijski. println ( 'Pronađene mreže' ) ; /*Ispisuje ako je mreža pronađena*/
za ( int ja = 0 ; ja < n ; ++ ja ) {
Serijski. ispisati ( ja + 1 ) ; /*Ispiši SSID i RSSI dostupne mreže*/
Serijski. ispisati ( ':' ) ;
Serijski. ispisati ( WiFi. SSID ( ja ) ) ;
Serijski. ispisati ( '(' ) ;
Serijski. ispisati ( WiFi. RSSI ( ja ) ) ;
Serijski. ispisati ( ')' ) ;
Serijski. println ( ( WiFi. encryptionType ( ja ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
odgoditi ( 10 ) ;
}
}
/*Povezuje se na najjaču dostupnu definiranu mrežu s dostupnim SSID-om i lozinkom*/
Serijski. println ( 'Povezivanje na Wifi...' ) ;
ako ( wifiMulti. trčanje ( ) == WL_CONNECTED ) {
Serijski. println ( '' ) ;
Serijski. println ( 'Povezano s WIFI mrežom' ) ;
Serijski. println ( 'IP adresa povezane mreže: ' ) ;
Serijski. println ( WiFi. lokalniIP ( ) ) ; /*Ispisuje IP adresu povezane mreže*/
}
}
poništiti petlja ( ) {
ako ( wifiMulti. trčanje ( ConnectTimeoutMs ) == WL_CONNECTED ) { /*ako se veza izgubi, spojit će se na sljedeću mrežu*/
Serijski. ispisati ( 'WiFi povezan: ' ) ;
Serijski. ispisati ( WiFi. SSID ( ) ) ;
Serijski. ispisati ( ' ' ) ;
Serijski. println ( WiFi. RSSI ( ) ) ;
}
drugo {
Serijski. println ( 'WiFi nije povezan!' ) ; /*ako svi uvjeti ne ispune ispišite ovo*/
}
odgoditi ( 1000 ) ;
}

Kod je započeo definiranjem WiFi biblioteka za ESP32, a zatim smo stvorili a WiFiMulti objekt. Zatim smo u dijelu postavljanja dodali dvije mreže. Jedna je WiFi mreža koja je šifrirana lozinkom tako da moramo unijeti lozinku dok je druga mreža koja je hotspot pametnog telefona otvorena, tako da ne trebamo lozinku samo utipkajte SSID mreže.

Dalje, koristeći wifiMulti.run() naredba ESP32 spojit će se na najjaču dostupnu mrežu. Kada se WiFi poveže, kod će ispisati SSID povezane mreže, IP adresu i RSSI.

Izlaz

Nakon učitavanja koda na ESP32 prvo će skenirati dostupnu mrežu, a zatim će se spojiti na najjaču dostupnu mrežu. Ovdje možemo vidjeti RSSI vrijednost za svaku mrežu, niži RSSI znači da je mreža jača.

  Tekst Opis automatski generiran

Vidimo da je ESP32 povezan s telefonska mreža jer ima RSSI vrijednost -62 a druga mreža čiji su SSID i lozinka definirani je Tim SAM čija je vrijednost -73. Ovdje mreža mobilne pristupne točke ima RSSI vrijednost bližu nuli što znači jaču vezu.

Sada odspojite pristupnu točku pametnog telefona. ESP32 će se povezati s drugim jačim dostupnim mrežama. Kao što u izlazu možemo vidjeti da je ESP32 sada spojen na sljedeću najjaču dostupnu mrežu. Mreža na koju je spojen je Team SAM s RSSI vrijednošću 0f -65.

Zaključak

ESP32 se može spojiti na najjaču mrežu dostupnu u svom krugu. Samo trebamo definirati SSID više mreža i lozinku unutar koda. Koristiti WiFiMulti funkcija ESP32 će skenirati dostupne mreže i kada se veza izgubi, spojit će se na druge dostupne mreže unutar ESP32 dometa.