基于ESP32和MicroPython的四路继电器控制系统,支持通过MQTT服务器远程控制继电器开关。
- ✅ 四路继电器控制(GPIO23, GPIO5, GPIO4, GPIO13)
- ✅ WiFi配网功能(Web配网界面)
- ✅ 重置配网功能(GPIO12按钮)
- ✅ MQTT自动重连保持连接
- ✅ 实时状态监控和反馈
- ✅ 支持JSON格式控制命令
| 继电器 | GPIO引脚 | 功能描述 |
|---|---|---|
| 继电器1 | GPIO23 | 第一路继电器 |
| 继电器2 | GPIO5 | 第二路继电器 |
| 继电器3 | GPIO4 | 第三路继电器 |
| 继电器4 | GPIO13 | 第四路继电器 |
| 功能 | GPIO引脚 | 说明 |
|---|---|---|
| 重置配网 | GPIO12 | 低电平触发重置配网 |
# 使用esptool烧录MicroPython固件到ESP32
esptool.py --chip esp32 --port COM3 write_flash -z 0x1000 micropython-esp32-20231005-v1.21.0.bin# 在MicroPython REPL中执行
import upip
upip.install('umqtt.simple')将以下文件上传到ESP32:
main.py- 主程序config.py- 配置文件
- 将ESP32上电
- 如果没有WiFi配置,系统会自动进入配网模式
- 连接WiFi热点:
ESP32_Config,密码:12345678 - 访问:
http://192.168.4.1 - 输入WiFi账号密码并保存
- 按住GPIO12按钮(低电平)
- 系统会删除WiFi配置并重新进入配网模式
{
"action": "control",
"relay": "relay1",
"state": "on"
}{
"action": "status"
}- 控制主题:
relay/control - 状态主题:
relay/status
- 地址:
39.101.179.153 - 端口:
1883 - 客户端ID:
ESP32_Relay_Controller
RELAY_PINS = {
"relay1": 23, # GPIO23
"relay2": 5, # GPIO5
"relay3": 4, # GPIO4
"relay4": 13 # GPIO13
}系统会定期发送状态信息到MQTT主题:
{
"relay": "relay1",
"state": "on",
"timestamp": 1699123456.789
}{
"system": "online",
"wifi": "connected",
"mqtt": "connected",
"timestamp": 1699123456.789
}- 检查WiFi账号密码是否正确
- 检查信号强度
- 重置配网重新配置
- 检查网络连接
- 检查MQTT服务器地址和端口
- 检查防火墙设置
- 检查GPIO连接
- 检查继电器模块电源
- 查看串口调试信息
main.py- 主程序,包含所有功能config.py- 配置文件,系统参数requirements.txt- 依赖库列表
RelayController- 主控制类connect_wifi()- WiFi连接connect_mqtt()- MQTT连接process_relay_command()- 处理继电器命令check_connections()- 连接状态检查
- 可添加更多继电器
- 可添加传感器读取
- 可添加定时任务
- 可添加OTA更新
本项目采用MIT许可证,详见LICENSE文件。
如有问题,请查看:
- 串口调试信息
- MQTT服务器日志
- 硬件连接检查
- 网络连接测试