Kumonekta sa Pinakamalakas na WiFi Network sa ESP32 Gamit ang WiFiMulti Function

Kumonekta Sa Pinakamalakas Na Wifi Network Sa Esp32 Gamit Ang Wifimulti Function



Ang ESP32 ay isang IoT based microcontroller board na may suporta sa WiFi at Bluetooth. Maaaring gumana ang ESP32 sa tatlong magkakaibang mga mode ng WiFi (Station, Access, o pareho). Gamit ang lahat ng mga mode na ito, mapapahusay ng ESP32 ang wireless connectivity nito sa pamamagitan ng maraming fold. Ngayon ay tatalakayin natin ang suporta sa multi-WiFi sa ESP32 upang kumonekta sa pinakamalakas na magagamit na network.

ESP32 na may WiFiMulti Function

Maaaring kumonekta ang ESP32 sa maraming network kung mayroon tayong access sa higit sa isang network, kailangan lang nating tukuyin ang kanilang SSID at password sa loob ng code. Hahanapin nito ang magagamit na network at kumonekta sa pinakamalakas na Wi-Fi network na tinukoy namin sa code.







Tandaan: Tandaan na ito ay kumonekta sa isang network sa isang pagkakataon kung ang koneksyon sa network na iyon ay mawawala pagkatapos ay ang ESP32 ay kumonekta sa iba pang magagamit na mga WiFi network.



Maaari naming buksan ang WiFiMulti halimbawa sa Arduino IDE:



Pumunta sa : File > Mga Halimbawa > WiFi > WifiMulti





Paano Magdagdag ng Maramihang WiFi Network sa ESP32

Upang magdagdag ng maraming WiFi network sa ESP32 board. Gagamitin natin ang WifiMulti function na may addAP() . Ang addAP() function ay maaaring tumanggap ng maraming SSID at password bilang argumento. Upang magdagdag ng maramihang mga network ang kanilang SSID at mga password ay dapat tukuyin nang hiwalay. Ang sumusunod ay ang syntax upang magdagdag ng higit sa isang network na ginagamit WifiMulti function na may addAP() :



wifiMulti. addAP ( 'SSID Network1' , 'Password1' ) ;

wifiMulti. addAP ( 'SSID Network2' , 'Password2' ) ;

wifiMulti. addAP ( 'SSID Network3' , 'Password3' ) ;

Paano Kumonekta sa Pinakamalakas na WiFi Network sa ESP32

Para ikonekta ang ESP32 sa pinakamalakas na available na network, pagsasamahin namin ang ESP32 WiFi scan at WiFi multi na halimbawa. Magsusulat kami ng isang code sa Arduino IDE na gagawa ng mga sumusunod na hakbang:

  • I-scan ang mga available na network
  • I-print ang kanilang RSSI (Signal Strength) sa serial monitor. Kaya, maaari naming suriin ang pinakamalakas na magagamit na network
  • Awtomatikong kumokonekta sa pinakamalakas na network
  • Kung mawalan ito ng koneksyon, awtomatiko itong kumonekta sa susunod na magagamit na pinakamalakas na network

Upang subukan ang code, gagamit tayo ng a Smartphone hotspot at isang WiFi network. Palaging magtalaga ng simpleng pangalan sa mobile hotspot network upang maiwasan ang anumang error.

Ngayon i-upload ang code na ibinigay sa ESP32 board gamit ang Arduino IDE.

Code

Buksan ang Arduino IDE at mag-upload ng code sa ESP32. Tandaang piliin ang COM port.

#include /*Kasama ang WiFi library*/

#include /*Kasama ang maramihang WIFI library*/

