Waveshare ESP32-S3-Relay-6CH(F8R0)
本案例使用 PlatformIO 环境 esp32s3-F8R0,适配微雪 SKU 26756。当前默认配置启用 6 路继电器、隔离 RS485 和 WS2812 RGB 灯。继电器触点额定值为 ≤10 A/250 V AC 或 ≤10 A/30 V DC;高压接线必须由专业人员完成,并配置合适的保险丝和灭弧保护。
引脚配置
| 功能 | FastBee 外设 ID | 类型 | GPIO |
|---|---|---|---|
| 继电器 CH1~CH6 | relay1~relay6 | GPIO 数字输出(12) | 1、2、41、42、45、46 |
| WS2812 RGB | rgb | NeoPixel(45) | 38 |
| RS485 | rs485 | UART(1) | RX=18,TX=17 |
peripherals.json 共定义 8 个外设:6 个 GPIO 继电器、1 个 GPIO38 WS2812 RGB 灯和 1 个 RX18/TX17 UART。完整 JSON 配置位于 FastBee-Arduino 的 docs/waveshare-esp32s3-relay6ch,包括 device.json、network.json、peripherals.json、protocol.json 和 periph_exec.json。
默认配置暂未绑定平台身份:deviceId 为空、productNumber 为 0,MQTT 默认禁用且 clientId、username、password 均为空。接入平台前填写这些字段,再将 protocol.json 的 mqtt.enabled 改为 true。
平台控制
periph_exec.json 共定义 7 条平台触发规则,分别控制 6 个继电器和 RGB。平台向对应外设下发值即可控制:
relay1~relay6:0关闭,1开启;rgb:发送red、green、blue、white、off、rainbow等 NeoPixel 命令,也可以发送{"action":"color","value":"#00ff80"}。
继电器初始状态均为关闭。平台下发后,设备会执行动作并按规则上报继电器状态。
平台 MQTT 数据命令使用统一数组格式,例如一次下发继电器和 RGB:
[
{ "id": "relay1", "value": "1" },
{ "id": "rgb", "value": "red" }
]2
3
4
Modbus 子设备
RS485 已配置为 UART1、9600-8-N-1、自动收发(dePin=255),Modbus 工作在主站模式。protocol.json 仅提供一个默认禁用的温湿度轮询任务和一个温湿度传感器模板:从站地址 1,使用 FC03 从地址 0 读取 2 个寄存器,温度和湿度缩放系数均为 0.1。
默认配置不会主动轮询,传感器子设备占位项也保持禁用;接入实际传感器后,先按设备手册调整从站地址、寄存器地址和数据映射,再只启用轮询任务。master.devices 用于继电器、PWM、PID 和电机等控制类子设备,不要启用其中的传感器占位项。periph_exec.json 不包含 Modbus 继电器控制规则。
构建与部署
在 FastBee-Arduino 根目录执行:
powershell -ExecutionPolicy Bypass -File scripts/deploy-config-bundle.ps1 `
-Env esp32s3-F8R0 -Port COM7 `
-BundlePath docs/waveshare-esp32s3-relay6ch2
3
以上是会写入固件/文件系统的首次配置示例,COM7仅为占位。现有设备升级前先按MAC、Flash/PSRAM和分区核验身份并备份现场配置;不能将公开整包当作保留配置升级。
脚本会校验 GPIO 冲突和 S3 保留引脚,临时写入 LittleFS 配置,编译固件后烧录并恢复工作区配置文件。串口监视器使用 115200。设备联网后优先通过核验后的STA地址访问;仅在mDNS实际启用且名称解析成功时使用waveshare-6ch.local Web 管理页。
RS485 接线和安全
RS485 使用 A+、B- 差分线,外部模块与本板共地,并在总线末端按实际拓扑启用 120 Ω 终端电阻。继电器维护、接线或更换前必须断电;不得超过额定负载,感性负载应增加 RC 吸收或压敏电阻。

