1. Идентификация и основные компоненты
WT32-ETH01 — это плата на базе ESP32 с встроенным Ethernet-контроллером LAN8720A, который обеспечивает проводное подключение к сети в дополнение к беспроводным интерфейсам Wi-Fi и Bluetooth, которыми оснащён ESP32.
flowchart TD
subgraph WT32ETH01["WT32-ETH01 (вид сверху)"]
direction TB
subgraph Components["Основные компоненты"]
ESP32["ESP32
Микроконтроллер"]
LAN8720["LAN8720A
Ethernet контроллер"]
PORT["RJ45
Ethernet порт"]
LEDS["Индикаторные
светодиоды"]
end
subgraph Pins["Выводы (контакты)"]
direction TB
subgraph LeftPins["Левая сторона"]
direction TB
L1["3V3"] --- L2["GND"] --- L3["IO36"] --- L4["IO39"] --- L5["IO34"] --- L6["IO35"] --- L7["IO32"] --- L8["IO33"] --- L9["IO25"] --- L10["IO26"] --- L11["IO27"] --- L12["IO14"] --- L13["IO12"]
end
subgraph RightPins["Правая сторона"]
direction TB
R1["5V"] --- R2["GND"] --- R3["IO23"] --- R4["IO22"] --- R5["TXD"] --- R6["RXD"] --- R7["IO21"] --- R8["IO19"] --- R9["IO18"] --- R10["IO5"] --- R11["IO17"] --- R12["IO16"] --- R13["IO0"] --- R14["EN"]
end
end
end
classDef pin fill:#f96,stroke:#333,stroke-width:2px
class L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14 pin
Назначение основных выводов:
Вывод |
Назначение |
3V3 |
Выход питания 3.3В |
5V |
Вход питания 5В |
GND |
Земля (минус) |
TXD |
Передача данных UART |
RXD |
Приём данных UART |
EN |
Сигнал включения/сброса (активный уровень - низкий) |
IO0 |
GPIO0 для выбора режима загрузки |
IO16-IO39 |
Различные GPIO пины для подключения сенсоров и устройств |
Важно правильно определить пины для программирования (TXD, RXD, IO0, EN, GND, 5V), поскольку плата не имеет встроенного USB-порта для прямого подключения к компьютеру.
2. Необходимые компоненты для программирования
2.1. Базовый набор
- Плата WT32-ETH01 V1.4
- USB-TTL адаптер (UART конвертер с поддержкой 3.3В)
- Макетная плата (breadboard)
- Соединительные провода (jumper wires)
- Компьютер с USB-портом
- Ethernet-кабель (для подключения к сети после программирования)
2.2. Программное обеспечение
- Arduino IDE или PlatformIO (на базе Visual Studio Code)
- Библиотеки для ESP32 и Ethernet
Рекомендуется использовать качественный USB-TTL адаптер с поддержкой питания 5В и стабильным преобразователем логических уровней, поскольку это влияет на надёжность процесса программирования.
3. Подключение для программирования
flowchart TD
subgraph Connection["Схема подключения для программирования"]
USB_PC["USB порт
компьютера"] --> USB_TTL["USB-TTL
адаптер"]
USB_TTL -.-> |"5V"| WT32["WT32-ETH01
5V"]
USB_TTL -.-> |"GND"| WT32GND["WT32-ETH01
GND"]
USB_TTL -.-> |"TXD"| WT32RX["WT32-ETH01
RXD"]
USB_TTL -.-> |"RXD"| WT32TX["WT32-ETH01
TXD"]
subgraph BootMode["Режим загрузки"]
IO0GND["Соединение
IO0-GND"] -.-> WT32BOOT["WT32-ETH01
IO0"]
IO0GND -.-> WT32GND
ENGND["Кратковременное
соединение EN-GND
(Reset)"] -.-> WT32EN["WT32-ETH01
EN"]
ENGND -.-> WT32GND
end
end
classDef boot fill:#f96,stroke:#333,stroke-width:2px
class IO0GND,ENGND boot
3.1. Пошаговое подключение для программирования
- Установите WT32-ETH01 на макетную плату.
- Подключите USB-TTL адаптер к WT32-ETH01:
- TXD (USB-TTL) → RXD (WT32-ETH01)
- RXD (USB-TTL) → TXD (WT32-ETH01)
- 5V (USB-TTL) → 5V (WT32-ETH01)
- GND (USB-TTL) → GND (WT32-ETH01)
- Для входа в режим загрузки:
- Соедините IO0 с GND (установите постоянное соединение на время программирования)
- Подключите USB-TTL адаптер к компьютеру.
- Для инициирования загрузки:
- Кратковременно соедините пин EN с GND (имитация нажатия кнопки Reset)
Перекрёстное подключение критично! TXD адаптера подключается к RXD модуля, а RXD адаптера — к TXD модуля. Неправильное подключение приведёт к ошибкам связи.
4. Настройка среды разработки
4.1. Настройка Arduino IDE
- Установите Arduino IDE с официального веб-сайта.
- Добавьте поддержку ESP32:
- Установите драйверы для вашего USB-TTL адаптера (если требуется)
4.2. Настройка PlatformIO (альтернативно)
- Установите Visual Studio Code.
- Установите расширение PlatformIO IDE для VS Code.
- Создайте новый проект:
- Плата: ESP32 Dev Module
- Framework: Arduino
4.3. Настройка для загрузки кода
В Arduino IDE:
- Выберите плату:
Инструменты → Плата → ESP32 Arduino → ESP32 Dev Module
- Выберите порт:
Инструменты → Порт → COMx
(выберите порт вашего USB-TTL адаптера)
- Выберите стандартные настройки загрузчика
Если вы не уверены, какой COM-порт выбрать, отключите USB-TTL адаптер, посмотрите список доступных портов, подключите снова и выберите новый порт в списке.
5. Тестовый скетч для проверки подключения
// Базовый тест для WT32-ETH01
// Мигание встроенным светодиодом на GPIO2
// Выберите GPIO для светодиода (на многих ESP32 платах GPIO2 подключен к встроенному светодиоду)
const int ledPin = 2;
void setup() {
// Инициализация серийного порта для отладки
Serial.begin(115200);
Serial.println("WT32-ETH01 тестирование...");
// Настройка GPIO для светодиода
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // Включить светодиод
Serial.println("LED ON");
delay(1000); // Подождать 1 секунду
digitalWrite(ledPin, LOW); // Выключить светодиод
Serial.println("LED OFF");
delay(1000); // Подождать 1 секунду
}
5.1. Процедура загрузки
- Убедитесь, что IO0 соединён с GND.
- Нажмите кнопку "Загрузить" в Arduino IDE или PlatformIO.
- Если загрузка не начинается, кратковременно соедините пин EN с GND для сброса модуля.
- Следите за процессом в нижнем окне среды разработки — должны появиться сообщения о подключении и загрузке с процентами.
- После успешной загрузки (
Hard resetting via RTS pin...
):
- Отсоедините IO0 от GND (важно для выхода из режима загрузки)
- Выполните сброс платы (кратковременно соедините EN с GND)
Для регулярного программирования можно добавить кнопки: одну между IO0 и GND для входа в режим загрузки, а другую между EN и GND для сброса платы.
6. Подключение к сети Ethernet
flowchart TD
subgraph NetworkConnection["Подключение к сети"]
WT32ETH["WT32-ETH01"] --> Router["Маршрутизатор
или коммутатор"]
Router --> LocalNetworkNode["Локальная
сеть"]
Power["Источник
питания 5V"] --> WT32ETH
Sensors["Сенсоры/Реле
(При необходимости)"] --> WT32ETH
end
6.1. Пример скетча для Ethernet подключения
// Базовый тест подключения Ethernet для WT32-ETH01
#include
// Пины ETH интерфейса для WT32-ETH01
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN // Использование внутреннего кварца 50MHz
#define ETH_TYPE ETH_PHY_LAN8720 // Тип контроллера Ethernet - LAN8720
#define ETH_POWER -1 // Нет пина управления питанием на WT32-ETH01
#define ETH_MDC 23 // Пин I²C Clock
#define ETH_MDIO 18 // Пин I²C Data
#define ETH_ADDR 1 // Адрес I²C устройства LAN8720
static bool eth_connected = false;
void WiFiEvent(WiFiEvent_t event) {
switch (event) {
case ARDUINO_EVENT_ETH_START:
Serial.println("ETH Начат (старт)");
// Установка типа ETH
ETH.setHostname("esp32-ethernet");
break;
case ARDUINO_EVENT_ETH_CONNECTED:
Serial.println("ETH Подключён");
break;
case ARDUINO_EVENT_ETH_GOT_IP:
Serial.print("ETH IP: ");
Serial.println(ETH.localIP());
eth_connected = true;
break;
case ARDUINO_EVENT_ETH_DISCONNECTED:
Serial.println("ETH Отключён");
eth_connected = false;
break;
case ARDUINO_EVENT_ETH_STOP:
Serial.println("ETH Остановлен");
eth_connected = false;
break;
default:
break;
}
}
void setup() {
Serial.begin(115200);
Serial.println("WT32-ETH01 Ethernet Тест");
// Регистрация обработчика событий
WiFi.onEvent(WiFiEvent);
// Инициализация Ethernet
ETH.begin(ETH_ADDR, ETH_POWER, ETH_MDC, ETH_MDIO, ETH_TYPE, ETH_CLK_MODE);
}
void loop() {
if(eth_connected) {
// Здесь можно реализовать дополнительную логику, когда соединение активно
Serial.println("Подключён к сети");
} else {
Serial.println("Ожидание подключения...");
}
delay(1000);
}
6.2. Установка после программирования
- Подключите питание 5V к плате (через USB-TTL адаптер или отдельный источник питания).
- Подключите Ethernet-кабель от маршрутизатора или коммутатора к RJ45 порту на WT32-ETH01.
- Если всё настроено правильно, светодиоды статуса на Ethernet-порту должны загореться, указывая на активное соединение.
- Можно проверить IP-адрес через серийный порт или в интерфейсе маршрутизатора.
7. Программирование WT32-ETH01 для типичных применений
7.1. Веб-сервер для мониторинга сенсоров
WT32-ETH01 можно легко запрограммировать как веб-сервер, который отображает данные с подключённых сенсоров.
#include
#include
// Пины ETH интерфейса для WT32-ETH01
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN
#define ETH_TYPE ETH_PHY_LAN8720
#define ETH_POWER -1
#define ETH_MDC 23
#define ETH_MDIO 18
#define ETH_ADDR 1
WebServer server(80);
static bool eth_connected = false;
// Пример данных сенсора (в реальном проекте эти данные будут поступать от реальных сенсоров)
float temperature = 21.5;
int humidity = 65;
void WiFiEvent(WiFiEvent_t event) {
switch (event) {
case ARDUINO_EVENT_ETH_START:
Serial.println("ETH Начат (старт)");
ETH.setHostname("esp32-ethernet");
break;
case ARDUINO_EVENT_ETH_CONNECTED:
Serial.println("ETH Подключён");
break;
case ARDUINO_EVENT_ETH_GOT_IP:
Serial.print("ETH IP: ");
Serial.println(ETH.localIP());
eth_connected = true;
break;
case ARDUINO_EVENT_ETH_DISCONNECTED:
Serial.println("ETH Отключён");
eth_connected = false;
break;
case ARDUINO_EVENT_ETH_STOP:
Serial.println("ETH Остановлен");
eth_connected = false;
break;
default:
break;
}
}
void setup() {
Serial.begin(115200);
Serial.println("WT32-ETH01 Веб-сервер");
// Регистрация обработчика событий
WiFi.onEvent(WiFiEvent);
// Инициализация Ethernet
ETH.begin(ETH_ADDR, ETH_POWER, ETH_MDC, ETH_MDIO, ETH_TYPE, ETH_CLK_MODE);
// Настройка обработчиков веб-сервера
server.on("/", handleRoot);
server.on("/data", handleData);
server.onNotFound(handleNotFound);
// Запуск веб-сервера
server.begin();
Serial.println("Веб-сервер запущен");
}
void loop() {
if(eth_connected) {
server.handleClient();
// Имитация изменения данных сенсоров
temperature = 20.0 + (float)random(0, 100) / 10.0;
humidity = 50 + random(0, 30);
}
delay(10);
}
// Обробка головної сторінки
void handleRoot() {
String html = "<!DOCTYPE html><html><head><meta charset='UTF-8'>";
html += "<meta http-equiv='refresh' content='5'>";
html += "<title>WT32-ETH01 Моніторинг</title>";
html += "<style>body{font-family:Arial;margin:20px;text-align:center;}";
html += ".container{max-width:600px;margin:0 auto;padding:20px;border:1px solid #ddd;border-radius:10px;}";
html += ".data{font-size:24px;margin:15px;padding:10px;background:#f0f0f0;border-radius:5px;}</style></head>";
html += "<body><div class='container'><h1>WT32-ETH01 Сенсори</h1>";
html += "<div class='data'>Температура: " + String(temperature) + " °C</div>";
html += "<div class='data'>Вологість: " + String(humidity) + " %</div>";
html += "<p>Сторінка оновлюється автоматично кожні 5 секунд</p>";
html += "<p><a href='/data'>API (JSON)</a></p>";
html += "</div></body></html>";
server.send(200, "text/html", html);
}
// API для получения данных в формате JSON
void handleData() {
String json = "{\"temperature\":" + String(temperature) + ",\"humidity\":" + String(humidity) + "}";
server.send(200, "application/json", json);
}
// Обработка 404
void handleNotFound() {
server.send(404, "text/plain", "Страница не найдена");
}
7.2. Интеграция с WLED
WT32-ETH01 отлично подходит для запуска WLED — популярного программного обеспечения для управления светодиодными лентами через сеть. Ethernet-соединение обеспечивает стабильность, особенно для сложных световых шоу.
- Скачайте исходный код WLED с GitHub.
- Установите PlatformIO в VS Code (как описано ранее).
- Откройте проект WLED в PlatformIO.
- Найдите и выберите среду
esp32_eth
.
- Нажмите "Upload" для компиляции и загрузки на плату.
- После загрузки подключитесь к точке доступа Wi-Fi WLED-AP (пароль по умолчанию: wled1234).
- Откройте браузер и перейдите по адресу 4.3.2.1.
- В настройках Wi-Fi прокрутите до раздела Ethernet Type и выберите WT32-ETH01.
- Сохраните настройки, затем подключите плату к сети через Ethernet-кабель.
WLED на WT32-ETH01 с Ethernet-соединением обеспечивает надёжную работу для синхронизированных световых шоу с использованием протоколов E1.31 и DMX, которые активно применяются для праздничного освещения.
8. Подключение дополнительных устройств
flowchart LR
WT32["WT32-ETH01"] --> ETH["Ethernet
Сеть"]
subgraph Sensors["Сенсоры и периферия"]
DHT["Сенсор температуры
DHT22"] --> WT32
RELAY["Реле модуль"] --> WT32
OLED["OLED дисплей
I2C"] --> WT32
LED["RGB лента
WS2812B"] --> WT32
end
classDef eth fill:#b3e0ff,stroke:#333
class ETH eth
8.1. Подключение сенсора температуры DHT22
DHT22 |
WT32-ETH01 |
VCC |
3V3 |
DATA |
IO32 |
GND |
GND |
Между VCC и DATA рекомендуется добавить подтягивающий резистор 10кОм для стабильной работы DHT22.
8.2. Подключение OLED дисплея I2C
OLED I2C |
WT32-ETH01 |
VCC |
3V3 |
GND |
GND |
SCL |
IO22 |
SDA |
IO21 |
8.3. Подключение реле
Реле модуль |
WT32-ETH01 |
VCC |
5V |
GND |
GND |
IN1 |
IO5 |
IN2 |
IO17 |
9. Полезные настройки для проводного соединения
9.1. Статический IP-адрес
// Установка статического IP-адреса для WT32-ETH01
#include
// Настройки сети
IPAddress static_ip(192, 168, 1, 200); // Желаемый статический IP-адрес
IPAddress gateway(192, 168, 1, 1); // IP-адрес шлюза (маршрутизатора)
IPAddress subnet(255, 255, 255, 0); // Маска подсети
IPAddress dns1(8, 8, 8, 8); // DNS-сервер (Google DNS)
void WiFiEvent(WiFiEvent_t event) {
switch (event) {
case ARDUINO_EVENT_ETH_START:
Serial.println("ETH Начат (старт)");
ETH.setHostname("wt32-static");
break;
case ARDUINO_EVENT_ETH_CONNECTED:
Serial.println("ETH Подключён");
// Установка статического IP после подключения
ETH.config(static_ip, gateway, subnet, dns1);
break;
case ARDUINO_EVENT_ETH_GOT_IP:
Serial.print("ETH IP: ");
Serial.println(ETH.localIP());
break;
// ...другие обработчики событий...
}
}
void setup() {
Serial.begin(115200);
// Регистрация обработчика событий
WiFi.onEvent(WiFiEvent);
// Инициализация Ethernet
ETH.begin(1, -1, 23, 18, ETH_PHY_LAN8720, ETH_CLOCK_GPIO0_IN);
}
void loop() {
// Ваша основная логика здесь
}
9.2. Мониторинг и диагностика Ethernet-соединения
// Мониторинг состояния Ethernet-соединения
#include
unsigned long lastCheckTime = 0;
const long checkInterval = 10000; // 10 секунд
bool ethernetConnected = false;
void setup() {
Serial.begin(115200);
Serial.println("Мониторинг Ethernet-соединения");
// Регистрация обработчика событий Wi-Fi
WiFi.onEvent(WiFiEvent);
// Инициализация Ethernet
ETH.begin(1, -1, 23, 18, ETH_PHY_LAN8720, ETH_CLOCK_GPIO0_IN);
}
void loop() {
unsigned long currentTime = millis();
// Периодическая проверка состояния соединения
if (currentTime - lastCheckTime >= checkInterval) {
lastCheckTime = currentTime;
if (ethernetConnected) {
Serial.println("Статус: Подключён");
// Диагностическая информация
Serial.print("IP-адрес: ");
Serial.println(ETH.localIP());
Serial.print("Маска подсети: ");
Serial.println(ETH.subnetMask());
Serial.print("Шлюз: ");
Serial.println(ETH.gatewayIP());
Serial.print("MAC-адрес: ");
Serial.println(ETH.macAddress());
// Проверка связи с внешней сетью
// В реальном проекте здесь можно использовать ping или HTTP-запрос
} else {
Serial.println("Статус: Отключён");
}
}
}
void WiFiEvent(WiFiEvent_t event) {
switch (event) {
case ARDUINO_EVENT_ETH_START:
Serial.println("Ethernet инициализирован");
break;
case ARDUINO_EVENT_ETH_CONNECTED:
Serial.println("Ethernet-кабель подключён");
break;
case ARDUINO_EVENT_ETH_GOT_IP:
Serial.print("Получен IP-адрес: ");
Serial.println(ETH.localIP());
ethernetConnected = true;
break;
case ARDUINO_EVENT_ETH_DISCONNECTED:
Serial.println("Ethernet-кабель отключён");
ethernetConnected = false;
break;
case ARDUINO_EVENT_ETH_STOP:
Serial.println("Ethernet остановлен");
ethernetConnected = false;
break;
default:
break;
}
}
10. Ограничения и предельные параметры
Параметр |
Значение |
Напряжение питания |
5В ±5% |
Максимальный ток потребления |
~300мА (пик при активном Ethernet и Wi-Fi) |
Рабочая температура |
-40°C ~ 85°C |
Ethernet |
10/100 Мбит/с |
Wi-Fi |
IEEE 802.11 b/g/n |
Bluetooth |
BLE/Bluetooth 4.2 |
Flash-память |
4 МБ |
SRAM |
520 КБ |
WT32-ETH01 не имеет защиты от перенапряжения на Ethernet-порту. В промышленных условиях рекомендуется использовать дополнительный изолированный трансформатор или ограничитель перенапряжения.
11. Практические советы и рекомендации
11.1. Питание и стабильность
- Качественный блок питания: Используйте качественный источник питания 5В с достаточным запасом по току (минимум 500мА, рекомендовано 1А).
- Ёмкий конденсатор: Добавьте электролитический конденсатор 100-470 мкФ параллельно входу питания для фильтрации скачков напряжения.
- PoE-адаптер: Для удалённых инсталляций можно использовать внешний PoE-сплиттер, чтобы получать питание через Ethernet-кабель.
11.2. Программирование и отладка
- Постоянные кнопки Reset/Boot: Для удобства регулярного программирования припаяйте две кнопки: одну между IO0 и GND, другую между EN и GND.
- LED-индикаторы: Добавьте внешние светодиоды для индикации состояния работы программы.
- Интерфейсная плата: Рассмотрите возможность создания интерфейсной платы с USB-UART мостом для упрощения подключения.
11.3. Сетевое подключение
- Экранированный кабель: В промышленных условиях используйте экранированный Ethernet-кабель для уменьшения влияния электромагнитных помех.
- Статический IP-адрес: Настройте статический IP-адрес для надёжного доступа к вашему устройству.
- mDNS: Используйте mDNS (библиотеку ESP-MDNS) для доступа к устройству по доменному имени в локальной сети.
WT32-ETH01 идеально подходит для проектов, где требуется надёжное сетевое соединение с низкой задержкой, например, для систем домашней автоматизации, промышленного контроля и мониторинга.
Важное замечание: Мы приложили усилия, чтобы эта инструкция была точной и полезной. Однако эта инструкция предоставляется как справочный материал. Электронные компоненты могут иметь вариации, а схемы подключения зависят от конкретных условий и вашего оборудования. Эта информация предоставляется "как есть", без гарантий полноты или безошибочности. Настоятельно рекомендуем проверять спецификации вашего модуля (datasheet), сверяться с другими источниками и, при малейших сомнениях, обращаться к квалифицированным специалистам, особенно при работе с напряжением 220В.