Свържете се с най-силната WiFi мрежа в ESP32 с помощта на WiFiMulti функция

Sv Rzete Se S Naj Silnata Wifi Mreza V Esp32 S Pomosta Na Wifimulti Funkcia



ESP32 е базирана на IoT микроконтролерна платка с WiFi и Bluetooth поддръжка. ESP32 може да работи в три различни WiFi режима (станция, достъп или и двата). Използвайки всички тези режими, ESP32 може да подобри своята безжична свързаност многократно. Днес ще обсъдим мулти-WiFi поддръжката в ESP32 за свързване към най-силната налична мрежа.

ESP32 с WiFiMulti функция

ESP32 може да се свърже с множество мрежи, ако имаме достъп до повече от една мрежа, просто трябва да дефинираме техните SSID и парола в кода. Той ще търси наличната мрежа и ще се свърже с най-силната Wi-Fi мрежа, която дефинираме в кода.







Забележка: Не забравяйте, че ще се свърже към една мрежа в даден момент, ако връзката с тази мрежа се загуби, тогава ESP32 ще се свърже с други налични WiFi мрежи.



Можем да отворим WiFiMulti пример в Arduino IDE:



Отидете на : Файл > Примери > WiFi > WifiMulti





Как да добавите множество WiFi мрежи в ESP32

За да добавите няколко WiFi мрежи в платката ESP32. Ние ще използваме WifiMulti функция с addAP() . Функцията addAP() може да приема множество SSID и пароли като аргумент. За да добавите няколко мрежи, техните SSID и пароли трябва да се дефинират отделно. Следва синтаксисът за добавяне на повече от една мрежа WifiMulti функция с addAP() :



wifiMulti. addAP ( „SSID Network1“ , 'Парола1' ) ;

wifiMulti. addAP ( „SSID мрежа 2“ , 'Парола2' ) ;

wifiMulti. addAP ( „SSID Network3“ , 'Парола3' ) ;

Как да се свържете с най-силната WiFi мрежа в ESP32

За да свържем ESP32 с най-силната налична мрежа, ще комбинираме ESP32 WiFi сканиране и WiFi multi пример. Ще напишем код в Arduino IDE, който ще изпълни следните стъпки:

  • Сканирайте за наличните мрежи
  • Отпечатайте техния RSSI (сила на сигнала) на сериен монитор. Така че можем да проверим най-силната налична мрежа
  • Автоматично се свързва с най-силната мрежа
  • Ако загуби връзка, автоматично ще се свърже към следващата налична най-силна мрежа

За да тестваме кода, ще използваме a Смартфон гореща точка и WiFi мрежа. Винаги присвоявайте просто име на мобилната гореща мрежа, за да избегнете грешки.

Сега качете кода, даден в платката ESP32, като използвате Arduino IDE.

Код

Отворете Arduino IDE и качете код в ESP32. Не забравяйте да изберете COM порт.

#include /*Включена WIFI библиотека*/

#include /*Включена е мулти WIFI библиотека*/

