用 27 美元的智能手表玩转 Claude
Hacking with Claude on a $27 smart watch

原始链接: https://www.mikekasberg.com/blog/2026/08/19/hacking-with-claude-on-a-27-smart-watch.html

受近期人工智能与硬件破解实验的启发,作者成功重启了其闲置多年的 PineTime(一款 27 美元的开源智能手表),并为其开发了自定义表盘。通过利用 DeepSeek 和 Kimi 等开源权重模型,作者克服了以往对固件开发的畏难情绪,让这块手表告别了“吃灰”的状态。 作者利用 InfiniSim 模拟器建立快速反馈循环,引导 AI 复刻了复古卡西欧的风格。尽管 AI 在最初布局时不够精准,但通过迭代提示词和使用全屏背景图这一巧妙的变通方法,作者在几小时内就完成了功能原型的制作。 该项目凸显了 AI 作为硬件项目副驾驶的潜力,将复杂的固件任务转化为可控且富有成就感的开发过程。尽管受限于硬件内存,作者仍成功部署了自定义表盘,并将代码及一份实用的“AGENTS.md”指南发布到了 GitHub。这段经历证明,现代 AI 工具能让嵌入式系统开发这类小众技术爱好变得触手可及、高效且有趣。

近期关于“用 27 美元的智能手表折腾 Claude”的 Hacker News 讨论凸显了一个增长趋势:开发者们正利用人工智能让过时的硬件焕发新生,并创造出定制化的专用软件。 核心要点如下: * **AI 辅助开发**:参与者指出,Claude、DeepSeek 和 Kimi 等人工智能工具极大地降低了门槛,使用户无需深厚的专业知识,也能为十年前的 Pebble 手表、PineTime 以及各类低成本 OLED 可穿戴设备编写定制代码。 * **“黑客”精神**:社区探讨了“黑客”定义的演变,将其理解为创造性、非正统的折腾,而非仅仅是安全入侵。许多人发现,通过构建满足特定需求的“定制化”应用,可以避开商业平台的臃肿,这令人感到耳目一新。 * **硬件改造**:市场对于更开放、更具可玩性硬件平台的需求强烈。用户表达了对苹果等“利润至上”公司的不满,转而支持即将推出的 PineTime Pro、M5Stack 以及其他廉价且可定制的模块化项目。 * **AI 命名争议**:关于用户将所有 AI 编程代理统称为“Claude”的语言争论随之产生。这类似于以专有名词指代通用产品(如“施乐”),这引起了一些纯粹主义者的反感。
相关文章

原文

The Pine Time is a $27 smart watch that runs open source firmware. I’ve had one sitting in the back of a drawer for a year or two. When I saw @steveruizok’s Tweet about hacking on ESP32 devices with Claude, I found some inspiration to pull my PineTime out of the drawer and see what Claude might be capable of!

I knew I wanted to start by building a watch face because the default watch faces that come with the watch are pretty plain and boring. I’d also recently seen @levelsio’s Tweet about building a custom Casio watch face for is Apple Watch.

I wondered if I could build something similar for the PineTime (with a little help from Claude). As it turns out, the PineTime is a great watch for hacking with Claude!

  • It’s cheap ($27).
  • It runs open source firmware (InfiniTime, or any other RTOS you want).
  • It’s very well-documented. Claude thrives on this.
  • It has a great simulator (InfiniSim). That gives Claude a fast feedback loop on your computer.
  • The firmware is simple, so you kind of need to add what you want.

Although I’ve been saying “Claude”, I actually did most of the work in OpenCode with some of my favorite open weights models. Kimi K3 & K2.6, and DeepSeek v4 Pro & Flash. I started by cloning the InfiniSim repo (which has a git submodule for InfiniTime, and asked Claude to get a build working. It was quick and easy on Ubuntu! Then I got pretty ambitious: I gave Claude the photo from @levelsio’s Tweet, and asked Claude to replicate the watch face, copying the code from an existing InfiniTime watch face as a starting point. And I asked it to orchestrate and use sub-agents as needed for well-scoped development tasks.

It built a pretty good rough approximation, but it was very rough. It seemed to just guess at text sizing and positioning, which led to things being sort of in the right spot but overlapping each other and unreadable. Still, it was a good starting point that we could iterate on. I think Fable would have probably been able to finish the work and get it pixel-perfect without supervision, if I gave it a feedback loop to screenshot the simulator. But since I was doing this with open weight models on OpenCode, on a limited budget, I opted to save some tokens by getting a little more involved myself, and gave it specific feedback with isolated tasks and concrete next steps. I fixed one thing at a time – getting each text element right before moving on to the next one.

I noticed we were spending a lot of effort trying to build some static parts of the screen, and realized that might not be necessary. I wondered if I could just make a fullscreen background image with all the static parts, so we only had to program the dynamic parts of the screen. We tried this, and it worked on the simulator! After installing the firmware on a real watch, I found that we were pushing the limits of what this little watch was capable of. It took about 10 minutes to transfer the 240x240 image over bluetooth to install it on the device, and it takes 1-2 seconds to refresh the whole screen when you swipe. The watch can’t hold this whole image in memory at once; it has to stream it from the file system. But that’s totally fine for a watch face I built in a couple hours! I might come back at some point to build more of the background in code, so it can update instantly. But for today, I’m happy with my working prototype!

I pushed all my code up to GitHub, and you’re welcome to use it directly, or use it as a starting point for your own project if you want. I also had Claude summarize the things we learned along the way into an AGENTS.md. That should help you get started quickly, and avoid some of the hurdles that I ran into, if you want to try this with your own watch!

I loved working on this project with an AI! The low-stakes environment (not production code at my day job) makes me feel like I can try whatever I want and iterate quickly, and it’s really rewarding to work on firmware for a physical device that I can hold and use when I’m done building it! I couple years ago when I bought this PineTime, I ran out of time and motivation to learn how to work in the InfiniTime codebase, and the watch sat in a drawer for a couple years. But today, I was able to build a new watch face in a few hours, and had fun doing it! The future is bright!

联系我们 contact @ memedata.com