ESP32 с многофункциональным WiFi
ESP32 может подключаться к нескольким сетям, если у нас есть доступ к более чем одной сети, нам просто нужно определить их SSID и пароль внутри кода. Он будет искать доступную сеть и подключаться к самой мощной сети Wi-Fi, которую мы определяем в коде.
Примечание: Помните, что он будет подключаться к одной сети за раз, если соединение с этой сетью будет потеряно, тогда ESP32 подключится к другим доступным сетям Wi-Fi.
Мы можем открыть пример WiFiMulti в Arduino IDE:
Перейти к : Файл > Примеры > WiFi > WifiMulti
Как добавить несколько сетей WiFi в ESP32
Чтобы добавить несколько сетей WiFi на плату ESP32. Мы будем использовать Wi-FiМульти функция с добавитьAP() . Функция addAP() может принимать несколько SSID и паролей в качестве аргумента. Чтобы добавить несколько сетей, их SSID и пароли должны быть определены отдельно. Ниже приведен синтаксис для добавления более одной сети с использованием Wi-FiМульти функция с добавитьAP() :
Wi-FiМульти. добавить точку доступа ( 'Сеть SSID1' , 'Пароль1' ) ;
Wi-FiМульти. добавить точку доступа ( 'Сеть SSID2' , 'Пароль2' ) ;
Wi-FiМульти. добавить точку доступа ( 'Сеть SSID3' , 'Пароль3' ) ;
Как подключиться к самой сильной сети Wi-Fi в ESP32
Чтобы подключить ESP32 к самой мощной доступной сети, мы объединим пример сканирования Wi-Fi ESP32 и нескольких WiFi. Мы напишем код в Arduino IDE, который будет выполнять следующие шаги:
- Сканировать доступные сети
- Распечатайте их RSSI (мощность сигнала) на последовательном мониторе. Итак, мы можем проверить самую сильную доступную сеть
- Автоматически подключается к самой мощной сети
- Если он потеряет соединение, он автоматически подключится к следующей доступной самой сильной сети.
Для тестирования кода мы будем использовать Смартфон точка доступа и сеть Wi-Fi. Всегда назначайте простое имя сети мобильной точки доступа, чтобы избежать ошибок.
Теперь загрузите код, указанный на плате ESP32, с помощью Arduino IDE.
Код
Откройте IDE Arduino и загрузите код в ESP32. Не забудьте выбрать COM-порт.
#include#include
WiFiМультивайфайМульти ;
/* Время подключения к точке доступа. Увеличивайте, когда ESP32 требуется больше времени для подключения*/
константа uint32_t connectTimeoutMs знак равно 10000 ;
пустота настраивать ( ) {
Серийный. начинать ( 115200 ) ; /*Начинается последовательная связь*/
задерживать ( 10 ) ;
Wi-Fi. Режим ( WIFI_STA ) ; /*ESP32 WIFI инициализирован как станция*/
/*Введите все известные SSID и их пароли*/
Wi-FiМульти. добавить точку доступа ( 'ВАШ SSID' , 'ПАРОЛЬ' ) ; /*Сеть 1, к которой мы хотим подключиться*/
Wi-FiМульти. добавить точку доступа ( 'Телефон' ) ; /*Сеть 2, к которой мы хотим подключиться*/
// WiFi.scanNetworks даст общее количество сетей
инт н знак равно Wi-Fi. сканирование сетей ( ) ; /*Поиск доступной сети*/
Серийный. печать ( 'скан выполнен' ) ;
если ( н == 0 ) {
Серийный. печать ( «Нет доступных сетей» ) ; /*Печать, если сеть не найдена*/
}
еще {
Серийный. Распечатать ( н ) ;
Серийный. печать ( 'Найдены сети' ) ; /*Печать, если сеть найдена*/
за ( инт я знак равно 0 ; я < н ; ++ я ) {
Серийный. Распечатать ( я + 1 ) ; /*Вывести SSID и RSSI доступной сети*/
Серийный. Распечатать ( ':' ) ;
Серийный. Распечатать ( Wi-Fi. SSID ( я ) ) ;
Серийный. Распечатать ( '(' ) ;
Серийный. Распечатать ( Wi-Fi. RSSI ( я ) ) ;
Серийный. Распечатать ( ')' ) ;
Серийный. печать ( ( Wi-Fi. Тип шифрования ( я ) == WIFI_AUTH_OPEN ) ? ' ' : '*' ) ;
задерживать ( 10 ) ;
}
}
/*Подключается к самой надежной доступной определенной сети с доступными SSID и паролем*/
Серийный. печать ( 'Подключение к Wi-Fi...' ) ;
если ( Wi-FiМульти. бежать ( ) == WL_CONNECTED ) {
Серийный. печать ( '' ) ;
Серийный. печать ( 'Подключено к сети Wi-Fi' ) ;
Серийный. печать ( 'IP-адрес подключенной сети: ' ) ;
Серийный. печать ( Wi-Fi. локальный IP ( ) ) ; /*Выводит IP-адрес подключенной сети*/
}
}
пустота петля ( ) {
если ( Wi-FiМульти. бежать ( connectTimeoutMs ) == WL_CONNECTED ) { /*если соединение потеряно, оно подключится к следующей сети*/
Серийный. Распечатать ( «Wi-Fi подключен:» ) ;
Серийный. Распечатать ( Wi-Fi. SSID ( ) ) ;
Серийный. Распечатать ( ' ' ) ;
Серийный. печать ( Wi-Fi. RSSI ( ) ) ;
}
еще {
Серийный. печать ( 'Wi-Fi не подключен!' ) ; /*если все условия не выполняются, вывести это*/
}
задерживать ( 1000 ) ;
}
Код начался с определения библиотек WiFi для ESP32, затем мы создали WiFiМульти объект. Далее в части настройки мы добавили две сети. Одна из них — сеть Wi-Fi, зашифрованная паролем, поэтому мы должны указать пароль, в то время как вторая сеть, представляющая собой точку доступа смартфона, открыта, поэтому нам не нужен пароль, просто введите сетевой SSID.
Далее, используя wifiMulti.run() команда ESP32 подключится к доступной самой сильной сети. После подключения Wi-Fi код напечатает SSID подключенной сети, IP-адрес и RSSI.
Выход
После загрузки кода в ESP32 сначала он просканирует доступную сеть, а затем подключится к самой мощной доступной сети. Здесь мы можем видеть значение RSSI для каждой сети: чем ниже RSSI, тем сильнее сеть.
Мы видим, что ESP32 подключен к телефонная сеть потому что у него есть RSSI ценность -62 а другая сеть, SSID и пароль которой определены, Команда СЭМ значение которого -73. Здесь сеть мобильной точки доступа имеет значение RSSI, близкое к нулю, что означает более сильное соединение.
Теперь отключите точку доступа смартфона. ESP32 будет подключаться к другим более сильным доступным сетям. Как видно из вывода, ESP32 теперь подключен к следующей самой мощной доступной сети. Сеть, к которой он подключен, представляет собой Team SAM со значением RSSI 0f -65.
Вывод
ESP32 может подключаться к самой мощной сети, доступной в своем кругу. Нам просто нужно определить несколько сетей SSID и пароль внутри кода. С использованием WiFiМульти Функция ESP32 будет сканировать доступные сети, а при потере соединения будет подключаться к другим доступным сетям в пределах диапазона ESP32.