基于ESP32的智能球体控制系统,具备LED灯带控制、按钮状态监控、MQTT通信、WebUI界面和OTA升级功能。
本项目是一个多功能ESP32控制系统,主要用于球体设备的智能化控制。系统通过多个输入引脚监测按钮状态,控制WS2812 LED灯带显示不同效果,并通过MQTT协议与外部系统通信。同时提供了WebUI界面用于实时监控和固件升级。
- WS2812灯带驱动:支持144个LED灯珠的控制
- 多种显示效果:
- 红黄频闪:P13触发时显示
- 绿色呼吸:P12、P14、P25、P26、P27同时触发时显示
- 关闭状态:默认状态
- 7路数字输入:P13、P12、P14、P27、P26、P25、P32
- 消抖处理:50ms消抖延迟,确保信号稳定性
- 实时状态检测:支持多按钮组合状态判断
- 服务器连接:192.168.10.80:1883
- 主题订阅:ball/triggered
- 消息发布:
ball/triggered:当指定组合按钮触发时发送空消息#/reset:P32按钮触发时发送重置信号
- 实时监控:WebSocket实时显示所有按钮状态
- 响应式设计:支持PC和移动设备访问
- 状态可视化:按钮状态用不同颜色标识(绿色=按下,红色=释放)
- Web界面升级:通过浏览器上传.bin固件文件
- 自动重启:升级完成后设备自动重启
- 进度反馈:实时显示升级状态
| 功能 | 引脚 | 说明 |
|---|---|---|
| WS2812数据 | GPIO23 | LED灯带控制信号 |
| 按钮输入 | GPIO13 | P13按钮 |
| 按钮输入 | GPIO12 | P12按钮 |
| 按钮输入 | GPIO14 | P14按钮 |
| 按钮输入 | GPIO27 | P27按钮 |
| 按钮输入 | GPIO26 | P26按钮 |
| 按钮输入 | GPIO25 | P25按钮 |
| 按钮输入 | GPIO32 | P32按钮 |
- WS2812灯带数据线连接至GPIO23
- 所有按钮引脚配置为输入模式,启用内部上拉电阻
- 按钮触发逻辑:低电平触发(按下时为LOW)
Adafruit NeoPixel@^1.12.0:WS2812 LED控制PubSubClient@^2.8.0:MQTT客户端ESPAsyncWebServer-esphome@^2.0.0:异步Web服务器AsyncTCP-esphome@^1.1.1:异步TCP支持
- WiFi连接模块:自动连接配置的WiFi网络
- MQTT通信模块:处理MQTT连接和消息收发
- LED控制模块:管理LED灯带的各种显示效果
- 按钮检测模块:多路按钮状态监测和消抖处理
- Web服务器模块:提供HTTP服务和WebSocket通信
- OTA升级模块:处理固件在线升级
- PlatformIO IDE(推荐VSCode + PlatformIO扩展)
- ESP32开发板
- WiFi网络环境
# 编译项目
pio run
# 上传到ESP32
pio run --target upload
# 监视串口输出
pio device monitorWiFi配置:修改
main.cpp中的WiFi凭据constchar* ssid = "YOUR_WIFI_SSID"; constchar* password = "YOUR_WIFI_PASSWORD";
MQTT配置:根据需要修改MQTT服务器地址
#defineMQTT_SERVER"192.168.10.80" #defineMQTT_PORT1883
- 设备启动后会自动连接WiFi
- 串口监视器显示设备IP地址
- 浏览器访问
http://[设备IP地址]打开控制面板
- P13单独按下:触发红黄频闪效果
- P12+P14+P25+P26+P27同时按下:触发绿色呼吸效果并发送MQTT消息
- P32按下:发送MQTT重置信号
- 实时查看所有按钮状态
- 通过Web界面上传新固件
- 监控设备运行状态
WiFi连接失败
- 检查WiFi名称和密码是否正确
- 确认WiFi信号强度足够
MQTT连接失败
- 检查MQTT服务器地址和端口
- 确认网络连通性
LED不亮
- 检查GPIO23连接
- 确认LED供电正常
WebUI无法访问
- 检查设备IP地址
- 确认设备与客户端在同一网络
- 使用串口监视器查看设备日志
- 检查硬件连接
- 验证网络配置
- 在
setup()函数中初始化新功能 - 在
loop()函数中添加主循环逻辑 - 如需WebUI支持,添加相应的HTML和JavaScript代码
setup():系统初始化loop():主循环逻辑setup_wifi():WiFi连接设置setup_web_server():Web服务器配置- 各种效果函数:LED显示控制
本项目采用开源许可证,具体请查看LICENSE文件。
欢迎提交Issue和Pull Request来改进项目。
如有问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件至项目维护者
注意:使用前请确保正确配置WiFi和MQTT参数,并检查硬件连接是否正确。