Sambung ke Rangkaian WiFi Terkuat dalam ESP32 Menggunakan Fungsi WiFiMulti

Sambung Ke Rangkaian Wifi Terkuat Dalam Esp32 Menggunakan Fungsi Wifimulti



ESP32 ialah papan mikropengawal berasaskan IoT yang mempunyai sokongan WiFi dan Bluetooth. ESP32 boleh beroperasi dalam tiga mod WiFi berbeza (Stesen, Akses, atau kedua-duanya). Menggunakan semua mod ini ESP32 boleh meningkatkan sambungan wayarlesnya dengan banyak lipatan. Hari ini kita akan membincangkan sokongan berbilang WiFi dalam ESP32 untuk menyambung ke rangkaian tersedia yang paling kuat.

ESP32 dengan Fungsi WiFiMulti

ESP32 boleh menyambung ke berbilang rangkaian jika kami mempunyai akses kepada lebih daripada satu rangkaian, kami hanya perlu menentukan SSID dan kata laluan mereka di dalam kod. Ia akan mencari rangkaian yang tersedia dan menyambung ke rangkaian Wi-Fi terkuat yang kami tentukan dalam kod.







Catatan: Ingat ia akan menyambung ke satu rangkaian pada satu masa jika sambungan ke rangkaian itu hilang maka ESP32 akan menyambung ke rangkaian WiFi lain yang tersedia.



Kita boleh membuka contoh WiFiMulti dalam Arduino IDE:



Pergi ke : Fail > Contoh > WiFi > WifiMulti





Cara Menambah Berbilang Rangkaian WiFi dalam ESP32

Untuk menambah berbilang rangkaian WiFi dalam papan ESP32. Kami akan menggunakan WifiMulti berfungsi dengan addAP() . Fungsi addAP() boleh menerima berbilang SSID dan kata laluan sebagai hujah. Untuk menambah berbilang rangkaian SSID dan kata laluan mereka harus ditakrifkan secara berasingan. Berikut ialah sintaks untuk menambah lebih daripada satu rangkaian menggunakan WifiMulti berfungsi dengan addAP() :



wifiMulti. addAP ( 'Rangkaian SSID1' , 'Kata Laluan1' ) ;

wifiMulti. addAP ( 'Rangkaian SSID2' , ' Kata laluan2' ) ;

wifiMulti. addAP ( 'Rangkaian SSID3' , ' Kata laluan3' ) ;

Cara Menyambung ke Rangkaian WiFi Terkuat dalam ESP32

Untuk menyambungkan ESP32 dengan rangkaian tersedia terkuat kami akan menggabungkan imbasan WiFi ESP32 dan contoh berbilang WiFi. Kami akan menulis kod dalam Arduino IDE yang akan melakukan langkah berikut:

  • Imbas untuk rangkaian yang tersedia
  • Cetak RSSI (Kekuatan Isyarat) mereka pada monitor bersiri. Jadi, kita boleh menyemak rangkaian terkuat yang tersedia
  • Bersambung secara automatik ke rangkaian terkuat
  • Jika ia terputus sambungan, ia akan bersambung secara automatik ke rangkaian terkuat seterusnya yang tersedia

Untuk menguji kod, kami akan menggunakan a Telefon pintar hotspot dan rangkaian WiFi. Sentiasa berikan nama ringkas kepada rangkaian tempat liputan mudah alih untuk mengelakkan sebarang ralat.

Sekarang muat naik kod yang diberikan dalam papan ESP32 menggunakan Arduino IDE.

Kod

Buka Arduino IDE dan muat naik kod dalam ESP32. Ingat untuk memilih port COM.

#include /*Pustaka WIFI disertakan*/

#include /*Pustaka WIFI berbilang disertakan*/

