最开始,我只是想复刻 Hacker News 上的 ESP32-AI 项目,原型很快就跑了起来

后来我搬到客厅和大屋,小屋空了下来。把小屋的床立起来,在下面垫几块哑铃片,正好可以当作柜子使用;空间变大以后,又把哑铃和杠铃搬了进去,变成了一个很适合训练的健身房。既然为这部分空间付了房租,我希望它真的被使用起来,于是我想把原来的 ESP32-S3 再改造成一个房间存在计时器可供查看。

gym


让 Codex 写的无聊技术细节,总之就是做成了 :)

硬件很简单:一个 0.96 英寸、128×64 的 SSD1306 I²C OLED,以及一个 HLK-LD2410C 24 GHz 人体存在传感器。传感器的数字 OUT 作为第一版的主要输入,OLED 显示当前状态和累计时间;UART 则保留给传感器调试和校准使用。

软件上,设备不是看到一次高电平就立刻开始计时,而是用一个非阻塞状态机处理抖动:连续检测到人在场约 5 秒才开始一次会话,连续离开 90 秒才结束会话。短暂离开只会暂停累计,不会把同一次训练拆成很多段。当前会话、上次完整会话、当天和本周的在场时间,都按真实的在场时长累计,而不是简单计算两个时间点之间的墙上时钟时间。

计数器保存在 ESP32 的 NVS 中,避免重启后丢失;日期和周次使用上海时区的 NTP 时间校准,离线时仍然可以依靠 millis() 继续计时。设备每隔一段时间通过带认证的 HTTPS API 上传一个状态快照,网页只读取公开状态接口,因此浏览器不需要直接连接 ESP32。网页端再把状态翻译成“有人”“无人”,并显示当前会话、上次会话、今天和本周的累计时间。

硬件连接也尽量保持直观:OLED 使用 GPIO18/17 作为 SDA/SCL,LD2410C 的数字 OUT 使用 GPIO4;传感器由 5V/VBUS 供电,所有设备必须共地。服务器只保存最新快照和在线状态,不保存音频、图像或其他房间内容。

timer


感谢奥圣,把ChatGPT 5.6 Luna 的 cost 降了 80%

我从几乎不了解这个芯片开始,边查资料、边用万用表排查供电和接线,最后把两个完全不同的想法——一个能在芯片上运行的语言模型和一个联网的房间计时器——都做成了能工作的项目。整个过程大约只用了 ChatGPT Plus Codex 周额度的 6%—8%。

我自己的 mental model 是 Luna Max 大约工作一小时花费周额度的 1%(这么算的话相当于一天可以用它工作十四个小时),意味着你可以用这个接近 GLM-5.2 的模型 一个人工作一个月只花 20 刀(Plus 订阅),又意味着你可以以一个可忽略的价格永远和 AI pair programming(直到永远)。

这个降价是永久的,因为还有梁圣在兜底,我无法描述这是什么感受,token 比电费还便宜,就像大跃进走进了现代


实时页面