Yhdistä ESP32:n vahvimpaan WiFi-verkkoon WiFiMulti-toiminnolla

Yhdista Esp32 N Vahvimpaan Wifi Verkkoon Wifimulti Toiminnolla



ESP32 on IoT-pohjainen mikro-ohjainkortti, jossa on WiFi- ja Bluetooth-tuki. ESP32 voi toimia kolmessa eri WiFi-tilassa (Station, Access tai molemmat). Kaikkia näitä tiloja käyttämällä ESP32 voi parantaa langatonta yhteyttä moninkertaisesti. Tänään keskustelemme ESP32:n multi-WiFi-tuesta yhteyden muodostamiseksi vahvimpaan saatavilla olevaan verkkoon.

ESP32 WiFiMulti-toiminnolla

ESP32 voi muodostaa yhteyden useisiin verkkoihin, jos meillä on pääsy useampaan kuin yhteen verkkoon, meidän on vain määritettävä niiden SSID ja salasana koodin sisällä. Se etsii käytettävissä olevan verkon ja muodostaa yhteyden vahvimpaan Wi-Fi-verkkoon, jonka määrittelemme koodissa.







merkintä: Muista, että se muodostaa yhteyden yhteen verkkoon kerrallaan, jos yhteys kyseiseen verkkoon katkeaa, niin ESP32 muodostaa yhteyden muihin käytettävissä oleviin WiFi-verkkoihin.



Voimme avata WiFiMulti-esimerkin Arduino IDE:ssä:



Mene : Tiedosto > Esimerkit > WiFi > WifiMulti





Kuinka lisätä useita WiFi-verkkoja ESP32:ssa

Useiden WiFi-verkkojen lisääminen ESP32-kortille. Tulemme käyttämään WifiMulti funktio kanssa addAP() . AddAP()-funktio voi hyväksyä useita SSID-tunnuksia ja salasanoja argumenttina. Useiden verkkojen lisäämiseksi niiden SSID ja salasanat on määritettävä erikseen. Seuraavassa on syntaksi useamman kuin yhden verkon lisäämiseksi WifiMulti funktio kanssa addAP() :



wifiMulti. addAP ( 'SSID-verkko1' , 'Salasana1' ) ;

wifiMulti. addAP ( 'SSID-verkko2' , 'Salasana2' ) ;

wifiMulti. addAP ( 'SSID-verkko3' , 'Salasana3' ) ;

Kuinka muodostaa yhteys vahvimpaan WiFi-verkkoon ESP32:ssa

Yhdistääksemme ESP32:n vahvimpaan saatavilla olevaan verkkoon yhdistämme ESP32 WiFi-skannauksen ja WiFi-moniesimerkin. Kirjoitamme Arduino IDE:ssä koodin, joka suorittaa seuraavat vaiheet:

  • Etsi käytettävissä olevia verkkoja
  • Tulosta niiden RSSI (Signal Strength) sarjanäytölle. Joten voimme tarkistaa vahvimman saatavilla olevan verkon
  • Yhdistää automaattisesti vahvimpaan verkkoon
  • Jos yhteys katkeaa, se muodostaa automaattisesti yhteyden seuraavaksi saatavilla olevaan vahvimpaan verkkoon

Koodin testaamiseen käytämme a Älypuhelin hotspot ja WiFi-verkko. Anna mobiilihotspot-verkolle aina yksinkertainen nimi virheiden välttämiseksi.

Lataa nyt ESP32-kortilla annettu koodi Arduino IDE:llä.

Koodi

Avaa Arduino IDE ja lataa koodi ESP32:ssa. Muista valita COM-portti.

#include /*WIFI-kirjasto sisältyy hintaan*/

#include /*Multi WIFI -kirjasto mukana*/

