WT32-ETH01 is an ESP32 variant with onboard Ethernet PHY and RJ45 connector plus Wi-Fi/Bluetooth. Great for projects that need reliable wired network plus wireless fallback.
| Parameter | Value |
|---|---|
| MCU | ESP32 dual-core (Tensilica) — Wi-Fi & Bluetooth |
| Ethernet | RJ45 PHY onboard (100BASE-TX), MAC integrated |
| Voltage | 3.3V (VCC) — do NOT apply 5V to VCC |
| I/O | Multiple GPIOs, UART, SPI, I²C, ADC |
| Programming | UART (USB-TTL → TX/RX) / OTA (when running compatible firmware) |
| Condition | New / Used (specify) |
| Pin/Label | Typical Function | Notes |
|---|---|---|
| VCC / 3V3 | 3.3V power | Supply 3.3V only — do NOT use 5V |
| GND | Ground | Common ground for peripherals |
| EN | Chip enable / reset | Pull HIGH to enable; pull LOW to reset |
| IO0 | Boot mode selection | Hold LOW at boot for flashing mode |
| TX0 / RX0 | UART0 TX / RX | Use USB-TTL adapter to program (TX→RX, RX→TX) |
| SDA | I²C SDA (GPIO21 typical) | Check board silkscreen — may vary |
| SCL | I²C SCL (GPIO22 typical) | Check board silkscreen — may vary |
| A0 | ADC0 | Analog input (0–1V on some ESP32 variants — check datasheet) |
| RJ45 | Ethernet 10/100 PHY | Onboard magnetics usually included (check model) |
Note: pin labeling varies between board revisions — always verify your module's silk & documentation before wiring.
Important: set your USB-TTL adapter to **3.3V** (do NOT use 5V). If your adapter supports DTR/RTS, you can wire DTR→EN and RTS→IO0 with the appropriate capacitor for automatic flashing (optional).
This diagram shows a typical sensor connection while the module remains networked via RJ45. The WT32-ETH01 presents both wired Ethernet and Wi-Fi/Bluetooth; firmware can use Ethernet or Wi-Fi stacks as needed.
/*
WT32-ETH01 Arduino Example
--------------------------
Ethernet (LAN8720) + WiFi fallback + BME280 I2C Sensor
Board: ESP32 Dev Module (or similar)
Author: ChatGPT (2025)
*/
#include <ETH.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#define SDA_PIN 21
#define SCL_PIN 22
#define LED_PIN 5 // external or onboard LED
#define BME_ADDR 0x76
Adafruit_BME280 bme;
// --- Ethernet Event Handler ---
static bool eth_connected = false;
void WiFiEvent(WiFiEvent_t event)
{
switch (event) {
case SYSTEM_EVENT_ETH_START:
Serial.println("[ETH] Started");
ETH.setHostname("WT32-ETH01");
break;
case SYSTEM_EVENT_ETH_CONNECTED:
Serial.println("[ETH] Connected");
break;
case SYSTEM_EVENT_ETH_GOT_IP:
Serial.print("[ETH] IP: ");
Serial.println(ETH.localIP());
eth_connected = true;
break;
case SYSTEM_EVENT_ETH_DISCONNECTED:
case SYSTEM_EVENT_ETH_STOP:
Serial.println("[ETH] Disconnected");
eth_connected = false;
break;
default:
break;
}
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\nWT32-ETH01 Ethernet + BME280 Example");
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
// --- Initialize Ethernet (LAN8720) ---
WiFi.onEvent(WiFiEvent);
ETH.begin(1, 23, 18, -1, ETH_PHY_LAN8720, ETH_CLOCK_GPIO0_IN);
// PHY_ADDR=1, MDC=23, MDIO=18, CLK from GPIO0_IN
// --- I2C Sensor Init ---
Wire.begin(SDA_PIN, SCL_PIN);
if (!bme.begin(BME_ADDR)) {
Serial.println("BME280 not detected!");
} else {
Serial.println("BME280 ready.");
}
}
void loop() {
// Blink LED to indicate loop
digitalWrite(LED_PIN, HIGH);
delay(200);
digitalWrite(LED_PIN, LOW);
// Print Ethernet status
if (eth_connected) {
Serial.print("[ETH] IP: ");
Serial.print(ETH.localIP());
Serial.print(" MAC: ");
Serial.println(ETH.macAddress());
} else {
Serial.println("[ETH] Not connected");
}
// Print sensor data
Serial.print("Temp: "); Serial.print(bme.readTemperature()); Serial.print(" °C ");
Serial.print("Humidity: "); Serial.print(bme.readHumidity()); Serial.println(" %");
delay(2000);
}
esphome:
name: wt32_eth01_node
platform: ESP32
board: esp-wrover-kit # WT32-ETH01 is based on an ESP32-WROVER module
# Optional logging and OTA updates
logger:
api:
ota:
# --- Ethernet Configuration ---
ethernet:
type: LAN8720
mdc_pin: 23
mdio_pin: 18
power_pin: -1
clk_mode: GPIO0_IN
phy_addr: 1
manual_ip:
static_ip: 192.168.1.50
gateway: 192.168.1.1
subnet: 255.255.255.0
# --- Optional Wi-Fi fallback ---
wifi:
ssid: "YOUR_WIFI_SSID"
password: "YOUR_WIFI_PASSWORD"
manual_ip:
static_ip: 192.168.1.51
gateway: 192.168.1.1
subnet: 255.255.255.0
ap: # fallback AP if Ethernet/Wi-Fi unavailable
ssid: "WT32-ETH01 Fallback"
password: "fallbackpass"
# --- I²C & Sensors (BME280 example) ---
i2c:
sda: 21
scl: 22
scan: true
sensor:
- platform: bme280
temperature:
name: "Room Temperature"
accuracy_decimals: 1
humidity:
name: "Room Humidity"
accuracy_decimals: 1
pressure:
name: "Room Pressure"
accuracy_decimals: 1
address: 0x76
update_interval: 60s
# --- Example GPIO output ---
switch:
- platform: gpio
pin: 5
name: "Status LED"
restore_mode: ALWAYS_OFF