ESP32-S3-ETH-8DI-8RO-C
| ||
Introduction
Introduction
ESP32-S3-ETH-8DI-8RO-C is an industrial-grade 8-channel WiFi network relay based on ESP32-S3 main controller and supports WiFi, Bluetooth, CAN, network port and other peripheral interfaces. It has built-in protection circuits such as power supply isolation and optodecoupler isolation, which is safe, stable and reliable, and suitable for the AIoT field.
Features
- Based on ESP32-S3 microcontroller with Xtensa 32-bit LX7 dual-core processor with frequency up to 240MHz
- Integrated 2.4GHz WiFi and Bluetooth LE dual-mode wireless communication, with superior RF performance
- High quality relay, contact rating: ≤10A 250V AC or ≤10A 30V DC
- Onboard isolated CAN interface, for connecting to various CAN expansion modules or sensors
- Onboard GPIO pin header interface, for expand other devices such as RS232 / sensor and other functions
- Onboard USB Type-C port for power supply, firmware downloading and debugging, making development more convenient
- Onboard power supply screw terminal, supports 7~36V wide voltage input, suitable for industrial applications
- Onboard optocoupler isolation to prevent interference with control chip from external high-voltage circuit connected to the relay
- Onboard digital isolation to avoid external signal interference with the control chip
- Onboard integrated power isolation, providing stable isolation voltage, no extra power supply required for the isolated terminal
- Built-in buzzer, RGB colorful LED, power supply and CAN TX/RX indicators for monitoring the operating status of the module
- Rail-mounted ABS protective enclosure, easy to install, safe to use
Specifications
Item | Parameter |
Supply voltage | 7~36V (or 5V/1A Type-C port) |
Relay channels | 8 channels |
Digital input channels | 8 channels |
Contact Form | 1NO 1NC |
Wiring port | Type-C |
Communication protocol | USB protocol |
Dimensions | 90 (H) x 175 (V) (mm) |
Onboard Resources
1. ESP32-S3 2. High-quality relay 3. Optocoupler isolation 4. RESET button 5. PoE port 6. BOOT button 7. Power chip 8. Digital isolation 9. Power isolation 10. Bidirectional optocoupler isolation 11. RTC battery header 12. Buzzer 13. Digital input interface |
14. Pin header interface 15. Operating status indicator 16. USB Type-C interface 17. WS2812 RGB colorful LED 18. Network port 19. External antenna socket 20. Power supply screw terminal 21. CAN communication interface 22. CAN matching resistor 23. Relay screw terminal |
24. Onboard TVS (Transient voltage suppressor) 25. CAN conversion chip 26. MP1605GTF-Z 27. PCF85063ATL |
28. TCA9554PWR 29. W5500 30. TF card slot |
Interfaces
- Relay
Control EXIO | Function |
EXIO1 | Relay 1 control pin |
EXIO2 | Relay 2 control pin |
EXIO3 | Relay 3 control pin |
EXIO4 | Relay 4 control pin |
EXIO5 | Relay 5 control pin |
EXIO6 | Relay 6 control pin |
EXIO7 | Relay 7 control pin |
EXIO8 | Relay 8 control pin |
- W5500 network port chip
Control GPIO | Function |
GPIO12 | ETH_INT |
GPIO13 | ETH_MOSI |
GPIO14 | ETH_MISO |
GPIO15 | ETH_SCLK |
GPIO16 | ETH_CS |
- TF Card
Control GPIO | Function |
GPIO45 | MISO |
GPIO47 | MOSI |
GPIO48 | SCLK |
NC | CS |
NC | SD_D1 |
NC | SD_D2 |
- CAN
Control GPIO | Function |
GPIO17 | CAN TX pin, corresponding to TWAI |
GPIO18 | CAN RX pin, corresponding to TWAI |
- RTC
Control GPIO | Function |
GPIO41 | RTC_SCL, SCL (Serial clock line) |
GPIO42 | RTC_SDA, SDA (Serial data line) |
- RGB light beads
Control GPIO | Function |
GPIO38 | RGB control pin |
- 19. Buzzer
Control GPIO | Function |
GPIO46 | Buzzer control pin |
- BOOT button
Control GPIO | Function |
GPIO0 | BOOT button control pin |
Dimensions
Electrical Safety Precautions
- This product should be operated and used by professional electricians or technical personnel. During use, please ensure electrical safety and take protective measures such as anti-leakage and insulation.
- Before installing, maintaining, or replacing relay equipment, make sure to turn off the power and unplug the device.
- Do not attempt to dismantle relay equipment to avoid damaging the device or risking electric shock.
- Please properly install and place the relay equipment. Avoid using it in damp, overly hot, or flammable environments to prevent safety accidents due to improper installation or use.
Version Description
![]() |
![]() | |
ESP32-S3-ETH-8DI-8RO-C Common network port |
ESP32-S3-POE-ETH-8DI-8RO-C POE Ethernet port |
Note: When transmitting data via CAN, a frame is only considered complete after looping back to itself. Therefore, during data transmission, both the TX (green light) and RX (blue light) indicator lights may flash simultaneously, which is normal behavior.
Usage Instructions
ESP32-S3-ETH-8DI-8RO-C currently provides the Arduino IDE development tool and framework.
Development Tool
Each of these two development approaches has its own advantages, and developers can choose according to their needs and skill levels. Arduino and MicroPython are suitable for beginners and non-professionals because they are easy to learn and quick to get started.
Components Preparation
- ESP32-S3-ETH-8DI-8RO-C x1
- USB cable (Type-A male to Type-C male) x1
- Modbus RTU Relay x 1
- USB TO RS232/485 x 1
- USB-CAN-A x 1
Working with Arduino
This chapter introduces setting up the Arduino environment, including the Arduino IDE, management of ESP32 boards, installation of related libraries, program compilation and downloading, as well as testing demos. It aims to help users master the development board and facilitate secondary development.
Environment Setup
Download and Install Arduino IDE
- Click to visit the Arduino official website, select the corresponding system and system bit to download
- Run the installer and install all by default
Install ESP32 Development Board
- Regarding ESP32-related motherboards used with the Arduino IDE, the esp32 by Espressif Systems library must be installed first.
- According to Board installation requirement, it is generally recommended to use Install Online. If online installation fails, use Install Offline
- For the installation tutorial, please refer to Arduino board manager tutorial
Board name | Board installation requirement | Version number requirement |
---|---|---|
esp32 by Espressif Systems | "Install Offline" / "Install Online" | 3.0.0 and above |
Install Library
- When installing Arduino libraries, there are usually two ways to choose from: Install online and Install offline. If the library installation requires offline installation, you must use the provided library file
For most libraries, users can easily search and install them through the online library manager of the Arduino software. However, some open-source libraries or custom libraries are not synchronized to the Arduino Library Manager, so they cannot be acquired through online searches. In this case, users can only manually install these libraries offline. - For library installation tutorial, please refer to Arduino library manager tutorial
- ESP32-S3-ETH-8DI-8RO-C library file is stored in the demo, click here to jump: ESP32-S3-ETH-8DI-8RO-C Demo
Library Name | Description | Version | Library Installation Requirement |
---|---|---|---|
ArduinoJson | Lightweight JSON library | v6.21.4 | "Install Online" or "Install Offline" |
PubSubClient | MQTT message subscription publishing library | v2.8.0 | "Install Online" or "Install Offline" |
NTPClient | Network time synchronization client library | v3.2.1 | "Install Online" or "Install Offline" |
Run the First Arduino Demo
New Project
void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: Serial.println("Hello, World!"); delay(2000); }
- Save the project and select
File
->Save As...
. In the pop-up menu, select the path to save the project, and enter a project name, such as Hello_World, clickSave
Compile and Flash Demos
- Select the corresponding development board, take the ESP32S3 motherboard as an example:
①. Click to select the dropdown menu option Select Other Board and Port;
②. Search for the required development board model esp32s3 dev module and select;
③. Select COM Port;
④. Save the selection.
- Some development boards with specified version numbers support direct model selection, for example, "Waveshare ESP32-S3-LCD-1.69":
- If the ESP32S3 mainboard only has a USB port, you need to enable USB CDC, as shown in the following diagram:
- Compile and upload the program:
①. Compile the program; ②. Compile and download the program; ③. Download successful.
- Open the Serial Monitor window, and the demo will print "Hello World!" every 2 seconds, and the operation is as follows:
Demo
Demo | Basic Description | Dependency Library |
---|---|---|
01_MAIN_WIFI_AP | Bluetooth control, Bluetooth send IP, Web page control (short distance) | Can be flashed directly Web pages are only available if they are connected to device WIFI |
02_MAIN_WIFI_STA | Bluetooth control, Bluetooth send IP, Web page control (short distance) | Need to modify the WIFI to be connected Web pages can only be used within the intranet |
03_MAIN_WIFI_MQTT | Bluetooth control, Bluetooth transmit IP, Waveshare cloud control (long distance) | Need to modify the WIFI to be connected The device must be created in the Waveshare cloud |
04_MAIN_ALL | Bluetooth control, Bluetooth send IP, Web page control (short distance), Waveshare cloud control (long distance) | Need to modify the WIFI to be connected The device must be created in the Waveshare cloud Web pages can only be used within the intranet |
Arduino Project Parameter Setting
01_MAIN_WIFI_AP
Demo description
- This example implements the control of 8 relays on and off through WiFi, Bluetooth, and network port. The AP mode of WiFi is enabled in this example
Precautions
- Can be flashed directly
- The web page can only be accessed by connecting to the device's WIFI, or if connected to a network cable, by accessing the network port IP within the internal network
Code analysis
- Relay_Analysis(): This function is mainly used to analyze received data, perform corresponding relay control operations based on the data content, and output corresponding status prompt information.
- Parameter analysis
uint8_t *buf
: A pointer to an unsigned 8-bit integer array, which is supposed to store the received data, and the function determines the content of the command based on the value of the first element (buf[0]
) of the array.uint8_t Mode_Flag
: The mode flag is used to represent the data source, and the corresponding data source prompt information (such as Bluetooth data, Wi-Fi data) is output by judging this flag, and different relay operations are performed according to different commands.
- Logical flow
- First output the corresponding data source prompt message according to the value of
Mode_Flag
. - Then use the
switch
statement to perform different operations based on the value ofbuf[0]
:- For the cases from
CH1
toCH8
, thedigitalToggle
function is used to switch the level states of the corresponding GPIO pins (such asGPIO_PIN_CH1
, etc.), and the corresponding elements of theRelay_Flag
array are updated to record the change in relay status. TheBuzzer_PWM
function is called to control the buzzer, and the corresponding on or off prompt information is output according to the final state of the relay. - For the
ALL_ON
command, set all GPIO pins (corresponding to 8 channel relays) to high level (on state), use thememset
function to set all elements of theRelay_Flag
array to 1, indicating that all relays are turned on, output all relay ON prompt information, and control the buzzer. - For the
ALL_OFF
command, set all relevant GPIO pins to low level (off state) similarly, update theRelay_Flag
array elements to 0, output a message that all relays are turned off and control the buzzer, and perform two additional buzzer control operations (with a delay in between). - If the value of
buf[0]
does not belong to the above command cases, a prompt message for non-instruction data is output.
- For the cases from
- First output the corresponding data source prompt message according to the value of
- Parameter analysis
- WIFI_Init (): Configure the device as a Wi-Fi access point (AP), set up a Web server, and set up request processing functions corresponding to different paths to implement related network functions and device control functions, and give corresponding status prompts.
- AP creation
- First set the Wi-Fi mode to
WIFI_AP
, and then attempt to create a soft AP throughWiFi.softAP(ssid, password)
. If it fails, it will loop through prompt and retry until it succeeds
- First set the Wi-Fi mode to
- Parameter configuration and prompts
- After successfully creating the AP, give a prompt with RGB light (green light on for 1 second)
- IP address display
- Obtain and format the IP address of the soft AP, store it in
ipStr
and output it for easy network address recognition
- Obtain and format the IP address of the soft AP, store it in
- Web server setting
- Set up corresponding request handling functions (such as
handleRoot
,handleGetData
, etc.) for multiple paths (such as "/", "/getData", etc.) throughserver.on
, each function should be defined elsewhere for different functional operations like returning pages, getting data, controlling switches etc. - Finally call
server.begin()
to start the Web server and output a startup prompt message.
- Set up corresponding request handling functions (such as
- AP creation
02_MAIN_WIFI_STA
Demo description
- This example implements the control of 8 relays on and off through WiFi and Bluetooth. The STA mode of WiFi is enabled in this example
Precautions
- Need to modify the WIFI to be connected
- The Web page only supports controlling the device and this product to be used under the same network, if you use the mobile phone control, you need to turn off the mobile network
Code analysis
- WIFI_Init (): Connect the device to a specified Wi-Fi network in station (STA) mode. If the connection is successful, it will perform subsequent network-related configurations (such as obtaining an IP address, starting a Web server, and registering callback functions, etc.). If the connection fails, it will give a corresponding prompt and set the connection status flag. The process also provides visual connection status indicators through an RGB light
- Attempt to connect to Wi-Fi network:
- First set Wi-Fi to
WIFI_STA
mode and enable sleep mode, then start connecting to the specified network. In the cyclic wait of unsuccessful connection, a point is output as a prompt every half second, and the RGB light briefly turns red on every even number of attempts (except the first attempt). If every 10 attempts fail, the connection is disconnected and reconnected. If the number of attempts exceeds 22, the connection is considered a failure and the loop is exited.
- First set Wi-Fi to
- Operations after successful connection:
- If the number of connection attempts is less than 23 (i.e. successful connection), set
WIFI_Connection
to 1, light up the green light for 1 second to indicate success, and then obtain and display the local IP address. Next, register callback functions corresponding to multiple paths for the web server (such as root path, data retrieval, control of different switches, etc.), and finally start the server and output startup prompt, so that the device can receive corresponding control through the web page.
- If the number of connection attempts is less than 23 (i.e. successful connection), set
- Operations after connection failure:
- If the number of attempts is greater than or equal to 23 (connection failure), set
WIFI_Connection
to 0, output a prompt to inform that the device can be controlled through Bluetooth debugging assistant, and light a red light to indicate a connection failure status
- If the number of attempts is greater than or equal to 23 (connection failure), set
- Attempt to connect to Wi-Fi network:
03_MAIN_WIFI_MQTT
Demo description
- This example controls 8 relays on and off through MQTT and Bluetooth. It uses ESP32 as the main control unit, supports Wi-Fi and Bluetooth connections, and provides remote control based on the MQTT protocol
Precautions
- Need to modify the WIFI to be connected
- Must create the device in Waveshare Cloud
Code analysis
- Relay_Analysis(): Receive data from different communication sources and perform corresponding relay control operations
- Data Delivery: Commands (such as
CH1
,ALL_ON
etc.) are sent to the device via Bluetooth or Wi-Fi. The device parses and executes the corresponding operation after receiving a command. For example, when the commandCH1
is received, the function will switch the state of relay 1 - Data Feedback: The execution of control commands is printed to the serial monitor via
printf
(e.g., relay status update: "Relay CH1 on") and fed back via the buzzerBuzzer_PWM
). This allows users to see real-time status updates - Communication Protocol
- Bluetooth: Wireless communication with mobile phones or other devices through Bluetooth modules, and the device controls the relay after receiving the command
- MQTT: Connect to the MQTT server via Wi-Fi, and the device subscribes to a specific topic (such as relay control commands). When a new command is issued, the device receives the message via MQTT and performs relay control
- Data Delivery: Commands (such as
- setup ()
- Initialize the various modules required for the system, including serial port, GPIO, RTC, Bluetooth and Wi-Fi (MQTT)
- Call
Bluetooth_Init()
, and the device can establish connections with other Bluetooth devices and receive control commands - With
MQTT_Init()
, the device will connect to the Wi-Fi network and be able to communicate with remote servers through the MQTT protocol
- Call
- Time Synchronization
- If the system is connected to Wi Fi and RTC is enabled, the
Acquisition_time()
function will synchronize the current time to RTC through the network, ensuring that the device has accurate system time
- If the system is connected to Wi Fi and RTC is enabled, the
- Data Upload and Delivery
- Upload: When the device successfully connects to Wi Fi or Bluetooth, it can upload device status information or sensor data (such as temperature, humidity) through MQTT. These data will be sent to the MQTT server regularly for other systems or users to view
- Delivery: The device receives a control command from the MQTT server and performs corresponding actions, such as switching relays on and off or changing configurations
- Initialize the various modules required for the system, including serial port, GPIO, RTC, Bluetooth and Wi-Fi (MQTT)
04_MAIN_ALL
Demo description
- This example is a collection of Bluetooth control, Web page control (near distance), and Waveshare cloud control (long distance)
Precautions
- Need to modify the WIFI to be connected
- The Web page only supports controlling the device and this product to be used under the same network, if you use the mobile phone control, you need to turn off the mobile network
- Must create the device in Waveshare Cloud
External Expansion
Flash Firmware Flashing and Erasing
- The current demo provides test firmware, which can be used to test whether the onboard device functions properly by directly flashing the test firmware
- bin file path:
...\ESP32-S3-POE-ETH-8DI-8RO-C-Demo\Firmware\Factory bin
Working with Homeassistant
The product can be controlled online through the Homeassistant built on the Raspberry Pi, and the relevant operations can be found in Reference link
Resources
Demo
Datasheets
ESP32-S3
Software Tools
Arduino
VScode
Thonny
Debugging tool
Other Resource Link
FAQ
- Long press the BOOT button, press RESET at the same time, then release RESET, then release the BOOT button, at this time the module can enter the download mode, which can solve most of the problems that can not be downloaded.
- It may be due to Flash blank and the USB port is not stable, you can long-press the BOOT button, press RESET at the same time, and then release RESET, and then release the BOOT button, at this time the module can enter the download mode to flash the firmware (demo) to solve the situation.
- It's normal for the first compilation to be slow, just be patient
- If there is a reset button on the development board, press the reset button; if there is no reset button, please power it on again
- Some AppData folders are hidden by default and can be set to show.
- English system: Explorer->View->Check "Hidden items"
- Chinese system: File Explorer -> View -> Display -> Check "Hidden Items"
- Windows system:
①View through Device Manager: Press the Windows + R keys to open the "Run" dialog box; input devmgmt.msc and press Enter to open the Device Manager; expand the "Ports (COM and LPT)" section, where all COM ports and their current statuses will be listed.
②Use the command prompt to view: Open the Command Prompt (CMD), enter the "mode" command, which will display status information for all COM ports.
③Check hardware connections: If you have already connected external devices to the COM port, the device usually occupies a port number, which can be determined by checking the connected hardware.
- Linux system:
①Use the dmesg command to view: Open the terminal.
①Use the ls command to view: Enter ls /dev/ttyS* or ls /dev/ttyUSB* to list all serial port devices.
③Use the setserial command to view: Enter setserial -g /dev/ttyS* to view the configuration information of all serial port devices.
- Check the schematic diagram for different development boards with Type-C interfaces, and handle the output accordingly:
- For development boards with direct USB output, printf function is supported for printing output. If you want to support output via the Serial function, you will need to enable the USB CDC On Boot feature or declare HWCDC.
- For development boards with UART to USB conversion, both printf and Serial functions are supported for printing output, and there is no need to enable USB CDC On Boot.
- The factory demo is for learning only, if it is used for practical application, please optimize the demo logic by yourself.
- Please move the jumper cap to 120R and try again. Some CAN devices require a 120R resistor to be connected in series
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)