本周我在 GitHub Universe(感谢微软提供的免费门票)。昨天我拿到了会议徽章……它集成了完整的树莓派 Raspberry Pi Pico 微控制器,带有电池、彩色屏幕、WiFi 和蓝牙。
GitHub Universe 有可破解会议徽章的传统——去年的徽章有电子墨水屏。今年的则是一个巨大的升级——彩色屏幕和 WiFi 连接让这个小东西成为一个真正有用的小型计算机!
唯一缺少的是键盘——设备总共提供了五个按钮——上、下、A、B、C。也许可以让蓝牙键盘工作,但我得亲眼看到才会相信——这个设备上没有太多空间容纳键盘驱动。
一切都用 MicroPython 编写,设备设计为可破解:用 USB-C 线缆连接到笔记本电脑,你就可以直接在设备上修改代码。
开始设置徽章
开箱即用,徽章会播放一个开场动画(实现为一系列 PNG 图像帧),然后显示一个带有六个应用图标的主屏幕。
默认应用大多是很酷的 Octocat 主题演示:一个 flappy-bird 克隆、一个电子宠物风格的宠物、一个像蚀刻素描一样工作的绘图应用、一个针对会议场地本身的红外寻宝游戏(这东西也有红外传感器!),以及一个显示一些图像的画廊应用。
第六个应用是徽章应用。它会显示你的 GitHub 个人资料图片和一些基本统计信息,但只有当你找出一根 USB-C 线缆并直接对徽章上的文件进行一些编辑时才会工作。
我在 Mac 上做了这个。我将 USB-C 线缆插入徽章,这导致 MacOS 将其视为附加的驱动器卷。该驱动器中包含几个文件,包括 secrets.py。打开它,确认 WiFi 详细信息正确并添加你的 GitHub 用户名。该文件应该看起来像这样:
WIFI_SSID = "..."
WIFI_PASSWORD = "..."
GITHUB_USERNAME = "simonw"
徽章预置了 GitHub Universe WiFi 网络的 SSID 和密码。
就是这样!卸载磁盘,按下徽章背面的重启按钮,当它再次启动时,徽章应用应该看起来像这样:
构建你自己的应用
这里是为徽章构建软件的官方文档。
昨天我拿到我的徽章时,官方仓库还没有更新,所以我不得不自己弄清楚。
我将所有代码复制到我的笔记本电脑上,将其添加到 Git 仓库,然后启动 Claude Code 并告诉它:
Investigate this code and add a detailed README
这里是结果,这对于开始理解一切如何工作非常有用。
六个默认应用中的每一个都位于一个 apps/ 文件夹中,例如绘图应用的 apps/sketch/。
还有一个菜单应用为主屏幕提供支持。它位于 apps/menu/。你可以在这里编辑代码,将你创建的新应用添加到该屏幕。
我告诉 Claude:
Add a new app to it available from the menu which shows network status and other useful debug info about the machine it is running on
这有点冒险,但它完全成功了!
第一个版本有一个错误:
我用(Apple Photos 应用)对那张照片进行了 OCR,并将消息粘贴到 Claude Code 中,它修复了问题。
这几乎成功了……但是向 2x3 网格添加第七个图标意味着你可以选择图标,但它没有滚动到视图中。我让 Claude 也为我修复了这个问题。
这里是 apps/debug/__init__.py 的代码,以及使用我的终端转 HTML 应用(在此描述)创建的完整的 Claude Code 记录。
这里是调试应用的四个屏幕:
一个图标编辑器
应用上使用的图标是 24x24 像素。我决定做一个帮助构建这些图标的 Web 应用会很简洁,包括能够从表情符号创建图标作为开始。
我使用 Claude Artifacts 构建了这个。这里是结果,现在可在 tools.simonwillison.net/icon-editor 获取:
还有一个 REPL
我注意到去年的徽章配置应用(我在 github.com/badger/badger.github.io 中再也找不到了,我想他们重置了那个仓库的历史?)通过 Chrome 的 Web Serial API 与 MicroPython 通信来工作。这里是我存档的该代码副本。
在 Web UI 中有一个 REPL,你可以通过 USB 直接与徽章交互,这不是很有用吗?
我将 Claude Code 指向该仓库的一个副本并告诉它:
Based on this build a new HTML with inline JavaScript page that uses WebUSB to simply test that the connection to the badge works and then list files on that device using the same mechanism
这需要一些摸索(这里是记录),但结果现在已在 tools.simonwillison.net/badge-repl 上线。它只在 Chrome 中工作——你需要用 USB-C 线缆插入徽章,然后点击“Connect to Badge”。
开始破解
如果你是 GitHub Universe 的参会者,我希望这对你有用。官方 badger.github.io 网站有更多细节可以帮助你入门。
目前还没有办法在 GitHub Universe 之外获得这个硬件——我知道他们仅仅为会议参会者提供足够的徽章就面临了一些供应链挑战!
这是一个非常简洁的设备,由英国谢菲尔德的 Pimoroni 为 GitHub 制造。未来应该会以“Pimoroni Tufty 2350”的名称普遍提供这个的版本。
更新:仅用 iPhone 设置
如果你没有带笔记本电脑,仍然可以仅使用 USB-C 线缆开始破解设备。
将徽章插入手机,按两次背面的重置按钮将其切换到磁盘模式,然后打开 iPhone 文件应用——徽章应该显示为一个名为 BADGER 的已挂载磁盘。
我使用 Textastic 编辑那个 secrets.py 并配置一个新的徽章,然后再次按重置以重新启动它。