WiFiMulti wifiMulti ;
/*За време на свързване с AP. Увеличете, когато ESP32 отнема повече време за свързване*/
конст uint32_t connectTimeoutMs = 10 000 ;
невалиден настройвам ( ) {
Сериен. започвам ( 115200 ) ; /*Серийната комуникация започва*/
забавяне ( 10 ) ;
WiFi. режим ( WIFI_STA ) ; /*ESP32 WIFI се инициализира като станция*/
/*Въведете всички известни SSID и техните пароли*/
wifiMulti. addAP ( „ВАШИЯТ SSID“ , 'ПАРОЛА' ) ; /*Мрежа 1, която искаме да свържем*/
wifiMulti. addAP ( 'телефон' ) ; /*Мрежа 2, която искаме да свържем*/
// WiFi.scanNetworks ще даде общия брой мрежи
вътр н = WiFi. scanNetworks ( ) ; /*Сканиране за налична мрежа*/
Сериен. println ( 'сканирането е готово' ) ;
ако ( н == 0 ) {
Сериен. println ( „Няма налични мрежи“ ) ; /*Отпечатва, ако не е намерена мрежа*/
}
друго {
Сериен. печат ( н ) ;
Сериен. println ( „Намерени мрежи“ ) ; /*Отпечатва, ако е намерена мрежа*/
за ( вътр i = 0 ; аз < н ; ++ аз ) {
Сериен. печат ( i + 1 ) ; /*Отпечатайте SSID и RSSI на наличната мрежа*/
Сериен. печат ( ':' ) ;
Сериен. печат ( WiFi. SSID ( аз ) ) ;
Сериен. печат ( '(' ) ;
Сериен. печат ( WiFi. RSSI ( аз ) ) ;
Сериен. печат ( ')' ) ;
Сериен. println ( ( WiFi. encryptionType ( аз ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
забавяне ( 10 ) ;
}
}
/*Свързва се с най-силната налична дефинирана мрежа с налични SSID и парола*/
Сериен. println ( „Свързване с Wifi...“ ) ;
ако ( wifiMulti. бягам ( ) == WL_CONNECTED ) {
Сериен. println ( '' ) ;
Сериен. println ( „Свързан към WIFI мрежа“ ) ;
Сериен. println ( 'IP адрес на свързана мрежа: ' ) ;
Сериен. println ( WiFi. localIP ( ) ) ; /*Отпечатва IP адреса на свързаната мрежа*/
}
}
невалиден цикъл ( ) {
ако ( wifiMulti. бягам ( connectTimeoutMs ) == WL_CONNECTED ) { /*ако връзката се загуби, ще се свърже към следващата мрежа*/
Сериен. печат ( „WiFi свързан:“ ) ;
Сериен. печат ( WiFi. SSID ( ) ) ;
Сериен. печат ( ' ' ) ;
Сериен. println ( WiFi. RSSI ( ) ) ;
}
друго {
Сериен. println ( „WiFi не е свързан!“ ) ; /*ако всички условия не са изпълнени, отпечатайте това*/
}
забавяне ( 1000 ) ;
}

Кодът започна с дефиниране на WiFi библиотеки за ESP32, след което създадохме a WiFiMulti обект. След това в частта за настройка добавихме две мрежи. Едната е WiFi мрежа, която е криптирана с парола, така че трябва да предоставим парола, докато втората мрежа, която е гореща точка за смартфон, е отворена, така че не се нуждаем от парола, просто въвеждаме SSID на мрежата.

След това, използвайки wifiMulti.run() команда ESP32 ще се свърже с наличната най-силна мрежа. След като WiFi се свърже, кодът ще отпечата SSID на свързаната мрежа, IP адрес и RSSI.

Изход

След качване на код в ESP32 първо ще сканира за наличната мрежа, след което ще се свърже с най-силната налична мрежа. Тук можем да видим стойността на RSSI за всяка мрежа, а по-нисък RSSI означава, че мрежата е по-силна.

  Автоматично генерирано текстово описание

Виждаме, че ESP32 е свързан към телефонна мрежа тъй като има RSSI стойност на -62 а другата мрежа, чиито SSID и парола са дефинирани, е Отбор САМ чиято стойност е -73. Тук мобилната гореща мрежа има RSSI стойност, по-близка до нула, означава по-силна връзка.

Сега изключете горещата точка на смартфона. ESP32 ще се свърже сам с други по-силни налични мрежи. Както в изхода можем да видим, че ESP32 вече е свързан към следващата най-силна налична мрежа. Мрежата, към която е свързан, е Team SAM с RSSI стойност 0f -65.

Заключение

ESP32 може да се свърже с най-силната налична мрежа в неговия кръг. Просто трябва да дефинираме SSID на множество мрежи и парола в кода. Използвайки WiFiMulti функция ESP32 ще сканира за налични мрежи и когато връзката се загуби, ще се свърже с други налични мрежи в обхвата на ESP32.