WiFiMulti İşlevini Kullanarak ESP32'deki En Güçlü WiFi Ağına Bağlanın

Wifimulti Islevini Kullanarak Esp32 Deki En Guclu Wifi Agina Baglanin



ESP32, WiFi ve Bluetooth desteğine sahip IoT tabanlı bir mikrodenetleyici kartıdır. ESP32, üç farklı WiFi modunda çalışabilir (İstasyon, Erişim veya her ikisi). Tüm bu modları kullanmak ESP32, kablosuz bağlantısını birçok kat artırabilir. Bugün, mevcut en güçlü ağa bağlanmak için ESP32'deki çoklu WiFi desteğini tartışacağız.

WiFiMulti İşlevli ESP32

Birden fazla ağa erişimimiz varsa ESP32 birden fazla ağa bağlanabilir, sadece kodun içinde SSID'lerini ve şifrelerini tanımlamamız gerekir. Kullanılabilir ağı arayacak ve kodda tanımladığımız en güçlü Wi-Fi ağına bağlanacaktır.







Not: Bu ağa bağlantı kesilirse her seferinde bir ağa bağlanacağını unutmayın, ardından ESP32 diğer kullanılabilir WiFi ağlarına bağlanacaktır.



Arduino IDE'de WiFiMulti örneğini açabiliriz:



git : Dosya > Örnekler > WiFi > WifiMulti





ESP32'de Birden Çok WiFi Ağı Nasıl Eklenir?

ESP32 kartına birden fazla WiFi ağı eklemek için. biz kullanacağız WifiÇoklu ile işlev AP ekle() . addAP() işlevi, birden çok SSID'yi ve parolayı bağımsız değişken olarak kabul edebilir. Birden çok ağ eklemek için SSID'leri ve parolaları ayrı ayrı tanımlanmalıdır. Aşağıda, kullanarak birden fazla ağ eklemek için sözdizimi verilmiştir. WifiÇoklu ile işlev AP ekle() :



wifiMulti. ek AP ( 'SSID Ağı1' , 'Şifre1' ) ;

wifiMulti. ek AP ( 'SSID Ağı2' , 'Şifre2' ) ;

wifiMulti. ek AP ( 'SSID Ağı3' , 'Şifre3' ) ;

ESP32'de En Güçlü WiFi Ağına Nasıl Bağlanılır

ESP32'yi mevcut en güçlü ağa bağlamak için ESP32 WiFi taramasını ve WiFi çoklu örneğini birleştireceğiz. Arduino IDE'de aşağıdaki adımları gerçekleştirecek bir kod yazacağız:

  • Kullanılabilir ağları tara
  • RSSI'lerini (Sinyal Gücü) seri monitörde yazdırın. Böylece, mevcut en güçlü ağı kontrol edebiliriz
  • En güçlü ağa otomatik olarak bağlanır
  • Bağlantıyı kaybederse, otomatik olarak bir sonraki mevcut en güçlü ağa bağlanacaktır.

Kodu test etmek için bir akıllı telefon etkin nokta ve bir WiFi ağı. Herhangi bir hatayı önlemek için mobil ortak erişim noktası ağına her zaman basit bir ad atayın.

Şimdi Arduino IDE kullanarak ESP32 kartında verilen kodu yükleyin.

kod

Arduino IDE'yi açın ve kodu ESP32'ye yükleyin. COM bağlantı noktasını seçmeyi unutmayın.

#include /*WIFI kitaplığı dahildir*/

#include /*Multi WIFI kitaplığı dahildir*/