WiFiMulti wifiMulti ;
/*Per AP connect time. Taasan kapag ang ESP32 ay tumagal ng mas maraming oras para sa koneksyon*/
const uint32_t connectTimeoutMs = 10000 ;
walang bisa setup ( ) {
Serial. magsimula ( 115200 ) ; /*Nagsisimula ang serial communication*/
pagkaantala ( 10 ) ;
WiFi. mode ( WIFI_STA ) ; /*Nasimulan ang ESP32 WIFI bilang Station*/
/*I-type ang lahat ng kilalang SSID at ang kanilang mga password*/
wifiMulti. addAP ( 'IYONG SSID' , 'PASSWORD' ) ; /*Network 1 gusto naming ikonekta*/
wifiMulti. addAP ( 'telepono' ) ; /*Network 2 gusto naming kumonekta*/
// Ang WiFi.scanNetworks ay magbibigay ng kabuuang mga network
int n = WiFi. scanNetworks ( ) ; /*Mag-scan para sa available na network*/
Serial. println ( 'tapos na ang pag-scan' ) ;
kung ( n == 0 ) {
Serial. println ( 'Walang Magagamit na Mga Network' ) ; /*Print kung walang network found*/
}
iba pa {
Serial. print ( n ) ;
Serial. println ( 'Nakahanap ng mga network' ) ; /*Nagpi-print kung may nakitang network*/
para sa ( int i = 0 ; i < n ; ++ i ) {
Serial. print ( i + 1 ) ; /*I-print ang SSID at RSSI ng available na network*/
Serial. print ( ':' ) ;
Serial. print ( WiFi. SSID ( i ) ) ;
Serial. print ( '(' ) ;
Serial. print ( WiFi. RSSI ( i ) ) ;
Serial. print ( ')' ) ;
Serial. println ( ( WiFi. Uri ng encryption ( i ) == WIFI_AUTH_OPEN ) ? '' : '*' ) ;
pagkaantala ( 10 ) ;
}
}
/*Kumokonekta sa pinakamalakas na available na tinukoy na network na may magagamit na SSID at Password*/
Serial. println ( 'Kumokonekta sa Wifi...' ) ;
kung ( wifiMulti. tumakbo ( ) == WL_CONNECTED ) {
Serial. println ( '' ) ;
Serial. println ( 'Nakakonekta sa WIFI Network' ) ;
Serial. println ( 'IP address ng Connected Network: ' ) ;
Serial. println ( WiFi. localIP ( ) ) ; /*Nagpi-print ng IP address ng konektadong network*/
}
}
walang bisa loop ( ) {
kung ( wifiMulti. tumakbo ( connectTimeoutMs ) == WL_CONNECTED ) { /*kung nawala ang koneksyon ito ay kumonekta sa susunod na network*/
Serial. print ( 'Nakakonekta ang WiFi: ' ) ;
Serial. print ( WiFi. SSID ( ) ) ;
Serial. print ( '' ) ;
Serial. println ( WiFi. RSSI ( ) ) ;
}
iba pa {
Serial. println ( 'Hindi nakakonekta ang WiFi!' ) ; /*kung mabigo ang lahat ng kundisyon i-print ito*/
}
pagkaantala ( 1000 ) ;
}

Nagsimula ang code sa pamamagitan ng pagtukoy sa mga WiFi library para sa ESP32, pagkatapos ay gumawa kami ng a WiFiMulti bagay. Susunod, sa bahagi ng pag-setup ay nagdagdag kami ng dalawang network. Ang isa ay isang WiFi network na naka-encrypt ng password kaya kailangan naming magbigay ng password habang ang pangalawang network na isang smartphone hotspot ay bukas, kaya hindi namin kailangan ng anumang password na nag-type lamang ng SSID ng network.

Susunod, gamit wifiMulti.run() Ang command na ESP32 ay kumonekta sa magagamit na pinakamalakas na network. Kapag ang WiFi ay konektado code ay i-print ang konektado network SSID, IP address at RSSI.

Output

Pagkatapos mag-upload ng code sa ESP32, i-scan muna nito ang magagamit na network pagkatapos ay kumonekta ito sa pinakamalakas na magagamit na network. Dito makikita natin ang halaga ng RSSI para sa bawat network na ang mas mababang RSSI ay nangangahulugan na mas malakas ang network.

  Awtomatikong nabuo ang Paglalarawan ng Teksto

Makikita natin na ang ESP32 ay konektado sa network ng telepono dahil mayroon itong isang RSSI halaga ng -62 at ang ibang network na ang SSID at password ay tinukoy ay Team SAM na ang halaga ay -73. Dito ang mobile hotspot network ay may RSSI value na mas malapit sa zero ay nangangahulugan ng mas malakas na koneksyon.

Ngayon idiskonekta ang Smartphone hotspot. Ikokonekta ng ESP32 ang sarili nito sa iba pang mas malakas na magagamit na mga network. Tulad ng sa output makikita natin ang ESP32 ay konektado na ngayon sa susunod na pinakamalakas na magagamit na network. Ang network kung saan ito konektado ay ang Team SAM na mayroong RSSI value na 0f -65.

Konklusyon

Maaaring kumonekta ang ESP32 sa pinakamalakas na network na magagamit sa bilog nito. Kailangan lang nating tukuyin ang maramihang mga network SSID at password sa loob ng code. Gamit ang WiFiMulti Ang function na ESP32 ay mag-i-scan para sa mga available na network at kapag nawala ang koneksyon, ito ay kumonekta sa iba pang available na network sa loob ng ESP32 range.