ESP32-S3-ETH-8DI-8RO-C 是一款基于 ESP32-S3 主控,支持 WiFi、蓝牙、CAN、网口 等外设接口的工业级 8 路 WiFi 网络继电器。内置电源隔离、光耦隔离等保护电路,安全稳定更可靠,适用于AIoT领域。
| 参数名称 | 参数 |
| 供电电压 | 7~36V (或 5V/1A Type-C接口) |
| 继电器路数 | 8路 |
| 数字输入路数 | 8路 |
| 触点类型 | 一常开一常闭 |
| 接线端口 | Type-C |
| 通信协议 | USB协议 |
| 产品尺寸 | 90(H)x 175(V) mm |

1、ESP32-S3 2、优质继电器 3、光耦隔离 4、复位按键 5、PoE 接口 6、BOOT 按键 7、电源芯片 8、数字隔离 9、电源隔离 10、双向光耦隔离 11、RTC 电池接口 12、蜂鸣器 13、开关量输入接口 | 14、排针接口 15、工作指示灯 16、USB Type-C 接口 17、WS2812 RGB 彩灯 18、网口 19、外部天线连接座 20、电源接线端子 21、CAN 通信接口 22、CAN 匹配电阻 23、继电器接线端子 |

24、板载 TVS (瞬态电压抑制管) 25、CAN 转换芯片 26、MP1605GTF-Z 27、PCF85063ATL | 28、TCA9554PWR 29、W5500 30、Micro SD 卡槽 |

| 控制 EXIO | 功能 |
| EXIO1 | 1号继电器的控制引脚 |
| EXIO2 | 2号继电器的控制引脚 |
| EXIO3 | 3号继电器的控制引脚 |
| EXIO4 | 4号继电器的控制引脚 |
| EXIO5 | 5号继电器的控制引脚 |
| EXIO6 | 6号继电器的控制引脚 |
| EXIO7 | 7号继电器的控制引脚 |
| EXIO8 | 8号继电器的控制引脚 |
| 控制 EXIO | 功能 |
| GPIO4 | 1号数字输入检测引脚 |
| GPIO5 | 2号数字输入检测引脚 |
| GPIO6 | 3号数字输入检测引脚 |
| GPIO7 | 4号数字输入检测引脚 |
| GPIO8 | 5号数字输入检测引脚 |
| GPIO9 | 6号数字输入检测引脚 |
| GPIO10 | 7号数字输入检测引脚 |
| GPIO11 | 8号数字输入检测引脚 |
| 控制 GPIO | 功能 |
| GPIO12 | ETH_INT |
| GPIO13 | ETH_MOSI |
| GPIO14 | ETH_MISO |
| GPIO15 | ETH_SCLK |
| GPIO16 | ETH_CS |
| 控制 GPIO | 功能 |
| GPIO45 | SD_D0 |
| GPIO47 | SD_CMD |
| GPIO48 | SD_SCK |
| NC | SD_D3 |
| NC | SD_D1 |
| NC | SD_D2 |
| 控制GPIO | 功能 |
| GPIO17 | CAN对应TWAI的TX引脚 |
| GPIO18 | CAN对应TWAI的RX引脚 |
| 控制GPIO | 功能 |
| GPIO41 | RTC_SCL,I2C 时钟线 |
| GPIO42 | RTC_SDA,I2C 数据线 |
| 控制GPIO | 功能 |
| GPIO38 | RGB 控制引脚 |
| 控制GPIO | 功能 |
| GPIO46 | 蜂鸣器的控制引脚 |
| 控制GPIO | 功能 |
| GPIO0 | BOOT按键控制引脚 |

注意:CAN 在发送数据时需要回环到自身才算一帧数据结束,所以在数据发送时会出现TX(绿灯)和RX(蓝灯)X指示灯同时闪烁的情况,这是正常的。

ESP32-S3-ETH-8DI-8RO-C 目前提供 Arduino IDE 开发工具和框架。
| Arduino IDEArduino IDE是一款便捷灵活、方便上手的开源电子原型平台。不需要太多基础,简单学习后,你也可以快速地进行开发。同时,Arduino 拥有庞大的全球用户社区,提供了海量的开源代码、项目示例和教程,还有丰富的库资源,封装了复杂功能,让开发者能快速实现各种功能。 |
这两种开发方式各有其优势,开发者可以根据自身需求和技能水平进行选择。Arduino 和 MicroPython 适合初学者和非专业人士,因其简单易学、上手快。
本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。

| 板名称 | 板安装要求 | 版本号要求 |
|---|---|---|
| esp32 by Espressif Systems | “离线”安装/“在线”安装 | 3.0.0及以上 |
| 库名称 | 说明 | 版本 | 库安装要求 |
|---|---|---|---|
| ArduinoJson | 轻量 JSON 库 | v6.21.4 | “在线”或“离线”安装 |
| PubSubClient | MQTT 消息订阅发布库 | v2.8.0 | “在线”或“离线”安装 |
| NTPClient | 网络时间同步客户端库 | v3.2.1 | “在线”或“离线”安装 |
File -> New Sketch
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);
}File -> Save As...;在弹出的菜单选择保存工程路径,并输入工程名,如 Hello_World,点击保存①. 点击选择下拉框选项“Select Other Board and Port”;
②. 搜索需要的开发板型号“esp32s3 dev module”并选择;
③. 选择COM口;
④. 保存选择。

①. 编译程序;②. 编译并下载程序;③. 下载成功。


| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_MAIN_WIFI_AP | 蓝牙控制,蓝牙发送IP,Web页面控制(近距离) | 可直接烧录 Web 页仅连接到设备 WIFI 才可使用 |
| 02_MAIN_WIFI_STA | 蓝牙控制,蓝牙发送IP,Web页面控制(近距离) | 需 修改 要连接的 WIFI Web页仅内网使用 |
| 03_MAIN_WIFI_MQTT | 蓝牙控制,蓝牙发送IP,Waveshare云控制(远距离) | 需 修改 要连接的 WIFI 须在Waveshare云中 创建 设备 |
| 04_MAIN_ALL | 蓝牙控制,蓝牙发送IP,Web页面控制(近距离),Waveshare云控制(远距离) | 需 修改 要连接的 WIFI 须在Waveshare云中 创建 设备 Web页仅内网使用 |

【程序说明】
【注意事项】
【代码分析】
uint8_t *buf:指向一个无符号 8 位整数数组的指针,这个数组应该是存储接收到的数据,函数会根据数组第一个元素(buf[0])的值来判断具体的指令内容。uint8_t Mode_Flag:用于表示数据来源的模式标志,通过判断这个标志来输出对应的数据来源提示信息(如蓝牙数据、Wi-Fi 数据),并根据不同的指令进行不同的继电器操作Mode_Flag的值输出对应的数据源提示信息。switch语句根据buf[0]的值来执行不同的操作:CH1到CH8的情况,分别通过digitalToggle函数来切换对应的 GPIO 引脚(如GPIO_PIN_CH1等)的电平状态,同时更新对应的Relay_Flag数组元素来记录继电器状态的改变,调用Buzzer_PWM函数控制蜂鸣器,并且根据继电器的最终状态输出相应的开启或关闭提示信息。ALL_ON指令,将所有的 GPIO 引脚(对应 8 个通道继电器)设置为高电平(开启状态),通过memset函数将Relay_Flag数组所有元素设置为 1,表示全部继电器开启,输出全部继电器开启提示信息并控制蜂鸣器。ALL_OFF指令,类似地将所有相关 GPIO 引脚设置为低电平(关闭状态),更新Relay_Flag数组元素为 0,输出全部继电器关闭提示信息并控制蜂鸣器,还额外进行了两次蜂鸣器控制操作(中间有延迟)。buf[0]的值不属于上述指令情况,则输出接收到非指令数据的提示信息WIFI_AP,然后通过WiFi.softAP(ssid, password)尝试创建软 AP,若失败会循环提示并重试,直至成功ipStr后输出显示,方便知晓网络地址server.on为多个路径(如 “/”“/getData” 等)分别设置对应的请求处理函数(如 handleRoot、handleGetData等),各函数应在别处定义,用于不同功能操作,像返回页面、获取数据、控制开关等。server.begin()启动 Web 服务器,并输出启动提示信息【程序说明】
【注意事项】
【代码分析】
WIFI_STA 模式并开启睡眠模式,然后开始连接指定网络。在未连接成功的循环等待中,每半秒输出一个点作为提示,每偶数次(除首次外)尝试时通过 RGB 灯短暂亮红灯提示,每 10 次尝试失败则断开重连。若尝试次数超 22 次则认定连接失败并跳出循环。WIFI_Connection 为 1,亮绿灯 1 秒提示成功,然后获取并显示本地 IP 地址。接着为 Web 服务器注册多个路径对应的回调函数(如根路径、获取数据、控制不同开关等路径),最后启动服务器并输出启动提示信息,使设备能通过网页接受相应控制。WIFI_Connection 为 0,输出提示告知可通过蓝牙调试助手控制设备,并亮红灯提示连接失败状【CAN 接口】
【程序说明】
【注意事项】
【代码分析】
CH1、ALL_ON 等)通过 蓝牙 或 Wi-Fi 发送至设备。设备接收到指令后,解析并执行对应的操作。举例来说,当接收到CH1指令时,函数会切换继电器 1 的状态printf 打印到串口监视器(例如:继电器状态更新:"Relay CH1 on")并通过蜂鸣器反馈(Buzzer_PWM)。这允许用户看到实时的状态更新Bluetooth_Init(),设备可以与其他蓝牙设备建立连接,并接收控制指令MQTT_Init(),设备会连接到 Wi-Fi 网络,并能够通过 MQTT 协议与远程服务器通信Acquisition_time()函数会通过网络同步当前时间到 RTC 中,确保设备有准确的系统时间【CAN 接口】
【程序说明】
【注意事项】
【CAN 接口】
..\ESP32-S3-POE-ETH-8DI-8RO-C-Demo\Firmware\Factory bin
产品可以在通过树莓派上搭建的 Homeassistant ,进行线上控制,实现相关操作请查看参考链接
①通过设备管理器查看: 按下Windows + R键打开“运行”对话框; 输入devmgmt.msc并按回车键打开设备管理器; 展开“端口(COM和LPT)”部分,这里会列出所有的COM端口及其当前状态。
②使用命令提示符查看: 打开命令提示符(CMD); 输入mode命令,这将显示所有COM端口的状态信息。
③查看硬件连接: 如果你已经连接了外部设备到COM口,通常设备会占用一个端口号,可以通过查看连接的硬件来确定使用的是哪个端口。
①使用dmesg命令查看: 打开终端。
②使用ls命令查看: 输入ls /dev/ttyS*或ls /dev/ttyUSB*来列出所有的串口设备。
③使用setserial命令查看: 输入setserial -g /dev/ttyS*来查看所有串口设备的配置信息。
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