WiFiÇoklu wifiÇoklu ;
/*AP bağlantı süresi başına. ESP32 bağlantısı için daha fazla zaman aldığında artırın*/
sabit uint32_t connectTimeoutMs = 10000 ;
geçersiz kurmak ( ) {
Seri. başlamak ( 115200 ) ; /*Seri iletişim başlar*/
gecikme ( 10 ) ;
Kablosuz internet. mod ( WIFI_STA ) ; /*ESP32 WIFI, İstasyon olarak başlatıldı*/
/*Bilinen tüm SSID'leri ve parolalarını yazın*/
wifiMulti. ek AP ( 'SSID'NİZ' , 'ŞİFRE' ) ; /*Ağ 1'e bağlanmak istiyoruz*/
wifiMulti. ek AP ( 'telefon' ) ; /*Ağ 2'ye bağlanmak istiyoruz*/
// WiFi.scanNetworks toplam ağları verecek
int n = Kablosuz internet. tarama Ağları ( ) ; /*Kullanılabilir ağı tarayın*/
Seri. yazdır ( 'tarama tamamlandı' ) ;
eğer ( n == 0 ) {
Seri. yazdır ( 'Kullanılabilir Ağ Yok' ) ; /*Ağ bulunamadıysa yazdırır*/
}
başka {
Seri. Yazdır ( n ) ;
Seri. yazdır ( ' Ağlar bulundu' ) ; /*Ağ bulunursa yazdırır*/
için ( int i = 0 ; i < n ; ++ i ) {
Seri. Yazdır ( i + 1 ) ; /*Kullanılabilir ağın SSID ve RSSI'sini yazdır*/
Seri. Yazdır ( ':' ) ;
Seri. Yazdır ( Kablosuz internet. SSID ( i ) ) ;
Seri. Yazdır ( '(' ) ;
Seri. Yazdır ( Kablosuz internet. RSSI ( i ) ) ;
Seri. Yazdır ( ')' ) ;
Seri. yazdır ( ( Kablosuz internet. şifreleme tipi ( i ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
gecikme ( 10 ) ;
}
}
/*Kullanılabilir SSID ve Parola ile mevcut en güçlü tanımlı ağa bağlanır*/
Seri. yazdır ( 'Wifi'ye bağlanılıyor...' ) ;
eğer ( wifiMulti. koşmak ( ) == WL_BAĞLANTI ) {
Seri. yazdır ( '' ) ;
Seri. yazdır ( 'WIFI Ağına Bağlı' ) ;
Seri. yazdır ( 'Bağlı Ağın IP adresi: ' ) ;
Seri. yazdır ( Kablosuz internet. yerelIP ( ) ) ; /*Bağlı ağın IP adresini yazdırır*/
}
}
geçersiz döngü ( ) {
eğer ( wifiMulti. koşmak ( connectTimeoutMs ) == WL_BAĞLANTI ) { /*bağlantı kesilirse bir sonraki ağa bağlanır*/
Seri. Yazdır ( 'WiFi bağlandı: ' ) ;
Seri. Yazdır ( Kablosuz internet. SSID ( ) ) ;
Seri. Yazdır ( ' ' ) ;
Seri. yazdır ( Kablosuz internet. RSSI ( ) ) ;
}
başka {
Seri. yazdır ( 'WiFi bağlı değil!' ) ; /*tüm koşullar başarısız olursa bunu yazdır*/
}
gecikme ( 1000 ) ;
}

Kod, ESP32 için WiFi kitaplıkları tanımlayarak başladı, ardından bir WiFiÇoklu nesne. Ardından, kurulum bölümünde iki ağ ekledik. Biri, parola ile şifrelenmiş bir WiFi ağıdır, bu nedenle, bir akıllı telefon etkin noktası olan ikinci ağ açıkken bir parola sağlamamız gerekir, bu nedenle, ağ SSID'sini yazarak herhangi bir parolaya ihtiyacımız yoktur.

Sonraki, kullanarak wifiMulti.run() ESP32 komutu mevcut en güçlü ağa bağlanacaktır. WiFi bağlandıktan sonra kod, bağlı ağ SSID'sini, IP adresini ve RSSI'yi yazdıracaktır.

Çıktı

Kodu ESP32'ye yükledikten sonra, önce mevcut ağı tarayacak, ardından mevcut en güçlü ağa bağlanacaktır. Burada her ağ için RSSI değerini görebiliriz, daha düşük bir RSSI, ağın daha güçlü olduğu anlamına gelir.

  Metin Açıklaması otomatik olarak oluşturuldu

ESP32'nin bağlı olduğunu görebiliriz. telefon ağı çünkü bir RSSI değeri -62 ve SSID ve şifresi tanımlanmış olan diğer ağ Takım SAM kimin değeri -73. Burada mobil hotspot ağının RSSI değerinin sıfıra yakın olması daha güçlü bir bağlantı anlamına gelir.

Şimdi Akıllı Telefon etkin noktasının bağlantısını kesin. ESP32 kendisini mevcut diğer daha güçlü ağlara bağlayacaktır. Çıktıda olduğu gibi, ESP32'nin artık bir sonraki en güçlü mevcut ağa bağlı olduğunu görebiliriz. Bağlı olduğu ağ, RSSI değeri 0f -65 olan Team SAM'dir.

Çözüm

ESP32, çevresinde bulunan en güçlü ağa bağlanabilir. Kodun içinde birden fazla ağ SSID'si ve şifresi tanımlamamız yeterlidir. Kullanmak WiFiÇoklu işlev ESP32, mevcut ağları tarar ve bağlantı kesildiğinde, ESP32 aralığındaki diğer kullanılabilir ağlara bağlanır.