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В.