# pomodoro **Repository Path**: myfung/pomodoro ## Basic Information - **Project Name**: pomodoro - **Description**: 基于esp32系列芯片的番茄钟 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-23 - **Last Updated**: 2026-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ST7789 + LVGL + EC11 WiFi Demo 这是一个基于ESP32-C3的触摸屏显示项目,集成了ST7789 LCD驱动、LVGL图形库、EC11编码器控制和WiFi管理功能。 ## 📋 项目概述 本项目实现了一个功能丰富的触摸屏界面,支持WiFi连接、时间显示、系统设置等功能。主要特性包括: - **硬件支持**:ST7789 240x240 LCD(硬件SPI) - **图形界面**:LVGL图形库 - **输入控制**:EC11编码器(旋转+按键) - **网络功能**:WiFi连接管理、NTP时间同步 - **系统设置**:亮度、对比度、语言、时区设置 ## 🛠️ 硬件连接 ### LCD引脚 (硬件SPI) ``` LCD_RS (DC) → GPIO10 LCD_SCK → GPIO6 LCD_SDA (MOSI) → GPIO7 ``` ### EC11编码器引脚 ``` EC11_A → GPIO4 EC11_B → GPIO5 EC11_K (按键) → GPIO21 设置按键 → GPIO9 ``` ## 🎯 功能模块 ### 1. 主界面 (UI_SCREEN_MAIN) - 显示当前时间和日期 - 显示温度和湿度(模拟数据) - WiFi连接状态显示 - 底部提示:"Press SET to config" ### 2. 设置界面 (UI_SCREEN_SETTINGS) - 亮度调整 (0-100) - 对比度调整 (0-100) - 语言选择 (English/Chinese) - WiFi配置入口 - 导航:编码器滚动选择,按键进入调整模式 ### 3. WiFi列表界面 (UI_SCREEN_WIFI_LIST) - 扫描并显示可用WiFi网络 - 显示信号强度和安全状态 - 支持滚动浏览(8个项目/页) - 确认连接或返回密码输入 ### 4. 密码输入界面 (UI_SCREEN_PASSWORD_INPUT) - 弹出式密码键盘 - 支持大小写切换 - 字符输入和删除 - OK按钮确认连接 ## 🔧 核心功能 ### WiFi管理 - 自动WiFi扫描和连接 - HTTP配置服务器(192.168.x.x/) - NTP时间同步(可配置间隔和时区) - 连接状态监控和错误处理 ### 编码器控制 - 旋转控制界面导航 - 按键确认操作 - 设置按键快速进入设置模式 - 消抖处理和事件管理 ### 时间管理 - 实时时间显示 - 自动NTP同步 - 时区支持 - 500ms刷新率确保秒数显示流畅 ## 📁 代码结构 ``` main/ ├── main.c # 主程序入口,硬件初始化 ├── encoder.c/h # EC11编码器驱动 ├── wifi_manager.c/h # WiFi管理模块 ├── ui_manager.c/h # UI界面管理 ├── lvgl_example.c # LVGL示例(可选) └── CMakeLists.txt # 构建配置 ``` ## 🚀 构建和烧录 ### 构建项目 ```bash idf.py build ``` ### 烧录固件 ```bash idf.py flash ``` ### 监控串口 ```bash idf.py monitor ``` ## 📱 使用说明 ### 基本操作 1. **开机**:进入主界面,显示时间、温度、WiFi状态 2. **进入设置**:旋转编码器或按设置键进入设置界面 3. **WiFi连接**:在设置界面选择WiFi,扫描网络,输入密码 4. **时间同步**:连接WiFi后自动同步网络时间 ### 编码器控制 - **旋转**:滚动菜单选项 - **短按**:确认选择或进入下一级 - **长按**:返回上级或退出设置 ### 设置项说明 - **亮度/对比度**:0-100的百分比调整 - **语言**:English / Chinese - **WiFi**:进入WiFi配置流程 ## 📊 配置选项 ### WiFi配置服务器 启动后访问 `http://192.168.x.x/` 进行高级设置: - 工作时长/短休/长休设置 - 亮度/对比度调整 - NTP同步间隔和时区 ### 系统参数 - NTP同步间隔:默认10分钟(0表示禁用) - 时区设置:-12到+14小时 - 屏幕分辨率:240x240 - 刷新率:2ms LVGL tick ## 🔐 安全特性 - WiFi密码输入支持大小写切换 - 连接失败状态检测和提示 - HTTP配置服务器安全访问 - 内存管理优化 ## 🛠️ 技术特点 ### 性能优化 - 硬件SPI驱动ST7789 - DMA传输优化 - LVGL任务优先级管理 - 任务间同步锁机制 ### 内存管理 - DMA内存分配 - 双缓冲机制 - 任务栈大小优化 - 静态分配策略 ### 错误处理 - WiFi连接状态监控 - NTP同步重试机制 - 按键消抖处理 - 内存分配检查 ## 🔄 扩展性 ### 模块化设计 - 独立WiFi管理模块 - 独立UI管理模块 - 独立编码器驱动模块 - 易于添加新功能 ### 可配置性 - 支持多种屏幕分辨率 - 可扩展输入设备 - 可添加更多设置项 - 可集成更多网络功能 ## 📚 参考文档 - [LVGL 文档](https://docs.lvgl.io/) - [ESP-IDF 文档](https://docs.espressif.com/projects/esp-idf/) - [ST7789 规格书](https://www.buydisplay.com/download/ic/ST7789.pdf) - [EC11编码器规格书](https://www.buydisplay.com/download/ic/ST7789.pdf) ## 📝 更新日志 ### v1.0.0 (2026-02-20) - 初始版本发布 - 完成核心功能实现 - 集成WiFi管理 - 实现编码器控制 - 建立UI框架 --- **注意**:本项目为演示项目,实际使用时请根据具体硬件连接和需求调整配置参数。