Prisijunkite prie stipriausio „WiFi“ tinklo ESP32 naudodami „WiFiMulti“ funkciją

Prisijunkite Prie Stipriausio Wifi Tinklo Esp32 Naudodami Wifimulti Funkcija



ESP32 yra IoT pagrindu sukurta mikrovaldiklio plokštė, turinti WiFi ir Bluetooth palaikymą. ESP32 gali veikti trimis skirtingais WiFi režimais (Station, Access arba abu). Naudodamas visus šiuos režimus, ESP32 gali pagerinti savo belaidį ryšį daug kartų. Šiandien aptarsime kelių „Wi-Fi“ palaikymą ESP32, kad būtų galima prisijungti prie stipriausio galimo tinklo.

ESP32 su WiFiMulti funkcija

ESP32 gali prisijungti prie kelių tinklų, jei turime prieigą prie daugiau nei vieno tinklo, mums tereikia apibrėžti jų SSID ir slaptažodį kode. Jis ieškos galimo tinklo ir prisijungs prie stipriausio „Wi-Fi“ tinklo, kurį apibrėžiame kode.





Pastaba: Atminkite, kad jis vienu metu prisijungs prie vieno tinklo, jei ryšys su tuo tinklu nutrūks, tada ESP32 prisijungs prie kitų galimų WiFi tinklų.



„Arduino IDE“ galime atidaryti „WiFiMulti“ pavyzdį:



Eiti į : Failas > Pavyzdžiai > „WiFi“ > „WifiMulti“.





Kaip pridėti kelis „WiFi“ tinklus ESP32

Norėdami įtraukti kelis WiFi tinklus į ESP32 plokštę. Mes naudosime „WifiMulti“. funkcija su pridėtiAP () . Funkcija addAP() gali priimti kelis SSID ir slaptažodžius kaip argumentą. Norint pridėti kelis tinklus, jų SSID ir slaptažodžiai turi būti apibrėžti atskirai. Toliau pateikiama daugiau nei vieno tinklo pridėjimo sintaksė „WifiMulti“. funkcija su pridėtiAP () :



„wifiMulti“. pridėti AP ( „SSID tinklas1“ , 'Slaptažodis1' ) ;

„wifiMulti“. pridėti AP ( „SSID tinklas2“ , 'Slaptažodis2' ) ;

„wifiMulti“. pridėti AP ( „SSID tinklas3“ , 'Slaptažodis3' ) ;

Kaip prisijungti prie stipriausio „WiFi“ tinklo ESP32

Norėdami sujungti ESP32 su stipriausiu prieinamu tinklu, sujungsime ESP32 WiFi nuskaitymą ir WiFi multi pavyzdį. Mes parašysime kodą Arduino IDE, kuris atliks šiuos veiksmus:

  • Ieškokite galimų tinklų
  • Spausdinkite jų RSSI (Signal Strength) serijiniame monitoriuje. Taigi, galime patikrinti stipriausią turimą tinklą
  • Automatiškai prisijungia prie stipriausio tinklo
  • Jei nutrūks ryšys, jis automatiškai prisijungs prie kito galimo stipriausio tinklo

Norėdami išbandyti kodą, naudosime a Išmanusis telefonas viešosios interneto prieigos tašką ir WiFi tinklą. Visada priskirkite paprastą pavadinimą mobiliojo interneto prieigos taško tinklui, kad išvengtumėte klaidų.

Dabar įkelkite kodą, pateiktą ESP32 plokštėje, naudodami Arduino IDE.

Kodas

Atidarykite Arduino IDE ir įkelkite kodą į ESP32. Nepamirškite pasirinkti COM prievado.

#include /*WIFI biblioteka įtraukta*/

#include /*Įtraukta kelių WIFI biblioteka*/

