Skip to content

Neko-233/ESP32-GitHub-Stars-Display

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 多功能智能显示器

这是一个基于 ESP32-2432S028R (俗称"廉价黄屏") 开发板的多功能智能显示器。它不仅能够实时显示 GitHub 仓库信息,还集成了天气预报、智能日历、数据可视化图表等丰富功能,为用户提供一站式的信息展示解决方案。

项目采用现代化的 LVGL 图形库构建触摸界面,支持手势操作和多屏幕切换,所有配置均可通过触摸屏完成,无需修改代码。

image

🎯 项目特色

  • 🚀 零代码配置: 所有设置通过触摸界面完成,支持实时配置修改
  • 📊 数据可视化: 内置图表系统,支持历史数据趋势分析
  • 🌤️ 实时天气: 集成天气API,显示当地天气信息
  • 📅 智能日历: 动态日历显示,支持跨月视图和当日高亮
  • 🎨 现代化UI: 基于LVGL的流畅动画和渐变效果
  • 💾 数据持久化: 自动保存历史数据,支持长期趋势分析

✨ 核心功能模块

📈 GitHub 数据监控

  • 实时数据获取: 通过 GitHub API 获取仓库的星标、分支、关注者数据
  • 数字滚动动画: 平滑的数字变化动画效果
  • 增长趋势分析: 自动计算并显示相比昨日的数据变化
  • 历史数据记录: 自动保存每次获取的数据,支持长期趋势分析

📊 数据可视化图表

  • 多模式图表: 支持实时数据、每日数据、增长数据三种显示模式
  • 动画图表: 流畅的数据加载和切换动画
  • 智能缩放: 自动调整Y轴范围以最佳显示数据
  • 交互操作: 长按星标卡片进入图表界面,支持模式切换

🌤️ 天气信息显示

  • 实时天气: 显示当前温度、湿度、风力等信息
  • 位置管理: 支持自定义城市位置设置
  • 天气图标: 直观的天气状态显示
  • 自动刷新: 定时更新天气数据

📅 智能日历系统

  • 完整月视图: 显示6周完整日历,包含上月和下月日期
  • 智能配色: 本月日期白色显示,跨月日期灰色区分
  • 当日高亮: 当前日期黄色高亮显示
  • 时区支持: 支持全球时区配置和NTP时间同步

🎮 交互体验

  • 手势操作: 支持左右滑动切换界面
  • 触摸反馈: 按钮点击、长按等多种交互方式
  • 动画切换: 流畅的页面切换动画效果
  • 状态指示: 实时显示WiFi连接、数据获取状态

⚙️ 系统管理

  • WiFi 管理: 内置网络扫描、连接和状态监控
  • 配置持久化: 使用 ESP32 NVS 存储,断电保持设置
  • 串口调试: 丰富的调试命令和状态输出
  • 安全配置: 敏感信息独立存储,保护用户隐私

🔧 硬件要求

组件 规格 说明
主控板 ESP32-2432S028R 俗称"廉价黄屏",集成WiFi和蓝牙
显示屏 2.8寸 TFT LCD (320x240) ILI9341驱动芯片
触摸屏 电阻式触摸 XPT2046驱动芯片
存储 4MB Flash + PSRAM 支持大容量数据存储
接口 USB-C 供电和程序下载

⚙️ 环境配置与依赖

本项目基于 Arduino IDE 进行开发。在编译上传前,请确保你已完成以下所有环境配置:

1. Arduino IDE 设置 (关键步骤)

打开 Arduino IDE,在“工具”菜单中,确保你的开发板配置与以下设置完全一致,这对于 ESP32-2432S028R 的正常工作至关重要:

设置项
Board "ESP32 Dev Module"
Upload Speed "921600"
CPU Frequency "240MHz (WiFi/BT)"
Flash Frequency "80MHz"
Flash Mode "QIO"
Flash Size "4MB (32Mb)"
Partition Scheme "Huge APP (3MB No OTA/1MB SPIFFS)"
PSRAM "Enabled"

2. 安装 ESP32 开发板支持

  1. 打开 Arduino IDE,进入“文件” > “首选项”。

  2. 在“附加开发板管理器网址”中,填入以下 URL:

    [https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json](https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json)
    
  3. 打开“工具” > “开发板” > “开发板管理器”。

  4. 搜索 esp32 并安装由 Espressif Systems 提供的库。

3. 安装必要的库

请通过 Arduino IDE 的 “库管理器” 搜索并安装以下所有库的最新版本:

库名称 作者
LovyanGFX lovyan03
LVGL lvgl
XPT2046_Touchscreen Paul Stoffregen
ArduinoJson Benoit Blanchon

4. 创建你的私密配置文件 (重要!)

为了保护你的个人信息,本项目使用一个独立的 secrets.h 文件来存放你的 WiFi 密码和 GitHub Token。此文件不会被上传到 GitHub。

  1. 在你的项目文件夹 (与 GitHub_Display.ino 同级) 下,手动创建一个名为 secrets.h 的文件

  2. 将以下模板内容复制到你刚创建的 secrets.h 文件中:

    // secrets.h
    // 这个文件专门用于存放你的个人敏感信息。
    // 重要:此文件不应该被上传到GitHub。
    
    #ifndef SECRETS_H
    #define SECRETS_H
    
    // 在这里填入你的WiFi名称
    const char* SECRET_SSID = "你的WiFi名";
    
    // 在这里填入你的WiFi密码
    const char* SECRET_PASSWORD = "你的WiFi密码";
    
    // 在这里填入你的GitHub个人访问令牌 (PAT)
    // 你可以在 [https://github.com/settings/tokens](https://github.com/settings/tokens) 生成它
    const char* SECRET_GITHUB_TOKEN = "ghp_xxxxxxxxxxxxxxxxxxxx";
    
    #endif // SECRETS_H
  3. 将文件中的 "你的WiFi名", "你的WiFi密码" 等占位符替换为你自己的真实信息。

