Povežite se z najmočnejšim omrežjem WiFi v ESP32 s funkcijo WiFiMulti

Povezite Se Z Najmocnejsim Omrezjem Wifi V Esp32 S Funkcijo Wifimulti



ESP32 je mikrokrmilniška plošča, ki temelji na IoT in podpira WiFi in Bluetooth. ESP32 lahko deluje v treh različnih načinih WiFi (postaja, dostop ali oba). Z uporabo vseh teh načinov lahko ESP32 večkrat izboljša svojo brezžično povezljivost. Danes bomo razpravljali o podpori za več povezav WiFi v ESP32 za povezavo z najmočnejšim razpoložljivim omrežjem.

ESP32 s funkcijo WiFiMulti

ESP32 se lahko poveže z več omrežji, če imamo dostop do več kot enega omrežja, znotraj kode moramo samo določiti njihov SSID in geslo. Poiskal bo razpoložljivo omrežje in se povezal z najmočnejšim omrežjem Wi-Fi, ki ga definiramo v kodi.







Opomba: Ne pozabite, da se bo povezal z enim omrežjem naenkrat, če se bo povezava s tem omrežjem izgubila, potem se bo ESP32 povezal z drugimi razpoložljivimi omrežji WiFi.



Primer WiFiMulti lahko odpremo v Arduino IDE:



Pojdi do : Datoteka > Primeri > WiFi > WifiMulti





Kako dodati več omrežij WiFi v ESP32

Za dodajanje več omrežij WiFi na ploščo ESP32. Uporabili bomo WifiMulti funkcijo z addAP() . Funkcija addAP() lahko kot argument sprejme več SSID-jev in gesel. Če želite dodati več omrežij, morate njihova SSID in gesla definirati ločeno. Sledi sintaksa za dodajanje več kot enega omrežja z uporabo WifiMulti funkcijo z addAP() :



wifiMulti. addAP ( 'SSID omrežje1' , 'Geslo1' ) ;

wifiMulti. addAP ( 'SSID omrežje 2' , 'Geslo2' ) ;

wifiMulti. addAP ( 'SSID omrežje3' , 'Geslo3' ) ;

Kako se povezati z najmočnejšim omrežjem WiFi v ESP32

Za povezavo ESP32 z najmočnejšim razpoložljivim omrežjem bomo združili ESP32 WiFi scan in WiFi multi example. V Arduino IDE bomo napisali kodo, ki bo opravila naslednje korake:

  • Poiščite razpoložljiva omrežja
  • Natisnite njihov RSSI (moč signala) na serijski monitor. Torej lahko preverimo najmočnejše razpoložljivo omrežje
  • Samodejno se poveže z najmočnejšim omrežjem
  • Če izgubi povezavo, se samodejno poveže z naslednjim razpoložljivim najmočnejšim omrežjem

Za testiranje kode bomo uporabili a Pametni telefon dostopno točko in omrežje WiFi. Omrežju mobilne dostopne točke vedno dodelite preprosto ime, da se izognete morebitnim napakam.

Zdaj naložite kodo, podano na plošči ESP32, z uporabo Arduino IDE.

Koda

Odprite Arduino IDE in naložite kodo v ESP32. Ne pozabite izbrati vrat COM.

#include /*Vključena knjižnica WIFI*/

#include /*Vključena knjižnica več WIFI*/

