Anslut till det starkaste WiFi-nätverket i ESP32 med WiFiMulti-funktionen

Anslut Till Det Starkaste Wifi Natverket I Esp32 Med Wifimulti Funktionen



ESP32 är ett IoT-baserat mikrokontrollerkort med WiFi och Bluetooth-stöd. ESP32 kan fungera i tre olika WiFi-lägen (Station, Access eller båda). Genom att använda alla dessa lägen kan ESP32 förbättra sin trådlösa anslutning med många veck. Idag kommer vi att diskutera stödet för multi-WiFi i ESP32 för att ansluta till det starkaste tillgängliga nätverket.

ESP32 med WiFi-multifunktion

ESP32 kan ansluta till flera nätverk om vi har tillgång till mer än ett nätverk, vi behöver bara definiera deras SSID och lösenord i koden. Den kommer att söka efter det tillgängliga nätverket och ansluta till det starkaste Wi-Fi-nätverket vi definierar i kod.







Notera: Kom ihåg att den kommer att ansluta till ett nätverk i taget om anslutningen till det nätverket bryts så kommer ESP32 att ansluta till andra tillgängliga WiFi-nätverk.



Vi kan öppna WiFiMulti-exempel i Arduino IDE:



Gå till : Arkiv > Exempel > WiFi > WifiMulti





Hur man lägger till flera WiFi-nätverk i ESP32

För att lägga till flera WiFi-nätverk i ESP32-kortet. Vi kommer att använda WifiMulti funktion med addAP() . Funktionen addAP() kan acceptera flera SSID och lösenord som argument. För att lägga till flera nätverk bör deras SSID och lösenord definieras separat. Följande är syntaxen för att lägga till mer än ett nätverk med hjälp av WifiMulti funktion med addAP() :



wifiMulti. addAP ( 'SSID Network1' , 'Lösenord1' ) ;

wifiMulti. addAP ( 'SSID Network2' , 'Lösenord2' ) ;

wifiMulti. addAP ( 'SSID Network3' , 'Lösenord3' ) ;

Hur man ansluter till det starkaste WiFi-nätverket i ESP32

För att ansluta ESP32 till det starkaste tillgängliga nätverket kommer vi att kombinera ESP32 WiFi-skanningen och WiFi-multiexemplet. Vi kommer att skriva en kod i Arduino IDE som kommer att göra följande steg:

  • Sök efter tillgängliga nätverk
  • Skriv ut deras RSSI (Signal Strength) på seriell monitor. Så vi kan kontrollera det starkaste tillgängliga nätverket
  • Ansluter automatiskt till det starkaste nätverket
  • Om den tappar anslutningen kommer den automatiskt att ansluta till nästa tillgängliga starkaste nätverk

För att testa koden kommer vi att använda en Smartphone hotspot och ett WiFi-nätverk. Tilldela alltid det mobila hotspot-nätverket ett enkelt namn för att undvika fel.

Ladda nu upp koden som ges i ESP32-kortet med Arduino IDE.

Koda

Öppna Arduino IDE och ladda upp kod i ESP32. Kom ihåg att välja COM-port.

#include /*WIFI-bibliotek ingår*/

#include /*Multi WIFI-bibliotek ingår*/

