ESP32 WiFiMulti funkcióval
Az ESP32 több hálózathoz is tud csatlakozni, ha több hálózathoz is hozzáférünk, csak meg kell adnunk az SSID-t és a jelszavukat a kódban. Megkeresi az elérhető hálózatot, és a kódban meghatározott legerősebb Wi-Fi hálózathoz csatlakozik.
Jegyzet: Ne feledje, hogy egyszerre csak egy hálózathoz fog csatlakozni, ha a kapcsolat megszakad, akkor az ESP32 más elérhető WiFi hálózatokhoz fog csatlakozni.
A WiFiMulti példát megnyithatjuk az Arduino IDE-ben:
Menj : Fájl > Példák > WiFi > WifiMulti
Több WiFi hálózat hozzáadása az ESP32-ben
Több WiFi hálózat hozzáadásához az ESP32 kártyához. Használjuk a WifiMulti funkcióval addAP() . Az addAP() függvény több SSID-t és jelszót is elfogad argumentumként. Több hálózat hozzáadásához az SSID-t és a jelszavakat külön kell meghatározni. A következő szintaxis több hálózat hozzáadásához szükséges WifiMulti funkcióval addAP() :
wifiMulti. addAP ( 'SSID hálózat1' , 'Jelszó1' ) ;
wifiMulti. addAP ( 'SSID hálózat2' , 'Jelszó2' ) ;
wifiMulti. addAP ( 'SSID hálózat3' , 'Jelszó3' ) ;
Hogyan csatlakozhat a legerősebb WiFi hálózathoz az ESP32-ben
Az ESP32 és a legerősebb elérhető hálózat összekapcsolásához kombináljuk az ESP32 WiFi szkennelést és a WiFi multi példát. Írunk egy kódot az Arduino IDE-ben, amely a következő lépéseket hajtja végre:
- Keresse meg az elérhető hálózatokat
- Nyomtassa ki az RSSI-t (jelerősség) a soros monitorra. Tehát ellenőrizhetjük az elérhető legerősebb hálózatot
- Automatikusan csatlakozik a legerősebb hálózathoz
- Ha megszakad a kapcsolat, automatikusan csatlakozik a következő elérhető legerősebb hálózathoz
A kód teszteléséhez a Okostelefon hotspot és WiFi hálózat. A hibák elkerülése érdekében mindig rendeljen egyszerű nevet a mobil hotspot hálózathoz.
Most töltse fel az ESP32 kártyán megadott kódot az Arduino IDE segítségével.
Kód
Nyissa meg az Arduino IDE-t, és töltse fel a kódot az ESP32-ben. Ne felejtse el kiválasztani a COM portot.
#include#include
WiFiMulti wifiMulti ;
/* AP csatlakozási időnként. Növelje, ha az ESP32 több időt vesz igénybe a csatlakozáshoz*/
const uint32_t connectTimeoutMs = 10000 ;
üres beállít ( ) {
Sorozatszám. kezdődik ( 115200 ) ; /*A soros kommunikáció megkezdődik*/
késleltetés ( 10 ) ;
WiFi. mód ( WIFI_STA ) ; /*ESP32 WIFI állomásként inicializálva*/
/*Írja be az összes ismert SSID-t és azok jelszavát*/
wifiMulti. addAP ( 'ÖN SSID' , 'JELSZÓ' ) ; /*Az 1-es hálózat, amelyet csatlakozni akarunk*/
wifiMulti. addAP ( 'telefon' ) ; /*A 2. hálózat, amelyet csatlakozni akarunk*/
// A WiFi.scanNetworks összes hálózatot ad
int n = WiFi. scanNetworks ( ) ; /*Elérhető hálózat keresése*/
Sorozatszám. println ( 'beolvasás kész' ) ;
ha ( n == 0 ) {
Sorozatszám. println ( 'Nincs elérhető hálózat' ) ; /*Nyomtatás, ha nem található hálózat*/
}
más {
Sorozatszám. nyomtatás ( n ) ;
Sorozatszám. println ( 'Hálózatok találhatók' ) ; /*Nyomtat, ha hálózat található*/
számára ( int én = 0 ; én < n ; ++ én ) {
Sorozatszám. nyomtatás ( én + 1 ) ; /*Nyomtassa ki az elérhető hálózat SSID-jét és RSSI-jét*/
Sorozatszám. nyomtatás ( ':' ) ;
Sorozatszám. nyomtatás ( WiFi. SSID ( én ) ) ;
Sorozatszám. nyomtatás ( '(' ) ;
Sorozatszám. nyomtatás ( WiFi. RSSI ( én ) ) ;
Sorozatszám. nyomtatás ( ')' ) ;
Sorozatszám. println ( ( WiFi. encryptionType ( én ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
késleltetés ( 10 ) ;
}
}
/*A rendelkezésre álló legerősebb meghatározott hálózathoz csatlakozik elérhető SSID-vel és jelszóval*/
Sorozatszám. println ( 'Csatlakozás a Wi-Fi-hez...' ) ;
ha ( wifiMulti. fuss ( ) == WL_CONNECTED ) {
Sorozatszám. println ( '' ) ;
Sorozatszám. println ( 'csatlakozva a WIFI hálózathoz' ) ;
Sorozatszám. println ( 'A csatlakoztatott hálózat IP-címe:' ) ;
Sorozatszám. println ( WiFi. localIP ( ) ) ; /*A csatlakoztatott hálózat IP-címét nyomtatja ki*/
}
}
üres hurok ( ) {
ha ( wifiMulti. fuss ( connectTimeoutMs ) == WL_CONNECTED ) { /*ha a kapcsolat megszakad, a következő hálózathoz fog csatlakozni*/
Sorozatszám. nyomtatás ( 'WiFi csatlakoztatva:' ) ;
Sorozatszám. nyomtatás ( WiFi. SSID ( ) ) ;
Sorozatszám. nyomtatás ( ' ' ) ;
Sorozatszám. println ( WiFi. RSSI ( ) ) ;
}
más {
Sorozatszám. println ( 'WiFi nincs csatlakoztatva!' ) ; /*ha minden feltétel nem sikerül, nyomtasd ki*/
}
késleltetés ( 1000 ) ;
}
A kód az ESP32 WiFi könyvtárainak meghatározásával kezdődött, majd létrehoztuk a WiFiMulti tárgy. Ezután a beállítási részben két hálózatot adtunk hozzá. Az egyik egy WiFi hálózat, amely jelszóval titkosított, így meg kell adnunk egy jelszót, míg a második hálózat, amely egy okostelefon hotspot, nyitva van, így nincs szükségünk semmilyen jelszóra, csak beírjuk a hálózati SSID-t.
Ezután használja wifiMulti.run() parancs Az ESP32 az elérhető legerősebb hálózathoz csatlakozik. A WiFi csatlakoztatása után a kód kinyomtatja a csatlakoztatott hálózat SSID-jét, IP-címét és RSSI-jét.
Kimenet
Miután feltöltötte a kódot az ESP32-re, először megkeresi az elérhető hálózatot, majd csatlakozik a legerősebb elérhető hálózathoz. Itt minden hálózathoz láthatjuk az RSSI-értéket, ha az alacsonyabb RSSI azt jelenti, hogy erősebb a hálózat.
Láthatjuk, hogy az ESP32 csatlakozik a telefonhálózat mert van egy RSSI értéke -62 és a másik hálózat, amelynek SSID-je és jelszava meg van határozva SAM csapat amelynek értéke -73. Itt a mobil hotspot hálózat RSSI értéke közelebb van a nullához, ami erősebb kapcsolatot jelent.
Most válassza le az okostelefon hotspotját. Az ESP32 csatlakozni fog más erősebb elérhető hálózatokhoz. Ahogy a kimeneten is láthatjuk, az ESP32 most a következő legerősebb elérhető hálózathoz csatlakozik. A hálózat, amelyhez csatlakozik, egy Team SAM, amelynek RSSI értéke 0f -65.
Következtetés
Az ESP32 a köre legerősebb hálózatához tud csatlakozni. Csak meg kell határoznunk több hálózat SSID-jét és jelszavát a kódon belül. Használni a WiFiMulti funkció Az ESP32 megkeresi az elérhető hálózatokat, és ha a kapcsolat megszakad, csatlakozik az ESP32 tartományon belüli többi elérhető hálózathoz.