WiFiMulti wifiMulti ;
/*Na čas povezave AP. Povečajte, ko ESP32 potrebuje več časa za povezavo*/
konst uint32_t connectTimeoutMs = 10000 ;
praznina nastaviti ( ) {
Serijski. začeti ( 115200 ) ; /*Začne se serijska komunikacija*/
zamuda ( 10 ) ;
Wifi. način ( WIFI_STA ) ; /*ESP32 WIFI inicializiran kot postaja*/
/*Vnesite vse znane SSID in njihova gesla*/
wifiMulti. addAP ( 'VAŠ SSID' , 'GESLO' ) ; /*Omrežje 1, ki ga želimo povezati*/
wifiMulti. addAP ( 'telefon' ) ; /*Omrežje 2, ki ga želimo povezati*/
// WiFi.scanNetworks bo dal skupno število omrežij
int n = Wifi. scanNetworks ( ) ; /*Išči razpoložljivo omrežje*/
Serijski. println ( 'skeniranje opravljeno' ) ;
če ( n == 0 ) {
Serijski. println ( 'Ni razpoložljivih omrežij' ) ; /*Natisne, če ni mogoče najti omrežja*/
}
drugače {
Serijski. tiskanje ( n ) ;
Serijski. println ( 'Najdena omrežja' ) ; /*Natisne, če je omrežje najdeno*/
za ( int jaz = 0 ; jaz < n ; ++ jaz ) {
Serijski. tiskanje ( jaz + 1 ) ; /*Natisni SSID in RSSI razpoložljivega omrežja*/
Serijski. tiskanje ( ':' ) ;
Serijski. tiskanje ( Wifi. SSID ( jaz ) ) ;
Serijski. tiskanje ( '(' ) ;
Serijski. tiskanje ( Wifi. RSSI ( jaz ) ) ;
Serijski. tiskanje ( ')' ) ;
Serijski. println ( ( Wifi. encryptionType ( jaz ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
zamuda ( 10 ) ;
}
}
/*Povezuje se z najmočnejšim razpoložljivim definiranim omrežjem z razpoložljivima SSID in geslom*/
Serijski. println ( 'Povezovanje z Wifi ...' ) ;
če ( wifiMulti. teči ( ) == WL_CONNECTED ) {
Serijski. println ( '' ) ;
Serijski. println ( 'Povezan z omrežjem WIFI' ) ;
Serijski. println ( 'Naslov IP povezanega omrežja: ' ) ;
Serijski. println ( Wifi. lokalniIP ( ) ) ; /*Natisne naslov IP povezanega omrežja*/
}
}
praznina zanka ( ) {
če ( wifiMulti. teči ( connectTimeoutMs ) == WL_CONNECTED ) { /*če je povezava izgubljena, se bo povezal z naslednjim omrežjem*/
Serijski. tiskanje ( 'WiFi vzpostavljen: ' ) ;
Serijski. tiskanje ( Wifi. SSID ( ) ) ;
Serijski. tiskanje ( ' ' ) ;
Serijski. println ( Wifi. RSSI ( ) ) ;
}
drugače {
Serijski. println ( 'WiFi ni povezan!' ) ; /*če vsi pogoji niso izpolnjeni, natisni to*/
}
zamuda ( 1000 ) ;
}

Koda se je začela z definiranjem knjižnic WiFi za ESP32, nato smo ustvarili a WiFiMulti predmet. Nato smo v nastavitvenem delu dodali dve omrežji. Eno je omrežje WiFi, ki je šifrirano z geslom, tako da moramo zagotoviti geslo, medtem ko je drugo omrežje, ki je dostopna točka pametnega telefona, odprto, tako da ne potrebujemo nobenega gesla, samo vnesite omrežni SSID.

Naprej, z uporabo wifiMulti.run() ukaz ESP32 se bo povezal z najmočnejšim razpoložljivim omrežjem. Ko je povezava WiFi vzpostavljena, bo koda natisnila SSID povezanega omrežja, naslov IP in RSSI.

Izhod

Po nalaganju kode v ESP32 bo najprej poiskal razpoložljivo omrežje, nato pa se bo povezal z najmočnejšim razpoložljivim omrežjem. Tukaj lahko vidimo vrednost RSSI za vsako omrežje, nižji RSSI pomeni, da je omrežje močnejše.

  Samodejno ustvarjen besedilni opis

Vidimo lahko, da je ESP32 povezan z telefonsko omrežje ker ima RSSI vrednost -62 in drugo omrežje, katerega SSID in geslo sta definirana, je Ekipa SAM katerih vrednost je -73. Tu ima omrežje mobilne dostopne točke vrednost RSSI, ki je bližje ničli, pomeni močnejšo povezavo.

Zdaj odklopite dostopno točko pametnega telefona. ESP32 se bo sam povezal z drugimi močnejšimi razpoložljivimi omrežji. Kot v izhodu lahko vidimo, da je ESP32 zdaj povezan z naslednjim najmočnejšim razpoložljivim omrežjem. Omrežje, s katerim je povezan, je Team SAM z vrednostjo RSSI 0f -65.

Zaključek

ESP32 se lahko poveže z najmočnejšim omrežjem, ki je na voljo v njegovem krogu. Določiti moramo samo SSID več omrežij in geslo znotraj kode. Uporabljati WiFiMulti funkcija ESP32 bo iskala razpoložljiva omrežja in ko bo povezava prekinjena, se bo povezala z drugimi razpoložljivimi omrežji znotraj območja ESP32.