ESP32-C3 | ST7789 IPS | LVGL 9 | 天启天气 | 开源
在线文档https://my.feishu.cn/docx/LUPwdEHYAo4cWLxTk6IckecjnId?from=from_copylink
一款基于 ESP32-C3 + 2.8 寸 ST7789 IPS 彩色屏幕 的自制桌面天气时钟,支持实时天气、时间日期、农历日历、节假日、室内温湿度、闹钟与重要日子、久坐/喝水提醒等功能,适合放在办公桌或床头使用。



复古小电视造型外壳,多角度实拍:




本开源项目提供一个功能完整、可量产的桌面天气时钟软硬件方案:绿色 PCB 采用 Type-C 供电 + 内置 USB 串口,板载 WiFi 模块、按键、蜂鸣器、温湿度传感器与状态灯,固件基于 Arduino + LVGL 9 + FreeRTOS 开发,配网后即可显示实时天气与时间。
| 项目 | 规格 |
|---|---|
| 主控芯片 | ESP32-C3-WROOM-02(N4 / N8 两版,单核 RISC-V 160MHz,WiFi 2.4G + BLE 5.0) |
| Flash | 4MB(N4) / 8MB(N8) |
| 屏幕 | 2.8 寸 ST7789 IPS,320×240 横屏,SPI 四线接口,TFT_eSPI 驱动 |
| 供电 | Type-C(5V),板载 3.3V 稳压,支持 USB 数据 / 烧录 |
| 驱动框架 | LVGL 9.x + FreeRTOS 多任务 |
| 功能 | 引脚 | 说明 |
|---|---|---|
| TFT SCLK / MOSI / DC / CS / RST | IO2 / IO3 / IO6 / IO7 / IO8 | SPI 屏幕 |
| TFT 背光 | IO10 | LEDC PWM 调光(5kHz / 8bit / 255=最亮) |
| 按键 KEY1 / KEY2 | IO9 / IO0 | KEY2 为 strap 脚,自带 45Ω 上拉,勿加外部上拉 |
| DHT11 温湿度 | IO1 | 单总线,4.7K 上拉 |
| 蜂鸣器 | IO5 | 有源蜂鸣器(音调/音量由硬件决定) |
| 蓝色状态灯 | IO4 | 联网 / 天气获取状态指示 |
| USB D- / D+ | IO18 / IO19 | 内置 USB-Serial/JTAG,Type-C 数据 |
| 串口 TX / RX | IO21 / IO20 | 调试串口 115200 |
Arduino IDE + esp32 core 2.0.17-cn(勿用 3.x,会导致 TFT_eSPI 崩溃)
LVGL 9.5.0 UI 框架 + TFT_eSPI 2.5.43 屏幕驱动
ArduinoJson 7.4.3 天气 JSON 解析
自定义 12px 中文字体(阿里巴巴普惠体 Regular,约 758 字通用字集,含全国城市名 + 天气词 + UI 词,4bpp 压缩仅约 354KB)
自绘 9 个天气图标 + 屏保背景图
| 页面 | 内容 |
|---|---|
| 开机加载页 | 纯色背景 + 品牌标题 + 进度条 + 百分比 + 加载状态 |
| 配网页(AP) | WiFi 扫描下拉刷新、二维码(192.168.4.1)、5 步配网提示;可填城市(留空按 IP 定位)、可填天气 API 的 APPID / APPSecret |
| 主页 | 顶部滚动信息条(风向/风力/风速/提示/倒计时);今日天气(图标、当前温度、湿度、气压、最高/最低温);大号时间、日期星期、空气质量(AQI 分级变色)、室内温湿度、城市 |
| 未来三天 | 免费 7 日接口,横排展示未来三天:星期、天气图标、天气、温度 |
| 日历 | 月历 + 农历 + 节假日(如国庆、中秋、教师节),星期变色,上下翻月 |
| 闹钟与重要日子 | 3 组闹钟 + 3 组重要日子(放假/生日/纪念日/节日),弹窗编辑,独立开关 |
| 系统信息 | WiFi 信息(IP/信号)、版本信息、内存/天气刷新/久坐时长、按键使用说明 |
| 系统设置 | WiFi 重配、屏保显示、休眠时间、久坐提醒(时长)、喝水提醒(间隔)、蜂鸣器、屏幕亮度、刷新天气、提醒生效时段、暗色模式、提醒响铃方式 |
| 屏保 | 大时间、日期星期 + 农历、天气温度、节假日、室内温湿度、重要日子倒计时 |
其他特性
未配网直接进入配网页;已配网才显示加载进度条并启动全部提醒功能。
未配网 / 未联网 / 时间未校准时,久坐、喝水、闹钟、日子提醒均不启动。
提醒弹窗 30 秒自动关闭,任意键退出;久坐 / 喝水提醒仅在设置的生效时段内触发(支持跨天)。
暗色模式(护眼模式):可设 关 / 自动(20:00–07:00)/ 手动开,到点自动切换配色。
背光 PWM 亮度可调;蓝色状态灯指示联网 / 天气获取状态(获取天气成功时长鸣一声并常亮)。
所有设置保存到 NVS,断电不丢。
界面实拍





