- Реализовать подключение к существующей Wi-Fi сети 2,4 ГГц, где находится целевой веб сервер на определенном IP и порту 80
- Поднять проксирующий веб-сервер, доступный по локальной сети ethernet (LAN)
- Обеспечить проксирование запросов, приходящие на локальный (LAN) веб-сервер к целевому в wifi сети с модификацией определенных данных на лету
- Желательно, использовать питание PoE
- Операционная система Ubuntu 22.04.3 LTS
- Visual Studio Code v1.82.2 c плагинами:
- ESP-IDF v5.1.1 см инструкцию по установке https://registry.platformio.org/tools/platformio/framework-espidf
- Плата esp32doit-devkit-v1, пока без LAN
стоит припаять кондесатор 4,7-10 мкф параллельно кнопке EN, обеспечивает более стабильную перезагрузку платы при прошивке, не требуется нажимать кнопки, подробнее - Существует плата esp32 с PoE на борту "T-Internet-POE" от Lilygo ~2800 руб на осень 2023 https://www.lilygo.cc/products/t-internet-poe пример использования https://habr.com/ru/articles/547044/
Контроллер Ethernet ENC28J60 с реализацией физического (PHY), канального (MAC) уровней и шиной SPI *
Контроллер Ethernet W5500 с реализацией физического (PHY), канального (MAC), транспортного (TCP/UDP) уровней и шиной SPI *
*Скриншоты взяты из видео Ethernet для МК. W5500 и ENC28J60. MQTT за авторством Руслана
**Скриншот блок схемы LAN8720A взят из официальной документации на микросхему (datasheet)
- Esp32 "из коробки" поддерживает канальный уровень (MAC) и транспортный уровень (TCP/UDP).
Для реализации физического уровня (PHY) требуется внешняя микросхема. Подключение к ней производится по шине RMII (упрощенный MII), которую поддерживает esp32. - Проводное подключение через разъем RJ45 к локальной сети Ethernet может быть осуществлено несколькими способами:
2.1. через шину RMII для подключения к внешней реализации физического уровня (PHY). Канальный (MAC) и транспортный (TCP/UDP) уровни в этом используются из самого esp32
2.2. через шину SPI. Потребуется внешний модуль с реализацией, как минимум, физического (PHY) и канального (MAC) уровней. Транспортный уровень (TCP/UDP) можно будет использовать либо во внешнем контроллере, либо из самого esp32 - Питание платы с esp32 производим через Ethernet (PoE), чтобы уменьшить количество адаптеров и проводов
Подробнее о поддержке Ethernet в esp32 в документации от Espressif.
Наиболее популярной недорогая плата esp32 с поддержкой Ethernet (без PoE) является WT32-ETH01.
Физический уровень реализован на микросхеме LAN8720A, связь с esp32 по шине RMII.
В проекте умного дома ESP-home одновременная работа данной платы и в режиме Wi-Fi и через сетевой кабель не поддерживается.
Стоимость платы WT32-ETH01 на осень 2023 порядка 900-1100 руб.
Предварительно выбрана плата T-Internet-POE от Lilygo в силу доступности, наличия документации и опыта использования, сравнительно невысокой цены.
Так же интересной выглядит плата PoESP32 от M5Stack, имеет пластиковый корпус, небольшие размеры, прошивка "из коробки" поддерживает AT команды.
См примеры других плат esp32 с PoE далее.
| Модуль | Фото | Цена на осень 2023, тыс руб | Ссылка |
|---|---|---|---|
| ESP32-Ethernet-Kit от Espressif ESP32-Ethernet-Kit V1.2 ESP32-Ethernet-Kit V1.1 |
![]() |
8-10 | Ali ESP32-Ethernet-Kit v1.2 |
| T-Internet-POE от Lilygo | ![]() |
2,8-3,2 включая программатор | Ali T-Internet-POE |
| wESP32 | ![]() |
~7 с программатором + доставка отдельно | Tindie wESP32 |
| PoESP32 от M5Stack | ![]() |
~3 | M5Stack PoESP32 Ali PoESP32 |
| Esp32-Stick-PoE-A от Aleksei Karavaev | ![]() |
~2,7 с программатором + доставка отдельно | Tindie Esp32-Stick-PoE-A |
| ESP32-POE open source hardware | ![]() |
~2 без программатора + доставка отдельно | ESP32-POE |
-
В ESP-IDF v5 стала более жесткая проверка типов данных, см espressif/esp-idf#9511
Предложен обходной путь, использовать константы вида PRIu32 из файла inttypes.h для исправления бага:
format '%d' expects argument of type 'int', but argument 6 has type 'uint32_t' {aka 'long unsigned int'} [-Werror=format=]
Детальнее -
PlatformIO пока не поддерживает плату T-Internet-POE от Lilygo, есть запрос от 2021 года на поддержку платы, на осень 2023 не решен platformio/platform-espressif32#475









