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数据 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支持

核心模块

  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凭据

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

    #define MQTT_SERVER "192.168.10.80"
    #define MQTT_PORT 1883

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