ESP32 WiFi ретранслятор
Проект по превращение вашего ESP32 в WiFi NAT-маршрутизатор для расширения диапазона действующей сети Wifi и создания сети для подключения гостевых устройств.
ESP32 WiFi ретранслятор
Версия для печати

ESP32 WiFi ретранслятор

logo

Собрав данный проект, вы сможете превратить ваш 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 ". Должна появиться эта страница:

1

Сначала введите в STA Settings соответствующие значения для восходящей сети WiFi,  Оставьте пароль пустым для открытых сетей. Нажмите "Подключиться". ESP32 перезагрузится и подключится к вашему WiFi-маршрутизатору.

Теперь вы можете повторно подключиться и перезагрузить страницу и изменить "Настройки Soft AP". Нажмите "Set", и снова ESP32 перезагрузится. Теперь он готов к пересылке трафика через недавно настроенную программную точку доступа. Имейте в виду, что эти изменения также влияют на интерфейс конфигурации, т. е. для дальнейшей настройки подключитесь к ESP32 через одну из недавно настроенных сетей WiFi.

Скриншоты

Сканирование точек доступа

scan

Расширенные настройки

advanced

Экран сброса настроек

reset

Экран настройки пароля доступа к Веб-интерфейсу

lock

Экран ввода пароля для доступа к Веб-интерфейсу

unlock

Обзор подключенных клиентов

clients

Прошивка ESP32

Перед прошивкой ESP32 вам необходимо провести ряд дополнительных действий:

  • Распаковать архив с прошивкой
  • Скачать и установить esptool

Установка прошивки через ESPTool

Если ваше устройство ранее использовалось для других проектов или вы хотите сбросить все настройки из предыдущей версии c полной потерей данных выполните следующее. Откройте командную строку, перейдите в папку с распакованной прошивкой и введите следующее:

esptool.py write_flash 0x0 esp32nat_extended_full_vX.X.X.bin 

Альтернативный способ

В качестве альтернативы вы можете использовать Espressif's Flash Download Tools.

Проверьте отмеченные параметры и файлы, как показано ниже (проверьте правильность указания COM-порта).

Выставьте настройки, как показано на скриншоте ниже:

fdt

Дополнительная информация

Далее размещена дополнительная информация о тонкой настройке устройства.

Ограничение сканирования 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 автора проекта

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: ESP32 | Добавил: | Теги: wifi ретранслятор, ESP32, ESP32 проект
Просмотров: 3516 | Загрузок: 295 | Рейтинг: 5.0/2
Ссылки:
Скачать файл
695.6 Kb
Скачать
Скачать файл
695 kb
Скачать удаленно
Поделиться:
Всего комментариев: 0
avatar