WiFiMulti wifiMulti ;
/*Per AP prisijungimo laiką. Padidinkite, kai ESP32 užtrunka daugiau laiko prisijungti*/
konst uint32_t connectTimeoutMs = 10 000 ;
tuštuma sąranka ( ) {
Serijinis. pradėti ( 115 200 ) ; /*Prasideda serijinis ryšys*/
uždelsimas ( 10 ) ;
Bevielis internetas. režimu ( WIFI_STA ) ; /*ESP32 WIFI inicijuotas kaip stotis*/
/*Įveskite visus žinomus SSID ir jų slaptažodžius*/
„wifiMulti“. pridėti AP ( „JŪSŲ SSID“ , 'SLAPTAŽODIS' ) ; /*1 tinklas, kurį norime prijungti*/
„wifiMulti“. pridėti AP ( 'telefonas' ) ; /*Tinklas 2, kurį norime prijungti*/
// WiFi.scanNetworks pateiks visus tinklus
tarpt n = Bevielis internetas. ScanNetworks ( ) ; /*Nuskaityti pasiekiamą tinklą*/
Serijinis. println ( 'nuskaitymas atliktas' ) ;
jeigu ( n == 0 ) {
Serijinis. println ( „Nėra galimų tinklų“ ) ; /*Spausdinama, jei nerastas tinklas*/
}
Kitas {
Serijinis. spausdinti ( n ) ;
Serijinis. println ( „Rasti tinklai“ ) ; /*Spausdina, jei randamas tinklas*/
dėl ( tarpt i = 0 ; i < n ; ++ i ) {
Serijinis. spausdinti ( i + 1 ) ; /*Atspausdinti galimo tinklo SSID ir RSSI*/
Serijinis. spausdinti ( ':' ) ;
Serijinis. spausdinti ( Bevielis internetas. SSID ( i ) ) ;
Serijinis. spausdinti ( '(' ) ;
Serijinis. spausdinti ( Bevielis internetas. RSSI ( i ) ) ;
Serijinis. spausdinti ( ')' ) ;
Serijinis. println ( ( Bevielis internetas. šifravimo tipas ( i ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
uždelsimas ( 10 ) ;
}
}
/*Prisijungia prie stipriausio galimo apibrėžto tinklo su pasiekiamu SSID ir slaptažodžiu*/
Serijinis. println ( 'Prisijungiama prie Wi-Fi...' ) ;
jeigu ( „wifiMulti“. paleisti ( ) == WL_CONNECTED ) {
Serijinis. println ( '' ) ;
Serijinis. println ( „Prisijungta prie WIFI tinklo“ ) ;
Serijinis. println ( 'Prisijungto tinklo IP adresas:' ) ;
Serijinis. println ( Bevielis internetas. vietinis IP ( ) ) ; /*Spausdina prijungto tinklo IP adresą*/
}
}
tuštuma kilpa ( ) {
jeigu ( „wifiMulti“. paleisti ( connectTimeoutMs ) == WL_CONNECTED ) { /*jei ryšys nutrūko, jis prisijungs prie kito tinklo*/
Serijinis. spausdinti ( „Wi-Fi prijungtas:“ ) ;
Serijinis. spausdinti ( Bevielis internetas. SSID ( ) ) ;
Serijinis. spausdinti ( ' ' ) ;
Serijinis. println ( Bevielis internetas. RSSI ( ) ) ;
}
Kitas {
Serijinis. println ( 'Wi-Fi neprijungtas!' ) ; /*jei visos sąlygos nepavyks, išspausdinkite tai*/
}
uždelsimas ( 1000 ) ;
}

Kodas prasidėjo apibrėžiant ESP32 WiFi bibliotekas, tada sukūrėme a „WiFiMulti“. objektas. Toliau sąrankos dalyje pridėjome du tinklus. Vienas iš jų yra „WiFi“ tinklas, kuris yra užšifruotas slaptažodžiu, todėl turime pateikti slaptažodį, o antrasis tinklas, kuris yra išmaniojo telefono viešosios interneto prieigos taškas, yra atidarytas, todėl mums nereikia jokio slaptažodžio, tiesiog įveskite tinklo SSID.

Toliau, naudojant wifiMulti.run() komanda ESP32 prisijungs prie galimo stipriausio tinklo. Kai bus prijungtas „WiFi“, kodas išspausdins prijungto tinklo SSID, IP adresą ir RSSI.

Išvestis

Įkėlęs kodą į ESP32, pirmiausia jis nuskaitys galimą tinklą, tada prisijungs prie stipriausio galimo tinklo. Čia matome kiekvieno tinklo RSSI reikšmę, o mažesnė RSSI reiškia, kad tinklas yra stipresnis.

  Teksto aprašymas sukurtas automatiškai

Matome, kad ESP32 yra prijungtas prie telefono tinklas nes turi RSSI vertė -62 ir kitas tinklas, kurio SSID ir slaptažodis yra apibrėžti Komanda SAM kurio vertė yra -73. Čia mobiliojo viešosios interneto prieigos taško RSSI vertė yra artimesnė nuliui, tai reiškia, kad ryšys yra stipresnis.

Dabar atjunkite išmaniojo telefono viešosios interneto prieigos tašką. ESP32 prisijungs prie kitų stipresnių galimų tinklų. Kaip ir išvestyje, matome, kad ESP32 dabar yra prijungtas prie kito stipriausio galimo tinklo. Tinklas, prie kurio jis prijungtas, yra Team SAM, kurio RSSI reikšmė 0f -65.

Išvada

ESP32 gali prisijungti prie stipriausio savo rato tinklo. Mums tereikia apibrėžti kelių tinklų SSID ir slaptažodį kode. Naudojant „WiFiMulti“. funkcija ESP32 ieškos galimų tinklų ir, nutrūkus ryšiui, prisijungs prie kitų galimų tinklų ESP32 diapazone.