"我要的闹钟,市面上买不到。"
Ars Technica 高级编辑 Lee Hutchinson 最近被床头闹钟惹毛了。每次断电或夏令时切换,他都要站在柜子旁按住 TIME 键狂敲 HOUR。他的需求听起来很简单:自动对时,夏令时自动调整,红色七段数码管——不要蓝的、绿的、黄的,更不要白的。不要任何流氓 App。
搜遍了浏览器标签页,找不到。于是他想:我有 3D 打印机,我也算聪明吧,不如自己做一个。

软件部分,他用了树莓派 Zero W / Zero 2 W,跑 Debian,通过 NTP 自动同步时间。显示用的是 Adafruit 的 1.2 英寸七段数码管模组,HT16K33 控制器通过 I2C 驱动。到此为止,都还在他作为运维("我负责 ops,dev 是别人的活")的能力范围内。
然后问题来了:他得写代码让 Pi 跟显示屏说话。
"I2C 通信的示例代码一看,我那早已萎缩的 Python 肌肉就开始拉伤了。"他写道,"到这个节点,这个项目从好玩变成了不可能完成的难。"
于是他干了件大家都能猜到的事——把所有代码活都丢给了 LLM。
Claude Code 先用的是 Opus 4.8,后来换到新发布的 Fable。结果是"一组整洁的 Python 文件和一个像模像样的测试套件"。LLM 顺带搞定了 HomeKit 集成(通过 HAP-python)、systemd 服务、安装脚本、Gitea Actions 部署流水线,以及大部分仓库文档。

没错,这个床头闹钟有 CI/CD。"我推个 tag 到本地 Gitea 仓库,runner 构建出发布包,通过一个专用部署账号推到 Pi 上。"他在文章里附上了截图——systemd journal 里实时显示 iOS Home App 拉动亮度滑块的日志,七段管的 16 级亮度自动映射到 0-100% 的滑块刻度,响应即时。

外壳是 3D 打印的,基于 Printables 上一个 CC 许可的设计修改。但改模型意味着跟 Autodesk Fusion 打一架——参数化建模对于运维来说比编程还难。不过 Fusion 最近出了 MCP server,于是他让 LLM 通过 MCP 远程操控 Fusion。先在本地跑了个量化的 Qwen 3.6-35B(跑在 NVIDIA GB10 驱动的 Acer Veriton GN100 上),搞定了部分修改,剩下的还是让 Claude Code 收了尾。

还有一个物理问题:Adafruit 显示屏调到最低亮度在黑暗卧室里还是刺眼。解决方案是在显示面板前加一层中性密度滤镜(NDF)+ 烟色亚克力。12% 透光率的 NDF 配上一块亚克力,把亮度压到了和普通床头钟一样的水平。

整个项目最贵的不是零件——是一堆试错成本:买错的配件、重复的耗材、第一次学焊接的工具。"如果用的是 ESP32 而不是树莓派,其实更合理,"他在文末写道,"ESP32 自带 Wi-Fi 和 I2C,不用拖着 Debian 跑。但反正,这个项目让我学会了焊接,用掉了几公里长的耗材,而且我现在有一个精确符合我需求的闹钟。"
他对 LLM 的态度也很坦率:"我知道这个坦白可能会让很多读者反感,但没有 LLM,这个项目我做不完。我会在 StackOverflow 上被'你为什么要这么做'的回复淹没,然后放弃。"

仓库开源在 GitHub:github.com/code-a-saurus/PiClock,包含 BOM 清单、Python 代码、3D 打印文件和部署模板。有人受启发在做了——一个读者翻出零件盒里落灰的黄色数码管和 ESP32-S3 板子,当晚就打印了自己的迷你版外壳。
一场硬件折腾的终点,是一个人终于不用再在半夜爬起来按 HOUR 键了。
参考来源: