Wilson Harper 那张 NFC 能量采集名片,我差点没点开。不重新贴链接了,原文在 connect.wilsonharper.net 的项目记录里,出处是原作者自己的日志,不是被哪个转载号薅过去加了水印的版本。他做了一张不装电池的 PCB 名片,靠手机 NFC 场点亮 21 个 LED,顺带放联系信息。我一开始准备跳过——PCB 名片看多了,大部分靠丝印和裸铜凹造型。读到第三段他写“常见名片重点在平面设计,我想做能送人的”,还没太大感觉。真正让我停住的是他说最初目的只是攒点 PCB 设计经验,做着做着发现 NFC 方案没电池、碰到射频、BOM 也低。
这条我推荐不是因为成品照多好看——原图里那段确实像晒单——是他把“为什么最后变成这样”写得比成品照更透。我见过不少硬件项目记录,只贴最终原理图,中间改过的版和踩过的坑全剪掉。这篇没剪。
他一开始选了 ATtiny412,理由是体积小、GPIO 够用、低功耗。我没见过几个在项目日志里把“后来发现这选型不太行”写在自己前一次决策下面的人。这人后面直接承认,ATtiny412 只有 5 个 GPIO,封装是 SOIC 那种引线形式,离板高度太大。于是改成 ATtiny816,17 个 GPIO,3 mm × 3 mm,更薄。这段我看得比较细,因为他不是“最终选了 ATtiny816”那种只给你正确结果的写法,而是把第一次选型也留在那里没删。成品照看不到这些,但读完你至少知道这张卡活过两版。
更想说的是 Charlieplexing。公式 y=x(x-1) 不新鲜,6 个 GPIO 最多能控 30 个 LED,他用了 20 个,留了裕量。但多数人讲这个只讲前半截,不讲代价。作者写了一句:主要缺点是一次只能亮一个 LED。看到这句我确认这篇靠谱。一个用 Charlieplexing 的人不提“一次只能亮一个”,基本没自己做过,或者故意藏着。他不只提了,还说靠 PWM 和分散占空比缓解。不点链接也能带走这个判断:用少量 GPIO 控大量 LED,数量公式是账面数字,真正要算的是每毫秒里有多少时间灯是灭的。
开始留一些话在下面。比如有些片段不是作者自己说的,是我从电路图里看出来的。我发现他实际上是在设计时留了一些余量,这些余量的意义他原文没有点明。因为他不点明,我觉得得帮他说一说,但也得说清楚哪句是我的,不是他的。
NFC 能量采集那段也值得停一下。他说手机周期性发磁场,卡片吸收能量,但又不是主动回传,反而靠改变吸收让手机检测到功率下降。我读到这的时候多停了半分钟,这个机制市面上文章经常讲反。这篇里我更在意的是一个数值限制:NTAG I2C Plus 数据手册规定 VOUT 电容不能超过 220 nF,否则电压轨会下跌甚至振荡。他最终电路里用一个 10 µF 电容平滑 VCC,但前 120 ms 让 P 沟道 MOSFET 断开,用 R3 把涌流限制在几 mA,等 MCU 起来再拉低 GATE 给低阻路径。这个启动电路埋在中间,不是开头成品照片会露出来的部分。只扫前几张图的人看不到这篇真正的分量。我不能说他一开始就想到了,甚至不能说他一开始就做对了,只是现在能看到的版本里,这些细节都还在,他没删,这就够了。
还有天线那部分。他没用地面,因为地平面会挡磁通;LED 走线避免形成完整环路,怕和 NFC 场耦合出涡流。这些对画过 NFC 板的算不上秘密,但他写成一条普通设计约束,没有“我发现了新大陆”的口气。加上 KiCad 没有矩形螺旋生成工具,他让 LLM 写 KiPython 脚本生成走线,把 .py 放进仓库,还说圆角只让包围面积变化几个百分点。这种细节像是真跑过,不是把 LLM 当魔法使。我看到这里想顺手在本地跑一下那个脚本,后来发现他没给完整命令,仓库里有文件但 README 里只有一段“如果需要可以自己改”的频率设定和线宽参数。算了,不想一次把一个下午搭进去。
话说回来,我没想到自己会读得最来神的段落是编程器那截。他先试 Arduino 跑 jtag2updi,发现多数是 5V 逻辑;改用 RPi Pico,找到 UF2 文件没成功,示波器无输出;最后掏钱买 Adafruit UPDI Friend 才立刻成功。他完全可以把前两段失败删掉,只写“用 UPDI Friend 烧录成功”。但留着有什么用?后来我想明白了——留着是为了让下一个拿 Pico 接 UPDI 失败的人知道,这不一定是他的问题。我推这条,很大程度上是因为这一段。
这条我确实没法自己跑。没有卡,也没打算为一条链接去下 5 张起做。按他给的数值算了下 Charlieplexing 的接法,没发现明显对不上的地方。但有一处我打个问号先挂着:原文说 VOUT 电压足以驱动任何颜色 LED,这个“足以”到底是多少、20 个灯刷新时每个分到多少,他没给全。我不能替他打包票。先记为“看着可信,等有人拿卡量一下再说”。
V2 他自己说想加按钮,甚至拿环形 LED 做街机游戏。我觉得 V2 之前更该做的是把卡放到示波器下,量量 VOUT 在动画刷新时掉多少,和他说的 1 kHz、20% 占空比掉 0.2 V 到底对不对。这是我留给自己的作业,先欠着。
不点链接也能带走的那句,我觉得不是 Charlieplexing 的公式,也不是 NTAG 那条电容限制,是:一个项目里的失败之所以能被留到现在,是因为作者没把记录当说明书写,而是当自己的错误台账写。错误为什么留,是个值得想的问题。这条链接,我点开时只想看个 NFC 名片,最后读到自己有点想把那几段失败记录也存进我的夹子里。
