Skip to content

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~CH6relay1~relay6GPIO 数字输出(12)1、2、41、42、45、46
WS2812 RGBrgbNeoPixel(45)38
RS485rs485UART(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:

json
[
  { "id": "relay1", "value": "1" },
  { "id": "rgb", "value": "red" }
]

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
powershell -ExecutionPolicy Bypass -File scripts/deploy-config-bundle.ps1 `
  -Env esp32s3-F8R0 -Port COM7 `
  -BundlePath docs/waveshare-esp32s3-relay6ch

以上是会写入固件/文件系统的首次配置示例,COM7仅为占位。现有设备升级前先按MAC、Flash/PSRAM和分区核验身份并备份现场配置;不能将公开整包当作保留配置升级。

脚本会校验 GPIO 冲突和 S3 保留引脚,临时写入 LittleFS 配置,编译固件后烧录并恢复工作区配置文件。串口监视器使用 115200。设备联网后优先通过核验后的STA地址访问;仅在mDNS实际启用且名称解析成功时使用waveshare-6ch.local Web 管理页。

RS485 接线和安全 ​

RS485 使用 A+、B- 差分线,外部模块与本板共地,并在总线末端按实际拓扑启用 120 Ω 终端电阻。继电器维护、接线或更换前必须断电;不得超过额定负载,感性负载应增加 RC 吸收或压敏电阻。

参考资料 ​

蜂信物联 | fastbee.cn