WiFiMulti wifiMulti ;
/* Setiap masa sambungan AP. Tingkatkan apabila ESP32 mengambil lebih banyak masa untuk sambungan*/
const uint32_t connectTimeoutCik = 10000 ;
batal persediaan ( ) {
bersiri. bermula ( 115200 ) ; /*Komunikasi bersiri bermula*/
kelewatan ( 10 ) ;
WiFi. mod ( WIFI_STA ) ; /*WIFI ESP32 dimulakan sebagai Stesen*/
/*Taip semua SSID yang diketahui dan kata laluannya*/
wifiMulti. addAP ( 'SSID ANDA' , 'KATAlaluan' ) ; /*Rangkaian 1 yang ingin kami sambungkan*/
wifiMulti. addAP ( 'telefon' ) ; /*Rangkaian 2 yang ingin kami sambungkan*/
// WiFi.scanNetworks akan memberikan jumlah rangkaian
int n = WiFi. scanNetworks ( ) ; /*Imbas untuk rangkaian yang tersedia*/
bersiri. println ( 'imbasan selesai' ) ;
jika ( n == 0 ) {
bersiri. println ( 'Tiada Rangkaian Tersedia' ) ; /*Cetak jika tiada rangkaian ditemui*/
}
lain {
bersiri. cetak ( n ) ;
bersiri. println ( 'Rangkaian ditemui' ) ; /*Cetak jika rangkaian ditemui*/
untuk ( int i = 0 ; i < n ; ++ i ) {
bersiri. cetak ( i + 1 ) ; /*Cetak SSID dan RSSI rangkaian yang tersedia*/
bersiri. cetak ( ':' ) ;
bersiri. cetak ( WiFi. SSID ( i ) ) ;
bersiri. cetak ( '(' ) ;
bersiri. cetak ( WiFi. RSSI ( i ) ) ;
bersiri. cetak ( ')' ) ;
bersiri. println ( ( WiFi. encryptionType ( i ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
kelewatan ( 10 ) ;
}
}
/*Menyambung kepada rangkaian tertakrif yang tersedia terkuat dengan SSID dan Kata Laluan tersedia*/
bersiri. println ( 'Menyambung ke Wifi...' ) ;
jika ( wifiMulti. lari ( ) == WL_CONNECTED ) {
bersiri. println ( '' ) ;
bersiri. println ( 'Disambungkan ke Rangkaian WIFI' ) ;
bersiri. println ( 'Alamat IP Rangkaian Bersambung: ' ) ;
bersiri. println ( WiFi. localIP ( ) ) ; /*Mencetak alamat IP rangkaian yang disambungkan*/
}
}
batal gelung ( ) {
jika ( wifiMulti. lari ( connectTimeoutCik ) == WL_CONNECTED ) { /*jika sambungan terputus ia akan menyambung ke rangkaian seterusnya*/
bersiri. cetak ( 'WiFi disambungkan:' ) ;
bersiri. cetak ( WiFi. SSID ( ) ) ;
bersiri. cetak ( ' ' ) ;
bersiri. println ( WiFi. RSSI ( ) ) ;
}
lain {
bersiri. println ( 'WiFi tidak disambungkan!' ) ; /*jika semua syarat gagal cetak ini*/
}
kelewatan ( 1000 ) ;
}

Kod bermula dengan mentakrifkan perpustakaan WiFi untuk ESP32, kemudian kami mencipta a WiFiMulti objek. Seterusnya, dalam bahagian persediaan kami menambah dua rangkaian. Satu ialah rangkaian WiFi yang disulitkan kata laluan jadi kami perlu menyediakan kata laluan manakala rangkaian kedua iaitu hotspot telefon pintar dibuka, jadi kami tidak memerlukan sebarang kata laluan hanya menaip SSID rangkaian.

Seterusnya, menggunakan wifiMulti.run() arahan ESP32 akan menyambung ke rangkaian terkuat yang tersedia. Setelah kod WiFi disambungkan akan mencetak SSID rangkaian yang disambungkan, alamat IP dan RSSI.

Pengeluaran

Selepas memuat naik kod ke ESP32 terlebih dahulu ia akan mengimbas rangkaian yang tersedia kemudian ia akan menyambung ke rangkaian yang tersedia paling kuat. Di sini kita dapat melihat nilai RSSI untuk setiap rangkaian, RSSI yang lebih rendah bermakna lebih kuat adalah rangkaian.

  Perihalan Teks dijana secara automatik

Kita dapat melihat bahawa ESP32 disambungkan ke rangkaian telefon kerana ia mempunyai RSSI nilai -62 dan rangkaian lain yang SSID dan kata laluannya ditakrifkan ialah Pasukan SAM yang nilainya -73. Di sini rangkaian tempat liputan mudah alih mempunyai nilai RSSI yang lebih hampir kepada sifar bermakna sambungan yang lebih kukuh.

Sekarang putuskan sambungan hotspot Telefon pintar. ESP32 akan menyambung sendiri ke rangkaian lain yang tersedia lebih kukuh. Seperti dalam output, kita dapat melihat ESP32 kini disambungkan ke rangkaian tersedia terkuat seterusnya. Rangkaian yang disambungkan ialah Pasukan SAM yang mempunyai nilai RSSI 0f -65.

Kesimpulan

ESP32 boleh menyambung ke rangkaian terkuat yang terdapat dalam kalangannya. Kami hanya perlu menentukan SSID dan kata laluan berbilang rangkaian di dalam kod. Menggunakan WiFiMulti fungsi ESP32 akan mengimbas rangkaian yang tersedia dan apabila sambungan terputus ia akan menyambung ke rangkaian lain yang tersedia dalam julat ESP32.