🕒 毛豆时钟:桌面的天气时钟 + AI Agent 实时监控器

星期六, 5月 23, 2026 | 2分钟阅读 | 更新于 星期六, 5月 23, 2026

@
🕒 毛豆时钟:桌面的天气时钟 + AI Agent 实时监控器

最近把毛豆时钟升级成了双模式:保留经典的太空人天气时钟,新增了 AI Agent 实时物理监控看板。物理按键一键切换,WebSocket 毫秒级推送,ELF 级局部重绘零闪屏。下面完整分享一下。

🖼️ 最终的样子

毛豆时钟——天气时钟模式 毛豆时钟——Agent监控模式 ESP32-C3 开发板

默认外壳就是裸板美学——开发板和屏幕背靠背贴好,小支架一靠就很稳。当然,透明亚克力或积木也能搭出个性底座。


🌟 核心特性

1. 双模式秒级无缝切换

通过物理按键(GPIO 9)触发模式切换。状态机管理前后台,切换过程无黑屏、无闪烁。

模式一:经典太空人天气时钟 🌤️

  • 零代码智能配网(WiFiManager),手机连上热点即可配置
  • 抗锯齿中文字体,NTP 网络对时
  • 心知天气 API 获取气温、体感、AQI,污染变色提醒
  • 右下角经典太空人两帧走动动画

模式二:AI Agent 实时物理监控 🤖

  • ESP32 与电脑端 Agent 建立 WebSocket 异步长连接,消息毫秒级推送
  • 弹性流式排版,超长文本自动折行,内容变短时自动吸附贴合
  • 超出屏幕时逐行平滑滚动(每 1.5 秒一行,句首句尾停顿 3 秒)
  • 完美支持 Hermes Agent、OpenClaw(小龙虾)等主流自主智能体

2. 零闪屏局部重绘(Zero Flicker)

应用游戏级 ELF 局部绘制技术——只有像素行内容发生真实变化时才局部擦除重绘,杜绝传统 TFT 刷屏的剧烈闪烁和高频撕裂。


📦 硬件清单

模块 规格 备注
主控 ESP32-C3 推荐 WeAct Studio / SuperMini
屏幕 1.8 寸 RGB TFT 驱动 IC: ST7735S, 128×160
按键 轻触按键 可用开发板板载 BOOT 键(GPIO 9)

接线表

屏幕引脚 ESP32-C3 引脚 功能
VCC 3.3V 电源正极
GND GND 共地
SCL (SCK) GPIO 4 SPI 时钟
SDA (MOSI) GPIO 6 SPI 数据
RES (RST) GPIO 3 复位
DC (A0) GPIO 2 命令/数据选择
CS GPIO 7 片选
BLK 3.3V / GPIO 5 背光(可指定引脚控制亮度)
物理按键 GPIO 9 模式切换(一端接 GPIO 9,一端接 GND)

🔧 软件环境配置(PlatformIO)

推荐 VS Code + PlatformIO 开发环境。

依赖库(platformio.ini)

lib_deps =
    Adafruit GFX Library
    Adafruit ST7735 and ST7789 Library
    U8g2_for_Adafruit_GFX
    ArduinoJson
    WiFiManager
    links2004/WebSockets @ ^2.4.1

大程序分区

中文字库体积较大,需启用 huge_app 分区:

board_build.partitions = huge_app.csv

编译烧录

  1. git clone 项目并用 PlatformIO 打开
  2. 修改 src/main.cpp 中的配置:
// 天气配置
const String apiKey = "你的心知天气私钥";
const String location = "shenzhen";  // 城市拼音

// Agent WebSocket 配置
String agentIP = "172.20.10.4";   // 电脑局域网 IP(不能写 127.0.0.1)
int agentPort = 9119;
String wsPath = "/api/agent/status";
  1. 编译烧录

💻 PC 端伴侣脚本

电脑端运行 agent_companion.py——实时监控 Agent 会话文件,过滤 Markdown 符号,通过 WebSocket 推送清洗后的纯净数据到时钟:

pip install websockets asyncio
python agent_companion.py

脚本自动在 ws://0.0.0.0:9119 开启局域网端口,自动定位最新 Agent 会话文件。


🎨 界面运行状态

天气时钟模式:精准阿里云对时,红色秒针平滑运动,太空人每 500ms 交互走动。

Agent 监控模式

  • 状态行:已连接(绿色)/ 已离线(红色)
  • 任务与回复行:内容自适应布局,短内容自动贴合,超出屏幕平滑滚动
  • Tokens & 进度条:淡黄色 Tokens 左下角,橙色进度条指示器

💡 代码亮点

  • 天气图标自动匹配:判断天气文本关键字,显示对应的像素图标
  • 太空人动画:布尔变量每帧翻转,两帧位图切换,仅需几行代码
  • WebSocket 异步事件驱动:不占用 CPU 轮询资源
  • 弹性流式排版(Vertical Flow Layout):智能计算中英文混排真实宽度

📁 项目地址

完整源码开源在 GitHub:

🪐 GitHub: https://github.com/guitarliu/Maodou-Clock

如果这个毛豆让你觉得有趣,给它一颗 ⭐️ Star 就是最好的鼓励 🫶。

© 2026 MauDou 工坊

完整代码/模型文件请联系作者获取

关于 MauDou

🐈 MauDou 工坊主理人 —— guitarliu

一个用代码和焊锡创造东西的独立开发者,也是一个吉他爱好者。


👤 个人标签

  • 身份:独立开发者 / 工程师
  • 兴趣:编程、嵌入式硬件、工程计算工具、吉他
  • 人生小目标:做出更多真正好用的工具,有一天能组建自己的乐队

📖 关于我

欢迎来到 MauDou 工坊 🐈

我喜欢把工作和生活中的实际问题,用代码或硬件的方式解决掉。这里记录了我开发的各种实用工具、嵌入式小项目,以及一些折腾过程。

我不是专业的全职开源作者,但对把想法落地这件事充满热情。无论是工程计算软件、办公自动化工具,还是带屏幕的桌面小硬件,我都喜欢动手去做。


💻 技术方向

  • 主力语言:Python、C#
  • 其他语言:JavaScript / TypeScript、C++
  • 主要领域:污水处理工艺计算工具、BIM / Revit 二次开发、Office 文档自动化处理、ESP32 嵌入式开发、各种实用效率工具

🚀 代表项目

  • DwaCalctor —— 污水处理工艺计算工具(基于德国 DWA 标准)
  • Maodou Clock(毛豆时钟) —— 颜值较高的 ESP32 桌面天气时钟
  • LazyBot —— Revit 效率插件系列
  • PDF 批量处理工具 —— PDF 旋转、合并等小工具
  • HydroCalcter —— 污水处理相关计算平台

📬 联系方式


项目说明

  • 开源部分 — 博客里的原理图、思路、代码片段免费分享
  • 付费获取 — 完整源码、3D 打印模型文件、详细接线图可联系作者获取(邮箱:xiaotaiye@gmail.com)
  • 定制服务 — 接受定制开发,按需求报价

☕ 支持我

如果你觉得我的项目有帮助,可以请我喝杯咖啡 🐈

微信收款码

备注项目名称,看到后第一时间回复