WiFiMulti wifiMulti ;
/*Per AP-yhteysaika. Lisää, kun ESP32 vie enemmän aikaa yhteyden muodostamiseen*/
konst uint32_t connectTimeoutMs = 10 000 ;
mitätön perustaa ( ) {
Sarja. alkaa ( 115 200 ) ; /*Sarjaviestintä alkaa*/
viive ( 10 ) ;
WiFi. -tilassa ( WIFI_STA ) ; /*ESP32 WIFI alustettu asemaksi*/
/*Kirjoita kaikki tunnetut SSID:t ja niiden salasanat*/
wifiMulti. addAP ( 'SINUN SSID' , 'SALASANA' ) ; /*Verkko 1, jonka haluamme yhdistää*/
wifiMulti. addAP ( 'puhelin' ) ; /*Verkko 2, jonka haluamme yhdistää*/
// WiFi.scanNetworks antaa verkkojen kokonaismäärän
int n = WiFi. scanNetworks ( ) ; /*Etsi käytettävissä oleva verkko*/
Sarja. println ( 'skannaus tehty' ) ;
jos ( n == 0 ) {
Sarja. println ( 'Ei saatavilla olevia verkkoja' ) ; /*Tulostaa, jos verkkoa ei löydy*/
}
muu {
Sarja. Tulosta ( n ) ;
Sarja. println ( 'Verkot löydetty' ) ; /*Tulostaa, jos verkko löytyy*/
varten ( int i = 0 ; i < n ; ++ i ) {
Sarja. Tulosta ( i + 1 ) ; /*Tulosta käytettävissä olevan verkon SSID ja RSSI*/
Sarja. Tulosta ( ':' ) ;
Sarja. Tulosta ( WiFi. SSID ( i ) ) ;
Sarja. Tulosta ( '(' ) ;
Sarja. Tulosta ( WiFi. RSSI ( i ) ) ;
Sarja. Tulosta ( ')' ) ;
Sarja. println ( ( WiFi. salaustyyppi ( i ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
viive ( 10 ) ;
}
}
/*Yhdistää vahvimpaan saatavilla olevaan määritettyyn verkkoon, jossa on käytettävissä SSID ja salasana*/
Sarja. println ( 'Yhdistetään Wi-Fi-verkkoon...' ) ;
jos ( wifiMulti. juosta ( ) == WL_CONNECTED ) {
Sarja. println ( '' ) ;
Sarja. println ( 'Yhdistetty WIFI-verkkoon' ) ;
Sarja. println ( 'Yhdistetyn verkon IP-osoite:' ) ;
Sarja. println ( WiFi. localIP ( ) ) ; /*Tulostaa yhdistetyn verkon IP-osoitteen*/
}
}
mitätön silmukka ( ) {
jos ( wifiMulti. juosta ( connectTimeoutMs ) == WL_CONNECTED ) { /*jos yhteys katkeaa, se muodostaa yhteyden seuraavaan verkkoon*/
Sarja. Tulosta ( 'WiFi yhdistetty:' ) ;
Sarja. Tulosta ( WiFi. SSID ( ) ) ;
Sarja. Tulosta ( ' ' ) ;
Sarja. println ( WiFi. RSSI ( ) ) ;
}
muu {
Sarja. println ( 'Wi-Fi ei yhdistetty!' ) ; /*jos kaikki ehdot epäonnistuvat tulosta tämä*/
}
viive ( 1000 ) ;
}

Koodi aloitettiin määrittämällä WiFi-kirjastot ESP32:lle, minkä jälkeen loimme a WiFiMulti esine. Seuraavaksi asennusosaan lisäsimme kaksi verkkoa. Yksi on WiFi-verkko, joka on salattu salasanalla, joten meidän on annettava salasana, kun toinen verkko, joka on älypuhelimen hotspot, on auki, joten emme tarvitse salasanaa, kun kirjoitimme verkon SSID:n.

Seuraavaksi käyttämällä wifiMulti.run() komento ESP32 muodostaa yhteyden vahvimpaan käytettävissä olevaan verkkoon. Kun WiFi on yhdistetty, koodi tulostaa yhdistetyn verkon SSID:n, IP-osoitteen ja RSSI:n.

Lähtö

Kun koodi on ladattu ESP32:een, se etsii ensin käytettävissä olevan verkon ja muodostaa sitten yhteyden vahvimpaan saatavilla olevaan verkkoon. Tässä voimme nähdä RSSI-arvon jokaiselle verkolle, alempi RSSI tarkoittaa, että verkko on vahvempi.

  Teksti Kuvaus luotu automaattisesti

Näemme, että ESP32 on kytketty puhelinverkko koska siinä on RSSI jonkin arvo -62 ja toinen verkko, jonka SSID ja salasana on määritetty Joukkue SAM jonka arvo on -73. Tässä mobiilin hotspot-verkon RSSI-arvo lähempänä nollaa tarkoittaa vahvempaa yhteyttä.

Irrota nyt älypuhelimen hotspot. ESP32 yhdistää itsensä muihin vahvempiin saatavilla oleviin verkkoihin. Kuten lähdössä voimme nähdä, ESP32 on nyt kytketty seuraavaksi vahvimpaan saatavilla olevaan verkkoon. Verkko, johon se on yhdistetty, on Team SAM, jonka RSSI-arvo on 0f -65.

Johtopäätös

ESP32 voi muodostaa yhteyden piirinsä vahvimpaan verkkoon. Meidän on vain määritettävä useiden verkkojen SSID ja salasana koodin sisällä. Käyttämällä WiFiMulti toiminto ESP32 etsii käytettävissä olevia verkkoja ja kun yhteys katkeaa, se muodostaa yhteyden muihin käytettävissä oleviin verkkoihin ESP32-alueella.