# esp32-lvgl **Repository Path**: ssgm_07/esp32-lvgl ## Basic Information - **Project Name**: esp32-lvgl - **Description**: 这是一个基于 ESP32-S3 的嵌入式时钟项目,采用 FreeRTOS 双核双任务架构实现“界面渲染”和“网络校时”并行运行。我将 GUI 任务固定在 Core 1,以 5ms 节拍驱动 LVGL;将 Wi-Fi/NTP 任务固定在 Core 0,处理配网、首次校时与周期重同步。通过任务拆分和核心绑定,解决了传统单线程方案中“联网阻塞导致黑屏/卡顿”的问题,实现开机即显示、联网后无缝切换实时时间 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-02-22 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: ESP32S3, LVGL, WiFi ## README # ESP32-S3 CYBER CHRONO v2 一个基于 ESP32-S3 + FreeRTOS + LVGL 的赛博风智能表盘项目。 项目聚焦在“嵌入式并发架构 + UI 流畅渲染 + 网络自动校时”的完整落地。 --- ## ✨ 项目特性 - **双核双任务架构**: - Core 1:GUI 任务(LVGL 渲染) - Core 0:网络任务(WiFi 配网、NTP 同步) - **开机即显示**:先显示模拟时间,联网后无缝切换真实时间 - **定期校时**:首次同步成功后,后台每 30 分钟自动重同步 - **赛博风表盘 UI**:多层弧形动画、动态亮度、状态信息显示 - **工程化配置完整**:基于 PlatformIO,依赖与编译参数可复现 --- ## 🧱 技术栈 - **硬件平台**:ESP32-S3 DevKitC-1(16MB Flash + PSRAM) - **开发框架**:Arduino on ESP32 - **并发系统**:FreeRTOS(Task / Mutex / Core Pinning) - **图形库**:LVGL 8.x - **屏幕驱动**:TFT_eSPI(ST7789,320x320) - **网络与配网**:WiFiManager - **时间同步**:SNTP / NTP(默认 `ntp.aliyun.com`) - **构建工具**:PlatformIO --- ## 🏗️ 架构说明 本项目采用“**渲染与联网解耦**”设计: - `task_gui` 负责初始化 LVGL、创建表盘并持续调用 `lv_timer_handler()` - `task_network` 负责 WiFi 连接、NTP 首次同步与周期重同步 - 通过 `volatile bool ntp_synced` 做状态通知,实现模拟时间到真实时间的平滑切换 - 使用互斥锁保护 LVGL 调用边界,便于后续扩展跨任务 UI 交互 详细设计文档见:`docs/FreeRTOS_Architecture.md` --- ## 🚀 快速开始 ### 1) 环境准备 - 安装 VS Code + PlatformIO 插件 - 准备 ESP32-S3 开发板与 320x320 ST7789 屏幕 ### 2) 克隆与打开 ```bash git clone <你的仓库地址> cd S3_Test ``` 使用 VS Code 打开项目根目录,PlatformIO 会自动识别 `platformio.ini`。 ### 3) 编译与烧录 ```bash pio run pio run -t upload pio device monitor -b 115200 ``` ### 4) 首次运行 - 设备上电后会进入 WiFiManager 配网流程(若无已保存 WiFi) - 配网成功后自动进行 NTP 校时 - 表盘先显示模拟时间,NTP 同步完成后切换为实时时间 --- ## 📁 项目结构 ```text S3_Test/ ├─ platformio.ini ├─ src/ │ ├─ main.cpp │ └─ watch_face.h ├─ include/ │ └─ lv_conf.h ├─ docs/ │ └─ FreeRTOS_Architecture.md ├─ lib/ ├─ test/ └─ LICENSE ``` --- ## ⚙️ 默认配置(摘录) - 目标板卡:`esp32-s3-devkitc-1` - ESP32 平台版本:`espressif32 @ 6.5.0` - 显示驱动:`ST7789_DRIVER` - 分辨率:`320 x 320` - 串口波特率:`115200` 如需修改引脚或屏幕参数,请编辑 `platformio.ini` 中的 `build_flags`。 --- ## 🧪 适用场景 - FreeRTOS 双核任务调度学习 - ESP32 + LVGL 图形界面开发实践 - NTP 校时与网络后台任务并发设计 - 嵌入式项目面试/作品集展示 --- ## 🛣️ 后续可扩展方向 - 天气/空气质量 API 接入 - 低功耗策略(亮屏/休眠切换) - 触摸交互与菜单系统 - OTA 在线升级 - 传感器数据融合展示 --- ## 🤝 贡献 欢迎提交 Issue / PR 一起完善项目: - Bug 修复 - 新表盘主题 - 性能优化与内存优化 - 文档补充与教程化改进 --- ## 📄 License 本项目基于仓库中的 `LICENSE` 文件开源。