Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

ESP32 Ball 智能球体控制系统

基于ESP32的智能球体控制系统,具备LED灯带控制、按钮状态监控、MQTT通信、WebUI界面和OTA升级功能。

项目概述

本项目是一个多功能ESP32控制系统,主要用于球体设备的智能化控制。系统通过多个输入引脚监测按钮状态,控制WS2812 LED灯带显示不同效果,并通过MQTT协议与外部系统通信。同时提供了WebUI界面用于实时监控和固件升级。

主要功能

🎨 LED灯带控制

  • WS2812灯带驱动:支持144个LED灯珠的控制
  • 多种显示效果
    • 红黄频闪:P13触发时显示
    • 绿色呼吸:P12、P14、P25、P26、P27同时触发时显示
    • 关闭状态:默认状态

🎮 按钮状态监控

  • 7路数字输入:P13、P12、P14、P27、P26、P25、P32
  • 消抖处理:50ms消抖延迟,确保信号稳定性
  • 实时状态检测:支持多按钮组合状态判断

📡 MQTT通信

  • 服务器连接:192.168.10.80:1883
  • 主题订阅:ball/triggered
  • 消息发布
    • ball/triggered:当指定组合按钮触发时发送空消息
    • #/reset:P32按钮触发时发送重置信号

🌐 WebUI界面

  • 实时监控:WebSocket实时显示所有按钮状态
  • 响应式设计:支持PC和移动设备访问
  • 状态可视化:按钮状态用不同颜色标识(绿色=按下,红色=释放)

🔄 OTA升级

  • Web界面升级:通过浏览器上传.bin固件文件
  • 自动重启:升级完成后设备自动重启
  • 进度反馈:实时显示升级状态

硬件配置

引脚定义

功能引脚说明
WS2812数据GPIO23LED灯带控制信号
按钮输入GPIO13P13按钮
按钮输入GPIO12P12按钮
按钮输入GPIO14P14按钮
按钮输入GPIO27P27按钮
按钮输入GPIO26P26按钮
按钮输入GPIO25P25按钮
按钮输入GPIO32P32按钮

硬件连接

  • 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支持

核心模块

  1. WiFi连接模块:自动连接配置的WiFi网络
  2. MQTT通信模块:处理MQTT连接和消息收发
  3. LED控制模块:管理LED灯带的各种显示效果
  4. 按钮检测模块:多路按钮状态监测和消抖处理
  5. Web服务器模块:提供HTTP服务和WebSocket通信
  6. OTA升级模块:处理固件在线升级

安装和使用

环境要求

  • PlatformIO IDE(推荐VSCode + PlatformIO扩展)
  • ESP32开发板
  • WiFi网络环境

编译和上传

# 编译项目
pio run
# 上传到ESP32
pio run --target upload
# 监视串口输出
pio device monitor

配置说明

  1. WiFi配置:修改main.cpp中的WiFi凭据

    constchar* ssid = "YOUR_WIFI_SSID";
    constchar* password = "YOUR_WIFI_PASSWORD";
  2. MQTT配置:根据需要修改MQTT服务器地址

    #defineMQTT_SERVER"192.168.10.80"
    #defineMQTT_PORT1883

WebUI访问

  1. 设备启动后会自动连接WiFi
  2. 串口监视器显示设备IP地址
  3. 浏览器访问 http://[设备IP地址] 打开控制面板

使用场景

按钮组合逻辑

  • P13单独按下:触发红黄频闪效果
  • P12+P14+P25+P26+P27同时按下:触发绿色呼吸效果并发送MQTT消息
  • P32按下:发送MQTT重置信号

WebUI功能

  • 实时查看所有按钮状态
  • 通过Web界面上传新固件
  • 监控设备运行状态

故障排除

常见问题

  1. WiFi连接失败

    • 检查WiFi名称和密码是否正确
    • 确认WiFi信号强度足够
  2. MQTT连接失败

    • 检查MQTT服务器地址和端口
    • 确认网络连通性
  3. LED不亮

    • 检查GPIO23连接
    • 确认LED供电正常
  4. WebUI无法访问

    • 检查设备IP地址
    • 确认设备与客户端在同一网络

调试方法

  • 使用串口监视器查看设备日志
  • 检查硬件连接
  • 验证网络配置

开发说明

添加新功能

  1. setup()函数中初始化新功能
  2. loop()函数中添加主循环逻辑
  3. 如需WebUI支持,添加相应的HTML和JavaScript代码

代码结构

  • setup():系统初始化
  • loop():主循环逻辑
  • setup_wifi():WiFi连接设置
  • setup_web_server():Web服务器配置
  • 各种效果函数:LED显示控制

许可证

本项目采用开源许可证,具体请查看LICENSE文件。

贡献

欢迎提交Issue和Pull Request来改进项目。

联系方式

如有问题或建议,请通过以下方式联系:

  • 提交GitHub Issue
  • 发送邮件至项目维护者

注意:使用前请确保正确配置WiFi和MQTT参数,并检查硬件连接是否正确。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages