Nixie Indicator 篇一:AI 动手从想法变成现实硬件
从辉光管 Token 余额显示器的设想出发,分享让 AI 参与电路、PCB 与外壳设计,将想法落地成硬件的过程

好长时间没有折腾点新项目了。最近想起,多年以前玩《Metro 2033》的时候,里面那些带着冷战苏式钟表店风格的辉光显示设备,给我留下了很深的印象。玻璃管里亮起的数字有一种独特的质感,让我一直想做一个自己的辉光管装置。

最近,Codex 接连重置了使用额度,正好给了我一个动手的契机。2026 年 9 月 GPT 6 Astra 发布时,那段 AI 绘制 PCB 的演示也让我印象深刻,于是我想尝试用 AI 来做一个用辉光管显示 Token 剩余额度的桌面小装置,试试它能否把硬件想法推进到实物。用富余的额度,做一个显示剩余额度的设备,正好是“原汤化原食,让 AI 给自己来打工”。

不过,在开始之前,我先规定了一条本次项目的准则:

不手工修改设计文件,所有写入都通过向 Agent 描述要求来完成。

我则作为 HITL(Human-in-the-Loop,人类参与环节),负责明确需求、取舍方案、检查结果和实物验收,并根据反馈引导下一轮调整。

项目就叫作 Nixie Indicator。本篇记录电路、PCB、外壳与实物调试,固件、桌面客户端和演示短片留到后两篇展开。

方案选择

我和 Codex 的配合,采用了渐进式推进、面向规格文档的开发方式(Spec-driven Development)。先用草稿记录想法和候选方案,编写项目概览与 roadmap,明确目标、模块划分和推进顺序。随后分阶段讨论、细化,将确定的方案、接口和约束沉淀为正式设计文档,作为实现与验证的依据。文档随设计同步更新,逐步形成有组织的工程上下文。

为了让 AI 理解我的开发和项目管理习惯,我还把此前的定制键盘和 Techno Keyer 工程交给它参考。提供已有项目,是这次实践中重要的上下文控制手段,让它通过具体工程了解我的组织方式和设计习惯,减少反复解释的成本。

主要部件逐步确定下来:

  • 辉光管:两只 DGM01,负责两位数字显示。

  • MCU:ESP32-S3,此前已在多个项目中使用过,这次继续沿用,通过 Wi-Fi 获取数据。

  • LCD:补充指标名称、单位、状态和设置菜单,选型灵感来自此前从 惜枫醉 大佬那里买来的 CWO 联网电报桌搭项目。

  • USB-C:一个接口同时用于 5V 供电和程序烧录。

  • 旋转编码器:放在机身侧面,用于选择和确认。

辉光管选择了 DGM01。此前看过 Sadudu 大佬自己动手、在国内复活辉光管工艺的过程,十分佩服。这次做自己的项目,也就想用上他做的管子。

我把主体电路拆成上下两块板,主要有三个考虑:

  1. 高低压分区:高压电源和辉光管驱动集中在显示板,主控、USB 接口和低压供电放在控制板。

  2. 减少桌面占用:上下堆叠,缩小水平方向的面积。

  3. 模块化扩展:以后改用苏联 IN-18 等其他管子时,可以重新设计显示板,尽量复用控制板。

上层显示板安装两只辉光管,通过两组排针、排母与下层控制板传递低压电源和控制信号。LCD 使用独立的前面板,竖直安装在整机正面。

显示板、控制板与 LCD 前板的爆炸图
图 1. 板组爆炸图:上方为显示板,下方为控制板与 LCD 前板

电路设计

电源

在电源部分,最终保留了单 USB-C 5V 输入的方案。输入之后分成两路,一路经 AMS1117-3.3 为主控、显示逻辑和 LCD 提供低压电源,另一路经过受控开关,送到显示板上的成品高压模块。

高压部分采用橡果工坊的 XGGF-HV-tiny 成品模块,这也是 Sadudu 推荐的合作店家。我按模块标称约 170V 的输出设计后级电路,重点处理接口、启停和安装空间。启动与双管负载下的表现则留待实测。

高压模块的低压输入开关、模块使能和显示消隐分别控制,启动顺序为:

  1. 保持消隐,准备显示数据。

  2. 开启低压输入支路,再使能高压模块。

  3. 解除消隐,显示数字。

整机仍然共地,分板不构成电气隔离。高压部分设计了独立的泄放支路,并用外壳遮住管脚和焊点。显示熄灭后仍可能有残压,需要单独测量。

控制板 USB 与电源完整原理图
图 2. 控制板电源原理图:USB 输入、3.3V 稳压与高压模块输入开关

辉光管驱动

两只管子一共需要控制二十个数字阴极。我采用了三片 74HC595 扩展输出,再由二十路 MMBTA42 高压三极管分别控制对应的数字,每只管子的阳极有独立的限流电阻。

ESP32 只需发送串行数据,再统一锁存输出。三片 595 的二十四路输出中,四路留空,每只管子正常显示时只选通一个数字。

调光通过三片 595 共用的消隐信号实现 PWM,频率在后面的实板对照中确定。

三片 74HC595 的串行控制与消隐调光示意
图 3. 串行写入、锁存更新与 PWM 调光示意(非实测波形)

PCB 设计

PCB 设计先从元件布局开始,确定功能分区、器件位置和装配关系,再开展布线。先把整体摆放理顺,后面才更容易安排连接路径,减少边布线边大幅挪动器件的返工。

元件布局

开始布局后,我很快发现,只交代功能和连接关系还不够。AI 给出的初版摆放相当随意,我需要进一步明确网格对齐、功能分区、关联元件集中布置和模块间留白等要求。

经过一两轮调整,布局才开始接近我的预期。去耦电容、接口保护器件和驱动电阻需要靠近各自的连接对象,我也会让 AI 根据辉光管的实际管脚位置,安排职责相同的驱动三极管,再结合它们与 74HC595 的相对位置,反向调整原理图中的通道连接。这样可以让连接顺应物理布局,固件再按最终映射生成显示数据。

上下堆叠的结构又增加了一层约束。两块主板都以正面朝上的方式安装,控制板上面的器件和显示板下面的器件会相向而置。平面图上看起来空着的位置,到了装配里,可能正对着另一块板的高压模块或连接器。管子中心、板间连接器和安装孔的位置,也不能在各自布局时随意移动。

左侧为控制板元件面,右侧为显示板背面元件布局
图 4. 控制板与显示板的元件布局

布线迭代

布线的复杂度远高于元件摆放,也花费了我更多时间。这期间见识了 AI 给出的各种“歪瓜劣枣、顾首不顾尾”的设计:局部看着能用,放回整块板里就不协调,改好一处,又得检查是否影响了另一处。我逐渐放下了让它一次性给出完美布线的期待,只说“合理、整齐、紧凑”远远不够,还是得自己看图,指出具体问题,再和 Codex 一轮轮调整。

初版脚本只顾及局部连接,整体路径存在不少不合理的绕行,还夹杂着莫名的直角和锐角走线。一轮处理大约要花半个小时,Token 消耗相当可观。随着一轮轮修改,我能肉眼看着自己的 Pro 100 周额度一点一点往下掉。

显示板首轮布线与最终版本对比,第二行为管脚引线末端的三倍放大细节
图 5. 显示板首轮布线与最终版本对比

KiCad 这类开源工具采用文本化的工程文件,便于 Agent 读取和修改元件坐标、网络与走线。我和 Agent 逐步形成了以下流程:

  1. 读取:结合工程文件与设计文档,明确布局和布线约束。

  2. 修改:通过 Python 脚本调整元件位置、生成走线路径。

  3. 检查:运行规则检查并导出图像,由我复核,再继续迭代。

这样,布线就转化为几何计算与路径规划问题,减少了在 GUI 中逐段点击、拖动的操作。

接下来,我逐步把遇到的问题整理成布线规则:

  • 同组走线尽量平行、转折一致,减少碎短线和无意义的折返。

  • 优先同层连接,不为局部缩短路径而反复打过孔。

  • 高压、电源和普通信号分别遵守各自的约束,不为方便连通而统一改细走线或缩小间距。

另一项有效的调整,是把任务拆成分阶段的局部修改。先把一组关联器件及其连接处理清楚,再安排公共信号和电源路径,比每次重新修改整块板更容易控制结果。已经确认的部分尽量保留,新增修改再检查是否影响了原有连接和回流。

按当时的粗略记录,经过约十轮调整,布线结果逐渐达到预期,脚本运行加自动视觉检查也缩短到每轮十分钟以内。我再看图复核路径与装配是否合理,反复调整的规则也沉淀进了脚本,作为后续迭代的依据。

KiCad 的设计规则检查(DRC)在这里很有价值。把线宽、间距等要求写成明确规则,每轮修改后检查,就能及时发现 AI 引入的未连接或违规走线,约束它在预期之外的改动。

布线过程中,还要结合上下两块板的匹配关系一起检查,确认板间连接器与固定位置对应,并尽量让另一块板上的器件和金属结构避开高压区域。侧面的编码器也会影响上层显示板:根据它的装配高度和实际位置,需要在显示板边缘留出必要的避让缺口,同时调整附近的器件与走线。

外壳与装配设计

PCB 成形后,我开始通过三维装配检查元件高度、连接器配合和装拆空间。把模型放进装配里,二维图上不容易发现的干涉也更直观,资料不明确的弯折和配合余量则留待实物确认。

大量常见元件可以直接复用 KiCad 封装库配套的三维模型,省去逐个建模的工作。对于辉光管这类特殊封装的器件,只要提供必要的手册和尺寸说明,AI 建模的效果也相当出色,超出了我的预期。

主板的大小和两板之间的距离,也是在布局与装配过程中逐渐调整出来的。我希望整机尽量紧凑,同时给板间器件和连接器留出足够空间。管子在上方,屏幕朝前,USB 接口朝后,旋钮从右侧伸出。围绕这组关系,外壳最终采用黑色 PA12S 3D 打印,上盖与完整前框做成一体,下壳则包住底部、两侧和后部。

我希望正面没有分缝,顶部没有外露紧固件,因此将板组固定在上盖内侧,外壳接缝安排在侧后和底部。

装配四分之一剖面与上下壳体内部结构的组合视图
图 6. 外壳设计模型:左侧为装配剖面,右上为上壳内侧,右下为下壳内侧

具体固定方式,我结合吊装剖面逐层梳理:上盖内侧的吊柱嵌入热熔螺母,显示板前侧用短螺钉固定,后侧用铜柱夹紧,形成四点吊装。后侧铜柱同时保持板间距离,下端再供下壳螺钉连接。这样,板组固定与下壳固定分开处理,取下下壳时,上盖与板组仍能保持完整。

这套层次关系确定后,我再检查螺钉穿过各层后能拧入多深、会不会顶到盲孔底,以及工具能否伸进去。吊柱根部需要补强,但加强筋也不能挡住下壳的装入路径。剖面图让我能把这些关系放在一起检查,而不只是看外观是否合适。

以说明书中的拆壳场景为例,板间连接和前板排线可以保留,但侧面伸出的编码器仍会限制下壳的移动。解除旋钮和外部固定件后,下壳需要轻微倾斜、平移,让轴杆退出侧孔,同时避开后方的 USB 插座和支撑柱。装配设计不仅要看零件装好后是否合适,还要检查它们能否顺利装入和取出。

后侧铜柱与前侧短螺钉的吊装层次剖面
图 7. 板组吊装剖面:后侧板层夹紧与独立显示板吊点

有了这些设计文档和装配模型,再让 AI 整理一本装配说明书,也就手到擒来了。固定件对应关系、装拆顺序和注意事项都已有依据,配上模型视图,就能把设计过程中的考虑转成便于查阅的图文说明。这些模型后来也用于演示短片,材质和镜头的处理留到番外再讲。

手册包含装配结构、拆装步骤与使用说明。

组装调试

PCB 制作和基础元件的贴片交给嘉立创完成,收到板子后,我再手焊剩余元件,并安装辉光管的管脚套。焊接完成后的第一件事,是用万用表检查有无短路,确认后再分模块逐步测试。各部分都没有问题后,才把高压显示板、辉光管等主要部件组装起来,开始整机调试。

调光时的小插曲

辉光管正常显示后,我发现部分亮度下会有轻微噪声,于是对照测试了几个 PWM 频率。500Hz 的综合效果最好,亮度调到 100% 时声音明显减轻。

提高到 5kHz 后,噪声反而更明显。16kHz 时声音消失了,调光效果却变得不明显,25kHz 时则明显失效。最后我保留了 500Hz。噪声的具体来源,还没有通过测量确认。

未安装外壳的板组、LCD 与辉光管点亮效果示意
图 8. 板组点亮效果示意

小结

这次做下来,我感受到 AI 在硬件工程上的能力已经有了很大进步。虽然 PCB 设计需要反复磨合,尤其是布线,连通只是开始,合理、整齐和便于装配还得逐步调整。但把要求讲清楚,配合规格文档和规则检查,它已经能承担相当多的具体设计工作。

更让我意外的是三维空间理解。简单零件给出手册尺寸,就能做出可用的模型,外壳分件、板组吊装和装拆空间也能在讨论中逐步落实。就这次项目的体验而言,我觉得它在三维空间理解和建模上的表现,已经超过了大多数普通人。 从尺寸说明到模型,再到各个零件之间的配合,这种能力比我原先预想的成熟得多。

在这种配合里,AI 更像是变成了人的手,就像章鱼通过抽象命令调动自己的触手,不必逐一控制每个动作,也能把意图落实到具体操作。设计者往往对最终效果有自己的想法和审美追求,做成什么样、哪些地方值得继续打磨,仍然需要自己判断。AI 承担了大量执行工作,设计者则通过表达要求、检查结果和实物调试不断修正。即使不亲手修改设计文件,也始终参与着设计。

AI 给这类硬件项目的设计生产力带来了巨大的提升。 以往类似项目,往往要投入数周的个人时间,前期做仿真和验证,再一点点优化设计。现在,集中花两三天,再加上持续“烧 Token”,就可能把主要设计推进到可以加工的阶段。仿真、检查和实物验证仍然要做,但大量绘制、建模与反复修改的工作被加速了,业余时间里的一个想法也更容易真正落地。

下一篇聊聊固件和桌面客户端的开发过程,看看这个小装置如何获取 Token 额度,并把数据变成辉光管上的数字。


最后修改于 2026-11-05