ESP32 WiFi ретранслятор
Собрав данный проект, вы сможете превратить ваш ESP32 в WiFi NAT-маршрутизатор. Его можно использовать как:
- Простой расширитель диапазона для существующей сети WiFi
- Настройка дополнительной сети Wi-Fi с другим SSID / паролем для гостевых или IOT-устройств
Функционал и сценарии использования
- Расширение диапазона сети Wi-Fi (ретранслятор)
- Дополнительная гостевая сеть
- Портативное использование с небольшим устройством с низким энергопотреблением (работает от аккумулятора)
- Обход ограничений в общедоступных WiFi, такими как ограничение устройства и скорости
- Сканирование точек доступа
- Удобный пользовательский интерфейс и поддержка мобильных устройств
- Сброс устройства в пользовательском интерфейсе и с помощью Pin-кода / кнопки
- Поддержка соединения в сетях с принудительным отключением
- Защищенный интерфейс с помощью пароля или полного отключения
- Отображение состояния и качества подключения в пользовательском интерфейсе
- Отключение встроенного светодиодного индикатора
Первая загрузка
После первой загрузки NAT-маршрутизатор ESP32 предложит сеть Wi-Fi с открытой точкой доступа и ssid "ESP32_NAT_Router". Настройка может быть выполнена либо через простой веб-интерфейс, либо через консоль.
Веб-интерфейс
Веб-интерфейс позволяет настраивать все параметры. Подключите компьютер или смартфон к SSID Wi-Fi "ESP32_NAT_Router" и перейдите в браузере по адресу "http://192.168.4.1 ". Должна появиться эта страница:
Сначала введите в STA Settings соответствующие значения для восходящей сети WiFi, Оставьте пароль пустым для открытых сетей. Нажмите "Подключиться". ESP32 перезагрузится и подключится к вашему WiFi-маршрутизатору.
Теперь вы можете повторно подключиться и перезагрузить страницу и изменить "Настройки Soft AP". Нажмите "Set", и снова ESP32 перезагрузится. Теперь он готов к пересылке трафика через недавно настроенную программную точку доступа. Имейте в виду, что эти изменения также влияют на интерфейс конфигурации, т. е. для дальнейшей настройки подключитесь к ESP32 через одну из недавно настроенных сетей WiFi.
Скриншоты
Сканирование точек доступа
Расширенные настройки
Экран сброса настроек
Экран настройки пароля доступа к Веб-интерфейсу
Экран ввода пароля для доступа к Веб-интерфейсу
Обзор подключенных клиентов
Прошивка ESP32
Перед прошивкой ESP32 вам необходимо провести ряд дополнительных действий:
- Распаковать архив с прошивкой
- Скачать и установить esptool
Установка прошивки через ESPTool
Если ваше устройство ранее использовалось для других проектов или вы хотите сбросить все настройки из предыдущей версии c полной потерей данных выполните следующее. Откройте командную строку, перейдите в папку с распакованной прошивкой и введите следующее:
esptool.py write_flash 0x0 esp32nat_extended_full_vX.X.X.bin
Альтернативный способ
В качестве альтернативы вы можете использовать Espressif's Flash Download Tools.
Проверьте отмеченные параметры и файлы, как показано ниже (проверьте правильность указания COM-порта).
Выставьте настройки, как показано на скриншоте ниже:
Дополнительная информация
Далее размещена дополнительная информация о тонкой настройке устройства.Ограничение сканирования Wi-Fi
Из-за технических ограничений клиент не может быть одновременно подключен к устройству и сканировать Wifi. Перед началом сканирования все клиенты будут отключены. После этого начнется сканирование, сохранение в nvram, и устройство перезагрузится. После повторного подключения к устройству вы сможете увидеть проверенные сети. Результат сканирования впоследствии будет удален, но всегда можно повторить попытку сканирования.
Сброс настроек устройства / очистка флэш-памяти
Все настройки можно стереть в пользовательском интерфейсе с помощью кнопки "Erase Flash". Если какая-либо неправильная настройка приводит к неработоспособности устройства, вы также можете подключить GPIO 23 к GND при запуске, чтобы полностью сбросить настройки устройства. GND- и GPIO 23-Pin обычно являются прямыми соседями, поэтому вы можете соединить их любым металлическим предметом, например, скрепкой, ножом, небольшим проводом... Если вы хотите выполнить сброс, вам нужно выключить устройство, соединить GND и GPIO 23 и включить устройство. Через 5 секунд при мостовом соединении устройство сбрасывается, и вы можете удалить мост и перезапустить устройство. Если на вашей плате имеется индикатор, он будет быстро мигать во время этого процесса.
Сигналы встроенного светодиода
Если ESP32 подключен к восходящей точке доступа, то индикатор на плате должен гореть, в противном случае выключен. Если к ESP32 подключены устройства, то индикатор на плате будет мигать столько раз, сколько подключено устройств.
Например:
Одно устройство подключено к ESP32, а ESP32 подключен к восходящему потоку:
*****.*****
К ESP32 подключены два устройства, но ESP32 не подключен к восходящему потоку:
....*.*....
Интерфейс командной строки
Для настройки необходимо использовать последовательную консоль (Putty или GtkTerm со скоростью 115200 бит / с). Используйте команды "set_sta" и "set_ap" для настройки параметров Wi-Fi. Изменения постоянно сохраняются в NVS и применяются после следующего перезапуска. Используйте "show" для отображения текущей конфигурации. Пространство имен NVS для параметров - "esp32_nat"
Введите команду help
, чтобы получить полный список всех доступных команд:
help
Print the list of registered commands
free
Get the current size of free heap memory
heap
Get minimum size of free heap memory that was available during program execu
tion
version
Get version of chip and SDK
restart
Software reset of the chip
deep_sleep [-t ] [--io=] [--io_level=<0|1>]
Enter deep sleep mode. Two wakeup modes are supported: timer and GPIO. If no
wakeup option is specified, will sleep indefinitely.
-t, --time= Wake up time, ms
--io= If specified, wakeup using GPIO with given number
--io_level=<0|1> GPIO level to trigger wakeup
light_sleep [-t ] [--io=]... [--io_level=<0|1>]...
Enter light sleep mode. Two wakeup modes are supported: timer and GPIO. Mult
iple GPIO pins can be specified using pairs of 'io' and 'io_level' arguments
. Will also wake up on UART input.
-t, --time= Wake up time, ms
--io= If specified, wakeup using GPIO with given number
--io_level=<0|1> GPIO level to trigger wakeup
tasks
Get information about running tasks
nvs_set -v
Set key-value pair in selected namespace.
Examples:
nvs_set VarName i32 -v
123
nvs_set VarName str -v YourString
nvs_set VarName blob -v 0123456789abcdef
key of the value to be set
type can be: i8, u8, i16, u16 i32, u32 i64, u64, str, blob
-v, --value= value to be stored
nvs_get
Get key-value pair from selected namespace.
Example: nvs_get VarName i32
key of the value to be read
type can be: i8, u8, i16, u16 i32, u32 i64, u64, str, blob
nvs_erase
Erase key-value pair from current namespace
key of the value to be erased
nvs_namespace
Set current namespace
namespace of the partition to be selected
nvs_list [-n ] [-t ]
List stored key-value pairs stored in NVS.Namespace and type can be specified
to print only those key-value pairs.
Following command list variables stored inside 'nvs' partition, under namespace 'storage' with type uint32_t
Example: nvs_list nvs -n storage -t u32
partition name
-n, --namespace= namespace name
-t, --type= type can be: i8, u8, i16, u16 i32, u32 i64, u64, str, blob
nvs_erase_namespace
Erases specified namespace
namespace to be erased
set_sta
Set SSID and password of the STA interface
SSID
Password
set_sta_static
Set Static IP for the STA interface
IP
Subnet Mask
Gateway Address
set_ap
Set SSID and password of the SoftAP
SSID of AP
Password of AP
set_ap_ip
Set IP for the AP interface
IP
portmap [add|del] [TCP|UDP]
Add or delete a portmapping to the router
[add|del] add or delete portmapping
[TCP|UDP] TCP or UDP port
external port number
internal IP
internal port number
show
Get status and config of the router
NVS-параметры в пространстве имен esp32
Параметр | Тип | Значение |
---|---|---|
ap_ssid | str | SSID сети точки доступа |
ap_passwd | str | Пароль сети точки доступа |
ssid | str | SSID сети STA |
keep_alive | i32 | Поддержка постоянного соединения |
led_disabled | i32 | Отключен ли индикатор |
lock | i32 | Веб-сервер отключен |
custom_mac | str | Пользовательский Mac-адрес или "случайный" |
custom_dns | str | Пользовательский DNS-адресом |
lock_pass | str | Пароль для блокировки пользовательского интерфейса |
scan_result | str | Временный параметр для последнего результата сканирования |
DNS
Как только ESP32 STA узнал IP-адрес DNS со своего вышестоящего DNS-сервера при первом подключении, он передает его вновь подключенным клиентам. До этого по умолчанию для DNS-сервера, который предлагается клиентам, подключающимся к точке доступа ESP32, установлено значение 192.168.4.1 и настраивается автономный портал. Все разрешения DNS (http) будут разрешены до 192.168.4.1, поэтому любой ввод приведет к начальной странице.
Свежую версию прошивки и актуальную документацию вы всегда сможете найти на github автора проекта