

The Waveshare ESP32-S3-ETH-8DI-8RO-C is a powerful and versatile development board designed for Internet of Things (IoT) applications. It is built around the ESP32-S3 chip, which features dual-core Xtensa LX7 processors, Wi-Fi, and Bluetooth 5.0 connectivity. This board is equipped with 8 digital inputs (DI), 8 relay outputs (RO), and Ethernet connectivity, making it ideal for industrial automation, smart home systems, and other IoT projects requiring reliable communication and control.








Below are the key technical details of the Waveshare ESP32-S3-ETH-8DI-8RO-C:
| Parameter | Value |
|---|---|
| Microcontroller | ESP32-S3 (Xtensa LX7 dual-core processor) |
| Wireless Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 5.0 |
| Ethernet | 10/100 Mbps Ethernet |
| Digital Inputs (DI) | 8 channels |
| Relay Outputs (RO) | 8 channels |
| Operating Voltage | 5V (via USB-C) or 7-24V (via terminal) |
| Power Consumption | < 2W (typical, without relays active) |
| Dimensions | 134mm x 84mm |
| Pin Number | Label | Description |
|---|---|---|
| DI1 | IN1 | Digital Input 1 |
| DI2 | IN2 | Digital Input 2 |
| DI3 | IN3 | Digital Input 3 |
| DI4 | IN4 | Digital Input 4 |
| DI5 | IN5 | Digital Input 5 |
| DI6 | IN6 | Digital Input 6 |
| DI7 | IN7 | Digital Input 7 |
| DI8 | IN8 | Digital Input 8 |
| Pin Number | Label | Description |
|---|---|---|
| RO1 | OUT1 | Relay Output 1 |
| RO2 | OUT2 | Relay Output 2 |
| RO3 | OUT3 | Relay Output 3 |
| RO4 | OUT4 | Relay Output 4 |
| RO5 | OUT5 | Relay Output 5 |
| RO6 | OUT6 | Relay Output 6 |
| RO7 | OUT7 | Relay Output 7 |
| RO8 | OUT8 | Relay Output 8 |
| Pin Number | Label | Description |
|---|---|---|
| VIN | VIN | External power input (7-24V) |
| GND | GND | Ground |
| USB-C | USB-C | USB power and programming interface |
| ETH | RJ45 Port | Ethernet connection |
Powering the Board:
Connecting Digital Inputs:
Using Relay Outputs:
Ethernet Connectivity:
Programming the Board:
Below is an example code snippet to control the relays and read the digital inputs using the Arduino IDE:
// Include the necessary libraries
#include <WiFi.h>
// Define relay output pins
#define RELAY1 25
#define RELAY2 26
#define RELAY3 27
#define RELAY4 14
#define RELAY5 12
#define RELAY6 13
#define RELAY7 15
#define RELAY8 2
// Define digital input pins
#define INPUT1 32
#define INPUT2 33
#define INPUT3 34
#define INPUT4 35
#define INPUT5 36
#define INPUT6 39
#define INPUT7 21
#define INPUT8 19
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Set relay pins as outputs
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
pinMode(RELAY5, OUTPUT);
pinMode(RELAY6, OUTPUT);
pinMode(RELAY7, OUTPUT);
pinMode(RELAY8, OUTPUT);
// Set digital input pins as inputs
pinMode(INPUT1, INPUT);
pinMode(INPUT2, INPUT);
pinMode(INPUT3, INPUT);
pinMode(INPUT4, INPUT);
pinMode(INPUT5, INPUT);
pinMode(INPUT6, INPUT);
pinMode(INPUT7, INPUT);
pinMode(INPUT8, INPUT);
// Turn off all relays initially
digitalWrite(RELAY1, LOW);
digitalWrite(RELAY2, LOW);
digitalWrite(RELAY3, LOW);
digitalWrite(RELAY4, LOW);
digitalWrite(RELAY5, LOW);
digitalWrite(RELAY6, LOW);
digitalWrite(RELAY7, LOW);
digitalWrite(RELAY8, LOW);
}
void loop() {
// Read digital inputs and print their states
Serial.print("Input 1: "); Serial.println(digitalRead(INPUT1));
Serial.print("Input 2: "); Serial.println(digitalRead(INPUT2));
Serial.print("Input 3: "); Serial.println(digitalRead(INPUT3));
Serial.print("Input 4: "); Serial.println(digitalRead(INPUT4));
Serial.print("Input 5: "); Serial.println(digitalRead(INPUT5));
Serial.print("Input 6: "); Serial.println(digitalRead(INPUT6));
Serial.print("Input 7: "); Serial.println(digitalRead(INPUT7));
Serial.print("Input 8: "); Serial.println(digitalRead(INPUT8));
// Example: Toggle relay 1 based on input 1
if (digitalRead(INPUT1) == HIGH) {
digitalWrite(RELAY1, HIGH); // Turn on relay 1
} else {
digitalWrite(RELAY1, LOW); // Turn off relay 1
}
delay(1000); // Wait for 1 second
}
Relays Not Activating:
Digital Inputs Not Responding:
Ethernet Not Working:
Board Not Detected by Computer: