WT32-ETH01 ESP32 Wi-Fi + RJ45 Ethernet Dev Board — Wi-Fi, Bluetooth & Ethernet
ESP32-based development board with onboard RJ45 Ethernet PHY — ideal for IoT gateways, wired/wireless sensors, and networked projects.

Quick Summary

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.

Key Specs

ParameterValue
MCUESP32 dual-core (Tensilica) — Wi-Fi & Bluetooth
EthernetRJ45 PHY onboard (100BASE-TX), MAC integrated
Voltage3.3V (VCC) — do NOT apply 5V to VCC
I/OMultiple GPIOs, UART, SPI, I²C, ADC
ProgrammingUART (USB-TTL → TX/RX) / OTA (when running compatible firmware)
ConditionNew / Used (specify)

Possible Uses

  • 🌐 Wired IoT gateway — reliable Ethernet connection with Wi-Fi failover
  • 🏠 Home automation controller (Home Assistant nodes, MQTT brokers)
  • 📶 Industrial sensor gateway where wired reliability is required
  • 🔁 Bridge between wired Ethernet sensors and wireless devices
  • 🎛️ Networked audio/streaming projects, NTP / time servers, web dashboards
  • 🧪 Prototyping & education — ESP32 features with Ethernet built-in

What’s included

  • 1 × WT32-ETH01 development board
  • Pin headers (may need soldering) — check your product photo
  • Quick wiring guide (below)

Pin Reference (common signals)

Pin/LabelTypical FunctionNotes
VCC / 3V33.3V powerSupply 3.3V only — do NOT use 5V
GNDGroundCommon ground for peripherals
ENChip enable / resetPull HIGH to enable; pull LOW to reset
IO0Boot mode selectionHold LOW at boot for flashing mode
TX0 / RX0UART0 TX / RXUse USB-TTL adapter to program (TX→RX, RX→TX)
SDAI²C SDA (GPIO21 typical)Check board silkscreen — may vary
SCLI²C SCL (GPIO22 typical)Check board silkscreen — may vary
A0ADC0Analog input (0–1V on some ESP32 variants — check datasheet)
RJ45Ethernet 10/100 PHYOnboard magnetics usually included (check model)

Note: pin labeling varies between board revisions — always verify your module's silk & documentation before wiring.

Wiring — USB-TTL Programming (boot / flash)

USB-TTL Adapter (3.3V mode) VCC (3.3V) GND TX (to RX) RX (to TX) DTR / RTS (optional auto-reset) WT32-ETH01 Module 3V3 / VCC GND RX0 TX0 IO0 (BOOT) EN (RESET) To enter flash mode: hold IO0 LOW while resetting (pull IO0 to GND, toggle EN/RESET). Use 3.3V USB-TTL or level-shift signals.

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

Wiring — Sensor (I²C) + Ethernet ready

WT32-ETH01 Module 3V3 GND SDA (GPIO21) SCL (GPIO22) TX0 / RX0 EN / IO0 BME280 / I²C Sensor SDA → SDA (GPIO21) • SCL → SCL (GPIO22) RJ45 Ethernet Connect to network — onboard PHY Tip: If your sensor is 3.3V, power from module's 3V3. For 5V sensors use proper level shifting. Ethernet RJ45 may require magnetics — use the onboard connector.

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.

Arduino (ESP32 Arduino core) Example — BME280 + Ethernet (expand)
/*
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 Example — Ethernet + BME280 (expand)
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

Safety & Notes

  • Supply the module with stable **3.3V**. Do not feed 5V into VCC.
  • Use level shifting when connecting 5V logic devices to I/O lines.
  • IO0 must be HIGH for normal boot; pull LOW to enter bootloader/flash mode.
  • Ethernet PHY pinout and board revision may vary — confirm with your module photo/silkscreen.
  • When wiring relays or motors, use transistor drivers or dedicated relay modules — do not power loads from GPIO.