跳到正文
目录

起因

上一篇结尾我写过一句:抽屉里有吃灰硬件的,掏出来吧,找个 AI 陪着。说这话的时候,我自己抽屉里就躺着好几个——这回,轮到一块墨水屏。

Waveshare 的 2.13 寸墨水屏云模块。买回来大概也就跑过一下出厂 demo,然后吃灰至今。

跟上次那台树莓派墨水屏比,屏幕是同一种:2.13 寸、250×122、黑白。不一样的是背后——上次是一整台树莓派跑 Linux,这次屏、电池、充电全焊在一块板上,大脑是一颗 ESP32 单片机。

上次我用 Python 写脚本、PIL 拼图、推给屏幕。这次想换个口味,玩 ESPHome——另一套思路:不写代码,写一份 YAML 描述这块板要干嘛,再让 ESPHome 编译成固件烧进去。Pi 那套是 Linux 上常驻一个渲染程序、把图片推给屏;这次屏背后就一颗单片机,画面是它自己画的。

怎么弄起来的

目标很朴素:屏上显示天气和时间,数据从我那台跑 Home Assistant 的小服务器来。

第一夜是 5 月 18 号凌晨,我照着 Claude 说的一步步弄:装 ESPHome(ESPHome 本身也是个 Docker 容器,跑在我服务器上)、跑第一次编译、USB 首刷。凌晨 01:42 编译成功,光编译本身就花了 349 秒。屏幕亮起来的第一下是一串乱码,但确实亮了。接上 Home Assistant 之后,天气、温度、湿度都上来了。

然后卡住了,卡在哪后面说。那一夜弄到三点多,屏上能显示个大概、但还没法看,我去睡了。

中间隔了四天。上班、睡觉、过日子,板子插着电搁桌上。

第二夜是 5 月 22 号凌晨,这回连点都不用我点了——我把服务器的 SSH 开给 Claude,让它自己进去接着弄。它加了天气图标,加了深度睡眠:醒来刷一次屏、睡 30 分钟,这样一块锂电池能撑几个月。零点多到两点,完工。成品就是开头那张:一个云图标、21°C、阴,底下一行日期、湿度、电压。

中间的坑

坑不少。随手列一下:

  • 拉 ESPHome 的 docker 镜像慢得离谱,换国内镜像
  • 编译要从 github 下东西,我这网络连不上 github,得走代理
  • 屏上有几个中文字显示成空心方块
  • 固件刷上去,屏幕一刷新就把自己重启了,还自动回滚到旧版本
  • 一个 176MB 的编译工具链,下载时被代理弄坏,反复重下
  • 有一次编译怎么都不动,结果后台堆了七个编译进程在抢同一个目录

列出来挺唬人。但我体感一点都不难受——因为这些坑,几乎没有一个是我去解决的。

是 Claude 在那台服务器上敲 docker、翻容器日志、抓设备日志,一层层往下扒。那个最缠人的「改什么都不生效」,它最后扒出来是:墨水屏刷新那一瞬间电流尖峰把芯片拉到欠压、触发复位,固件没启动成功就自动回滚回了旧版本。这条因果链我自己大概率查不出来,也没那个耐心。

我干的事就是:说我想要什么,看屏幕,偶尔拍一句板。整个过程我就拍过一次有点含量的板——它想把欠压保护直接关掉绕过去,我说了句「不是应该避免同时启动吗」,它就改成把开机时几件耗电的事在时间上错开。也就这一句。

体感

跟 Pi 那次比,这次我更靠后了。上次我好歹还盯着屏幕一句句说「这里转 180 度」「电量挪到顶上」;这次连脏活的现场都没怎么看,它在我服务器上敲命令,我在这头看结果。

难的部分我没碰,坑都是它趟的。这事对我来说,就是两个深夜躺着动动嘴。

可动完嘴,桌上真就多了块会自己显示天气的小屏。一块在抽屉里躺了不知道多久、本来这辈子大概就那样了的板子,现在插着电、每半小时醒一次、把今天几度报给我。好耶。

值不值不好说——一个桌面天气钟我也不是真需要,纯为玩而玩。但吃灰的东西被盘活,这件事本身就够高兴的了。上一篇我说「掏出来吧」,现在抽屉里还剩几个,会一个个轮到。

最后说一句:这篇博客也是 Claude 写的。我做了几轮采访——它问我为什么想玩、想写多深、基调要什么——过了大纲,定了标题。它落笔,我挑事实不对的地方。

写博客也是 AI 应用嘛。上一篇这么说过,这次更名副其实:从折腾到记录,我基本全程在旁边看着——看着看着,又一个吃灰的活过来了。