5. 确认项目文件结构

完成以上步骤后,请确保你的项目文件夹中至少包含以下文件:

GitHub_Display/
├── GitHub_Display.ino      (主代码文件 - 5000+ 行完整实现)
├── secrets.h               (你的私密配置文件)
├── lv_conf.h               (LVGL图形库配置文件)
├── font_awesome_16.cpp     (FontAwesome图标字体)
├── city_data.h             (全球城市数据库)
├── README.md               (项目说明文档)
└── LICENSE                 (MIT开源协议)

🚀 编译与使用

编译上传

  1. 用 Arduino IDE 打开 GitHub_Display.ino 文件
  2. 连接 ESP32 开发板,确认工具菜单配置正确
  3. 点击"上传"按钮,等待编译完成

首次配置

  1. WiFi连接: 设备启动后会自动使用 secrets.h 中的WiFi信息连接网络
  2. GitHub设置: 自动使用配置的GitHub Token和仓库信息
  3. 时区配置: 根据需要修改代码中的时区设置(默认为UTC+8)

界面操作指南

主界面功能

  • 数据显示: 实时显示GitHub仓库的星标、分支、关注者数量
  • 增长指示: 显示相比昨日的数据变化(绿色↗️增长,红色↘️下降)
  • 状态指示: 顶部显示WiFi连接状态和最后更新时间
  • 设置按钮: 右上角齿轮图标进入设置菜单
  • 刷新按钮: 右上角刷新图标手动更新数据

手势操作

  • 左滑: 从主界面切换到日历界面
  • 右滑: 从天气/日历界面返回主界面
  • 长按星标卡片: 进入数据图表界面

设置菜单

  • WiFi设置: 扫描并连接新的WiFi网络
  • GitHub配置: 修改仓库用户名、仓库名和访问令牌
  • 天气设置: 配置显示城市位置
  • 系统信息: 查看设备状态和版本信息

串口调试命令

连接串口监视器(115200波特率)可使用以下命令:

  • show_time: 显示当前详细时间信息
  • set_timezone <offset>: 动态设置时区偏移量
  • test_anim: 测试数字滚动动画效果

📱 界面展示

多屏幕导航

项目包含以下主要界面:

  1. 主界面 - GitHub数据展示

    • 实时星标、分支、关注者数量
    • 数字滚动动画效果
    • 增长趋势指示器
  2. 图表界面 - 数据可视化

    • 三种显示模式:实时数据/每日数据/增长数据
    • 动画图表加载效果
    • 智能Y轴缩放
  3. 天气界面 - 天气信息

    • 当前温度、湿度、风力
    • 天气状态图标
    • 位置信息显示
  4. 日历界面 - 智能日历

    • 完整6周月视图
    • 跨月日期显示
    • 当日高亮标识
  5. 设置界面 - 系统配置

    • WiFi网络管理
    • GitHub仓库配置
    • 天气城市设置

🔧 高级功能

数据持久化

  • 历史数据: 自动保存每次获取的GitHub数据
  • 每日统计: 每天23:59自动保存当日数据
  • 增长记录: 检测到数据变化时自动记录
  • 配置保存: 所有用户设置持久化存储

时间同步

  • NTP同步: 自动从网络时间服务器同步时间
  • 时区支持: 支持全球时区配置
  • 失败重试: NTP同步失败时自动重试机制

网络管理

  • WiFi扫描: 自动扫描可用网络
  • 连接监控: 实时监控网络连接状态
  • 自动重连: 网络断开时自动尝试重连

🎨 UI设计特色

  • 现代化配色: 深色主题配合渐变背景
  • 流畅动画: 页面切换和数据更新动画
  • 响应式布局: 适配2.8寸屏幕的最佳显示效果
  • 图标字体: 集成FontAwesome图标库
  • 状态反馈: 丰富的视觉状态指示

🛠️ 故障排除

常见问题

编译错误

  • 确保已安装所有必需的库
  • 检查开发板配置是否正确
  • 验证 secrets.h 文件格式

WiFi连接问题

  • 检查WiFi密码是否正确
  • 确认网络支持2.4GHz频段
  • 查看串口输出的连接状态

触摸不响应

  • 确认触摸校准是否正确
  • 检查硬件连接
  • 重启设备重新校准

数据获取失败

  • 验证GitHub Token是否有效
  • 检查仓库名称是否正确
  • 确认网络连接正常

调试技巧

  • 使用串口监视器查看详细日志
  • 检查NVS存储的配置信息
  • 使用串口命令测试各项功能

🔮 未来规划

  • 支持更多GitHub数据指标
  • 添加多仓库监控功能
  • 集成更多天气信息源
  • 支持自定义主题配色
  • 添加数据导出功能
  • 支持OTA无线更新

🤝 贡献指南

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

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

🙏 致谢

📄 许可证

本项目采用 MIT License 开源协议。


⭐ 如果这个项目对你有帮助,请给个Star支持一下!

About

这是一个基于 ESP32-2432S028R 开发板的 GitHub 仓库星标数显示器项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published