WiFiMulti wifiMulti ;
/*Per anslutningstid för AP. Öka när ESP32 tar längre tid för anslutning*/
konst uint32_t connectTimeoutMs = 10 000 ;
tomhet uppstart ( ) {
Serie. Börja ( 115200 ) ; /*Seriell kommunikation börjar*/
dröjsmål ( 10 ) ;
WiFi. läge ( WIFI_STA ) ; /*ESP32 WIFI initierad som Station*/
/*Skriv alla kända SSID och deras lösenord*/
wifiMulti. addAP ( 'DITT SSID' , 'LÖSENORD' ) ; /*Nätverk 1 vi vill ansluta*/
wifiMulti. addAP ( 'telefon' ) ; /*Nätverk 2 vi vill ansluta*/
// WiFi.scanNetworks ger totala nätverk
int n = WiFi. scanNetworks ( ) ; /*Sök efter tillgängligt nätverk*/
Serie. println ( 'skanning klar' ) ;
om ( n == 0 ) {
Serie. println ( 'Inga tillgängliga nätverk' ) ; /*Skriver ut om inget nätverk hittas*/
}
annan {
Serie. skriva ut ( n ) ;
Serie. println ( 'Nätverk hittades' ) ; /*Skriver ut om nätverk hittas*/
för ( int i = 0 ; i < n ; ++ i ) {
Serie. skriva ut ( i + 1 ) ; /*Skriv ut SSID och RSSI för tillgängligt nätverk*/
Serie. skriva ut ( ':' ) ;
Serie. skriva ut ( WiFi. SSID ( i ) ) ;
Serie. skriva ut ( '(' ) ;
Serie. skriva ut ( WiFi. RSSI ( i ) ) ;
Serie. skriva ut ( ')' ) ;
Serie. println ( ( WiFi. encryptionType ( i ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
dröjsmål ( 10 ) ;
}
}
/*Ansluter till det starkaste tillgängliga definierade nätverket med SSID och lösenord tillgängligt*/
Serie. println ( 'Ansluter till wifi...' ) ;
om ( wifiMulti. springa ( ) == WL_CONNECTED ) {
Serie. println ( '' ) ;
Serie. println ( 'Ansluten till WIFI-nätverk' ) ;
Serie. println ( 'IP-adress för anslutet nätverk:' ) ;
Serie. println ( WiFi. lokal IP ( ) ) ; /*Skriver ut IP-adressen för det anslutna nätverket*/
}
}
tomhet slinga ( ) {
om ( wifiMulti. springa ( connectTimeoutMs ) == WL_CONNECTED ) { /*om anslutningen förloras kommer den att ansluta till nästa nätverk*/
Serie. skriva ut ( 'WiFi anslutet:' ) ;
Serie. skriva ut ( WiFi. SSID ( ) ) ;
Serie. skriva ut ( ' ' ) ;
Serie. println ( WiFi. RSSI ( ) ) ;
}
annan {
Serie. println ( 'WiFi inte anslutet!' ) ; /*om alla villkor misslyckas skriv ut detta*/
}
dröjsmål ( 1000 ) ;
}

Koden började med att definiera WiFi-bibliotek för ESP32, sedan skapade vi en WiFiMulti objekt. Därefter lade vi till två nätverk i installationsdelen. Det ena är ett WiFi-nätverk som är lösenordskrypterat så vi måste tillhandahålla ett lösenord medan det andra nätverket som är en smartphone-hotspot är öppet, så vi behöver inte något lösenord, bara skriv in nätverkets SSID.

Därefter använder du wifiMulti.run() kommando ESP32 kommer att ansluta till det tillgängliga starkaste nätverket. När WiFi är anslutet kommer koden att skriva ut det anslutna nätverkets SSID, IP-adress och RSSI.

Produktion

Efter att ha laddat upp koden till ESP32 först kommer den att söka efter det tillgängliga nätverket och sedan ansluta till det starkaste tillgängliga nätverket. Här kan vi se RSSI-värdet för varje nätverk en lägre RSSI betyder att nätverket är starkare.

  Textbeskrivning genereras automatiskt

Vi kan se att ESP32 är ansluten till telefonnät eftersom den har en RSSI värdet av -62 och det andra nätverket vars SSID och lösenord är definierade är Team SAM vars värde är -73. Här har det mobila hotspot-nätverket ett RSSI-värde närmare noll, vilket innebär en starkare anslutning.

Koppla nu bort smartphone-hotspot. ESP32 kommer att ansluta sig till andra starkare tillgängliga nätverk. Som i utgången kan vi se att ESP32 nu är ansluten till nästa starkaste tillgängliga nätverk. Nätverk som den är ansluten till är Team SAM med RSSI-värdet 0f -65.

Slutsats

ESP32 kan ansluta till det starkaste nätverket i sin cirkel. Vi behöver bara definiera flera nätverks SSID och lösenord inuti koden. Använda WiFiMulti funktion ESP32 kommer att söka efter tillgängliga nätverk och när anslutningen bryts kommer den att ansluta till andra tillgängliga nätverk inom ESP32-räckvidden.