| 更新项 | 第一版 | V1.1.2 本次更新 |
|---|---|---|
| 闹钟 / 重要日子 | 设置页内置少量固定配置 | 重构为独立页面:3 组闹钟 + 3 组重要日子,独立开关、弹窗编辑(时/分/月/日/名称),支持节假日名称 |
| 倒计时 | 无 | 新增:主页滚动信息、屏保显示距离最近启用日子的倒计时(如「距放假还有 3 天」) |
| 暗色模式 | 无 | 新增:关 / 自动(20:00–07:00)/ 手动开,到点自动切换护眼配色 |
| 室内温湿度 | 读取不稳定 | 修复 DHT11 读取逻辑,主页与屏保均显示室内温度 / 湿度 |
| 未来三天天气 | 无 | 新增:免费 7 日接口,横排展示未来三天天气 |
| 提醒响铃 | 仅固定短鸣 | 系统设置可选择短鸣两声 或 短鸣 30 秒(久坐/喝水/闹钟/日子通用) |
| 4N 老用户 | Flash 容量不足难升级 | 重新编译 4MB 固件(huge_app 分区),4N 老用户可无缝升级 |
| 配网页 | 固定城市、无密钥配置 | 支持 WiFi 扫描下拉刷新、城市可留空按 IP 定位、可填客户自己的 APPID / APPSecret |
本项目提供 4N / 8N 两个整片固件包(已含 bootloader + 分区表 + App,从 0x0 一次性写入即可),并配套烧录工具包与图文教程。烧录方式:
方式一(推荐新手):乐鑫 Flash Download Tools,芯片选 ESP32-C3,按板子选 4MB / 8MB,固件地址填 0x0,点 START。
方式二(命令行):esptool.py -p COM3 -b 460800 write_flash 0x0 WeatherClock_4MB_factory.bin
方式三(开发者):Arduino IDE 源码编译(esp32 core 2.0.17-cn,8N 用 Default 8MB,4N 用 Huge APP)。
⚠️ 升级固件会清空已保存设置,升级后需重新配网;旧闹钟/日子设置会迁移为默认值,请重新设置。
使用 **天启天气(易客云)**免费接口(实况 + 7 日预报),支持按 IP 自动定位城市。固件内置演示密钥,开箱即用;产品对外出售时,请在配网页填写客户自己的 APPID / APPSecret,避免共用演示密钥耗尽请求次数。
申请方式:注册 tianqiapi.com → 用户中心获取 APPID / APPSecret → 配网页填写保存。
作者:彭浩 | 微信:xhgzs97 | 邮箱:2443257717@qq.com
本项目在立创开源硬件平台开源,欢迎点赞收藏、评论区交流。