1. 项目概述:一颗芯片让校园卡变成会发光的智能钥匙
你有没有遇到过这种场景:门禁卡、公交卡、校园卡、工牌堆了一桌子,出门前翻半天找不到想要的那张,刷卡时还要贴着读卡器等那“滴”一声,有时候角度歪了还没反应。NFC标签不是什么新鲜东西,但如果你自己动手做过一个,你会发现里面的门道远比想象中多,尤其是“会发光”这一点,直接改变了NFC标签只能被动响应的刻板印象。
这个项目的核心是NT3H1101芯片——恩智浦推出的一款NFC Forum Type 2标签芯片,工作在13.56MHz频段,内置用户存储空间,同时支持I2C接口和能量采集功能。简单来说,它既能像普通NFC标签一样被手机、读卡器读写,又能从读卡器的射频场中“偷”一点能量出来,驱动一个LED发光。听起来很玄乎,其实原理就是电磁感应——读卡器发出的射频场照到天线上,天线感应出交流电压,芯片内部整流后就能输出一个直流电压,这个电压足够点亮一颗低功耗LED。
我当初做这个项目有两个动机:一是研究NFC标签在门禁、签到、智能家居场景下的真实应用边界,二是想验证一下PCB天线设计在自己没有专业仪器的情况下能做到什么程度。整个项目从画原理图到打样、焊接、调天线、实测发光,大概花了两个周末。这篇文章会把整个流程拆开揉碎,从芯片选型讲到天线匹配,再讲到我踩过的几个坑——尤其是天线设计那个坑,差点让我以为芯片是坏的。
适合谁来参考?如果你用过NFC Reader Tool这类Windows软件,想往上走一步、自己做个硬件;或者你在嘉立创EDA上画过板子,想试试射频相关的设计;再或者你纯粹觉得“会发光的NFC标签”这件事很酷,想复刻一个——这篇文章都能给你一条能走通的路。基本不需要射频理论基础,但我会尽量把原理讲明白,免得你只会抄作业、不会改作业。
2. 硬件选型与核心原理
2.1 为什么选NT3H1101而不是NTAG213或NT3H2111
做NFC标签,市面上现成的选择不少。最便宜的是各种NTAG213、NTAG215,几毛钱一颗,淘宝上一抓一大把,加上个线圈天线就能工作。但这些纯NFC标签芯片有个致命短板:它们不能驱动外部负载,芯片的所有能量都用来给内部EEPROM供电了,读卡器靠近时除了返回一串数据,什么附加动作都做不了。
NT3H1101则完全不同。它在射频前端和存储之外,额外集成了一套能量采集(Energy Harvesting)电路,可以从射频场中整流出高达10mA左右的电流(取决于读卡器输出功率和天线耦合效率),通过VEH引脚输出。这就是“会发光”的关键。它还带了I2C接口,主控芯片可以通过I2C读写它的存储器,也就是说它不仅能当无源标签,还能当一个有源的近场通信桥接器——手机NFC靠近,主控就能通过I2C拿到数据。这个特性在后来的智能门锁、蓝牙快速配对场景里非常实用。
NT3H2111和NT3H1101的关系很容易让人糊涂。两者封装不同:NT3H1101是XQFN-8封装(2mm × 3mm),NT3H2111是XQFN-8封装(1.7mm × 2.3mm),更小更难焊接。功能上几乎一致,都有I2C和能量采集,存储空间也同样是用户区504字节。我做设计时选了NT3H1101,唯一原因是它引脚间距稍大一点,手工焊接时不用显微镜也能搞定。如果你有热风枪和较好的焊接手艺,选NT3H2111体积优势更明显。
2.2 能量采集电路的工作机制
能量采集是NT3H1101最迷人的部分,也是很多人第一次用芯片时最容易困惑的地方——为什么我用万用表量VEH引脚,电压一直是0?
要理解这个问题,得先知道能量采集是怎么工作的。读卡器(比如手机NFC)会持续发射13.56MHz的正弦波射频信号,当PCB天线靠近读卡器时,天线的谐振回路会从射频场中耦合出交流电压。这个交流电压经过NT3H1101内部的整流桥和稳压电路后,在VEH引脚上输出一个直流电压,典型值在2V左右(开路条件下,实际取决于耦合程度)。但这里有个关键限制:芯片需要先被读卡器“激活”,也就是读卡器发出的射频场强度必须达到芯片的唤醒阈值,VEH才会开始输出电压。
我在第一次测试时,把天线贴到手机背面,同时用万用表笔去量VEH和GND,结果读数一直在0.1V到0.3V之间跳动,上不去。后来才意识到问题出在手机NFC的发射功率策略上——手机在检测到标签之前,会先以较低功率轮询,找到标签后才提升功率完成通信。这个轮询阶段能量很弱,如果LED直接并在VEH上,LED会把这点微弱电压拉垮,芯片甚至来不及完成唤醒。正确做法是在VEH和GND之间先接一个低漏电流的电容(我用的是100μF钽电容),先把能量攒起来,电压升高后再通过一个限流电阻点亮LED。
实测下来,不同手机的NFC发射功率差异很大。老款的某些安卓机NFC功率比较足,iPhone 12以后的机型NFC功率也算可以,但某些低端机的NFC读卡距离本来就短,能量采集效果会很差。所以如果你复刻这个项目,发现发光亮度不够或不亮,不一定是电路有问题,也可能就是手机不给力。这是我在后面“常见问题”里会详细展开的内容。
2.3 LED选型和限流电阻计算
驱动LED这件事看似简单,但在能量采集场景下有个特殊要求:LED的正向压降(Vf)必须尽量低,工作电流尽量小。普通红色LED的Vf大约在1.8V到2.0V,工作电流5mA到20mA,按这个参数直接设计,NT3H1101根本带不动。一颗标准读卡器在10cm距离内耦合到的能量,经过整流后能稳定输出的电流通常只有3mA到8mA,如果你用了一颗Vf=2.0V、需要10mA才亮的LED,亮度会非常感人。
我选的是红色贴片LED,型号为KPT-1608SURC,Vf典型值1.7V,1mA电流下亮度已经足够醒目。限流电阻的取值按这个原则来算:VEH稳定输出2.1V到2.2V(实测贴紧手机NFC区域时),减去LED正向压降1.7V,剩余0.4V左右,假设目标电流2mA,限流电阻R = 0.4V / 2mA = 200Ω。我实际焊了一个220Ω的电阻,和理论值很接近。这里有个小技巧:千万别用那种需要5mA以上电流才能看清的LED,也别选绿色或蓝色——它们的Vf普遍在2.8V到3.2V,在这个电路中基本点不亮。
2.4 加入超级电容做个“延时熄灭”效果
单纯的能量采集点亮LED,效果其实就是“手机靠过去闪一下”,体验比较生硬。如果想让LED多亮一会儿,比如手机移开后还能维持两三秒的渐灭效果,可以在VEH引脚上加一颗超级电容。这种电容容量大、内阻低,能在地大电流输出,特别适合这种“攒能量然后慢慢放”的场景。
我试验过三种储能方案:0.1F的超级电容能维持LED发光大约4到5秒,1F的能撑到20秒以上,但充到VEH引脚电压的时间也跟着变长,手机要贴住超过5秒才能充满。最后的折中方案是并联了一颗0.22F超级电容和一颗100μF钽电容——钽电容负责快速响应射频场,让LED尽快亮起来,超级电容负责在射频场消失后继续供电。整体电路从手机贴上到LED亮起,大约需要0.5秒到1秒,手离开后LED渐灭过程可持续2到3秒,体验刚好。
注意:超级电容的耐压值至少选5.5V的,别用那种2.7V的,虽然VEH不会输出那么高电压,但万一读卡器功率异常或者天线匹配过强,瞬间电压尖峰很容易击穿耐压不足的电容。
3. PCB天线设计:13.56MHz谐振与匹配计算
3.1 天线尺寸和匝数怎么定
做13.56MHz的NFC天线,绕不开一个基本问题:PCB上的铜箔线圈怎么画?天线太大会超过读卡器的有效场范围,太小又耦合不到足够能量;匝数多了寄生电容变大、自谐振频率掉下来,匝数少了电感量不够、谐振电容匹配不上。这事没有万能公式,但有成熟的设计路径。
先说理论依据。13.56MHz RFID天线本质上是一个平面螺旋电感,需要和并联电容构成一个LC并联谐振回路,谐振频率对准13.56MHz。天线的电感量取决于线圈的物理尺寸、匝数、线宽和间距。工程上常用的估算方法是基于扁平螺旋电感的经验公式(Wheeler公式的简化版):
[ L \approx \frac{\mu_0 \cdot N^2 \cdot d_{avg} \cdot K}{2} ]
其中 (d_{avg}) 是平均直径(外径加内径除以2),(N) 是匝数,(K) 是和线圈形状有关的系数(圆形约0.8,方形约0.7,我这里用的是方形线圈)。这个公式算出来的是近似值,实际电感量还得靠网络分析仪或阻抗分析来校准。
我的板子尺寸定在 25mm × 35mm,线圈外圈长边30mm、短边22mm,线宽0.3mm,线间距0.3mm,绕3匝。这组参数的核心考量是让它能放进一个普通的门禁卡卡套里,同时保证天线平面面积尽量大——面积越大,磁通量越充足,耦合效率越高。用上面的公式估算,这个线圈的电感量大约在1.6μH到2.2μH之间(取决于铜箔厚度和介质层影响),搭配并联电容的计算如下:
谐振频率公式:
[ f = \frac{1}{2\pi\sqrt{LC}} ]
目标频率13.56MHz,反推谐振电容:
[ C = \frac{1}{(2\pi f)^2 \cdot L} ]
取L=1.9μH计算:
[ C = \frac{1}{(2\pi \times 13.56 \times 10^6)^2 \times 1.9 \times 10^{-6}} \approx 72.4\text{pF} ]
考虑到PCB走线和芯片引脚本身还会贡献约3pF到5pF的寄生电容,我实际并上了两个电容:一个47pF和一个27pF,并联等效74pF,再加上寄生电容,大概在77pF到80pF之间。焊完实测,用天线连到示波器看读卡器通信时的波形幅度,在贴紧状态下手动微调,换了一颗22pF替换27pF后,信号幅值提升了大约18%,读卡距离从18mm提升到21mm(用PN532读卡器实测)。
3.2 天线匹配要注意的坑
匹配电路是天线设计的重头戏,也是无数DIY翻车的重灾区。我总结下来,三个坑最值得说。
第一个坑是只知道并联谐振电容、不知道串联匹配。NT3H1101的数据手册给出了典型应用电路,天线上除了并联谐振电容,还需要两个电容或一个电阻加电容组成的匹配网络,把天线回路的阻抗变换到芯片RF1/RF2引脚的输入阻抗。如果只并电容,芯片可能能工作,但读取距离会短得可怜。我的做法是参考了NXP官方AN11757应用笔记里的匹配拓扑,在RF1端串联一个22pF电容,RF2端串联一个22pF电容,然后并联谐振电容组。这个拓扑对DIY最友好,元件少,调试也方便。
第二个坑是铺铜对天线的影响。天线下面绝对不能铺完整的参考地平面。我第一版板子就是因为习惯性在天线线圈下方铺了一大块地,结果电感量直接跳水,谐振频率偏到了23MHz左右,手机完全读不到。原因很简单:平面的涡流效应会抵消天线的磁通量,等效于天线电感变小,而且涡流损耗还会吃掉一部分能量。正确做法是天线下方的所有图层全部挖空,包括顶层、底层和中间信号层,至少保证天线区域正反两面都没有铜。
第三个坑是天线引线。从天线线圈到芯片RF1/RF2引脚的走线要尽可能短、尽可能细,两条线最好并行走但保持间距,不能形成大面积回路。我第一次做的时候,把两条引出线左右分开走了一个大弧形,结果额外形成了一个小环天线,导致整个天线的辐射方向图变得奇怪——贴在手机正面靠左的位置能读,靠右就读不到。后来改成从同一侧并排引出、间距0.2mm、长度控制在5mm以内,问题解决。
3.3 用阻抗分析仪校准(没有仪器怎么替代)
如果手边有矢量网络分析仪或者带阻抗分析功能的仪器,天线调匹配会简单很多。但大多数DIY玩家没有这个条件,我也没有——我用的替代方案是“读卡器信号幅度观察法”,简单粗暴但有效。
具体操作:把天线和芯片焊好,程序烧录之后,用手机NFC或PN532读卡器靠近天线,每次改变匹配电容值,观察手机NFC识别的速度和稳定性、PN532读出的信号强度寄存器值,或者用示波器探头(高阻模式)夹在电容两端看通信时的峰峰值。反复试两组到三组电容值,找到幅度最大、识别最稳定的一组。
这个方法精度不够高,但工程上完全够用。我做出来的最终效果是:用PN532读卡器能够稳定在25mm距离读卡,用iPhone 12手机NFC功能,贴卡套外侧大约8mm内能正常识别。这里需要提醒一句,示波器探头本身会有约10pF的负载电容,量出来的谐振频率会比实际偏低一点,所以在示波器上看到谐振频率在13.2MHz附近其实是正常的,不用太纠结那个精确到小数点后三位的频率值。
4. 硬件实现过程:从原理图到焊接
4.1 画原理图和PCB布局
这个项目我是在嘉立创EDA里完成的,不用换工具,跟着操作就行。原理图部分其实非常简单,核心元件只有5个:NT3H1101芯片、两个RF匹配电容(22pF × 2)、一个谐振电容组(47pF + 27pF)、一个限流电阻(220Ω)、一个LED,外加储能电容(100μF钽电容 + 0.22F超级电容)。I2C的两个引脚SDA/SCL我预留了测试点,方便后面用逻辑分析仪调试。
PCB布局的关键在于分区。NT3H1101芯片放在板子一侧,天线线圈围绕板子边缘走,两者之间留出一个“隔离带”区域放匹配电容和储能电容。LED放在天线线圈之外的边角位置,这样LED的走线不会横穿天线区域。超级电容体积较大(直径8mm的圆柱形),放在板子背面,通过过孔连到VEH。
天线线圈的绘制有一个技巧:用嘉立创EDA的“矩形螺旋电感”工具,设置好层(顶层)、线宽(0.3mm)、间距(0.3mm)、圈数(3圈)、外框尺寸(30mm × 22mm),自动生成后微调起始引线的位置,让它尽量靠近芯片引脚。注意线圈的转角处最好做45度切角而不是直角,直角容易在射频下产生不必要的辐射杂散。
制板参数上,我选了1.6mm厚FR-4板材、2oz铜厚。这里有个大多数DIY玩家不会注意到的点:铜箔厚度会影响天线的直流电阻和Q值。2oz铜比常规1oz铜的直流电阻小一半左右,天线Q值会高一些,读卡距离能小幅提升。当然,2oz铜会让板子价格贵几块钱,而且走细线时侧蚀更明显,0.3mm线宽已经是2oz铜的可靠下限了,再细就容易断线。
4.2 焊接顺序与手法
焊接这个2mm × 3mm封装的芯片,我试过三种方式:手工烙铁、热风枪、回流焊。最推荐的是热风枪配合锡膏,因为芯片底部有一个裸露的散热焊盘(同时也是GND),手工烙铁很难把焊盘下面的锡完全融化。
实际操作流程:先在PCB的焊盘上刷一薄层锡膏,放上芯片对准引脚,热风枪温度调到320℃,风速调低,距离板子2cm左右均匀加热,等锡膏熔化并有轻微“塌陷”感后就撤掉热风枪。整个过程大约10秒到20秒。焊完之后用放大镜检查引脚有没有连锡、虚焊,再用万用表二极管档测量芯片供电引脚的对地压降,正常应该在0.4V到0.7V之间,如果短路则读数为0。
天线匹配电容、LED和电阻都是0603封装,手工烙铁加镊子就能轻松搞定。焊接顺序上有个经验:先把芯片焊好并用万用表确认各引脚没有短路,再焊天线,最后焊LED和储能电容。这样可以分段排错,避免焊接完成后一锅粥分不清问题出在哪。
超级电容体积大又比较重,如果直接贴在焊盘上,受到磕碰容易把焊盘拽下来。我在超级电容的底面涂了一层热熔胶,固定在板子背面,引脚才焊到焊盘上,这个细节能显著提升耐用性,尤其你是要把这板子做成钥匙扣天天带出门的话。
4.3 烧录NDEF数据与能量采集验证
硬件焊好了,接下来是写入数据。NT3H1101的存储区可以通过手机NFC直接写入NDEF格式的文本或URL,我用的是“NFC Reader Tool”这个应用——也是很多相关视频和文章里常用的工具。手机打开NFC,贴到天线区域,应用识别到NT3H1101后,选择“Write NDEF”功能,输入你想要的数据。比如我写了一个URL:https://example.com/nfc-key,以后手机碰一下就能弹出这个链接。NDEF格式的好处是通用性极强,iOS和安卓原生系统都能识别。
如果你想往NT3H1101的I2C接口方向玩,需要用另一个工具“NTAG I2C Demo”或者自己写一段Arduino代码来控制。芯片上电后,通过I2C访问NT3H1101的寄存器,可以读取SRAM暂存区数据、配置能量采集输出模式等。这一步对于纯做发光标签的人来说不是必须的,但如果你想扩展成“手机碰一下就让电脑锁屏”这种场景,就必须走I2C了。
能量采集的验证方式也很直观:写好NDEF后,把手机NFC贴近天线区域,观察LED是否亮起。正常情况下,手机贴上去0.5秒到1秒内LED点亮,保持贴住LED常亮,移开后2秒到3秒内渐灭。如果LED不亮,先别急着怀疑芯片烧了,按这个顺序排查:万用表量VEH引脚对地电压(手机贴住天线时)是否超过1.0V;再量LED两端电压是否达到1.7V;再确认限流电阻有没有焊错型号——我翻过一个车,把220Ω看成了220kΩ,焊上去LED纹丝不动,量半天才发现是色环看错了。
5. 常见问题与排查技巧实录
5.1 手机根本读不到标签
这个问题排在所有NFC DIY问题排行榜第一名。排除芯片焊接问题后,最可能的原因是天线谐振频率偏了。没有网络分析仪的情况下,可以用一个土办法做初步判断:找一个能显示NFC信号强度或读取时间的App,在手机设置里打开NFC,然后慢慢调整匹配电容值,每换一次电容就把标签贴到手机背面试一次,看手机识别速度的变化。如果怎么换电容都读不到,那就不是匹配的问题,而是天线本身太小或者下方有地铜——检查天线下方是否清空了所有铜层。
另外一个容易被忽略的因素是天线和芯片之间的连线长度。如果走线太长、太细,它本身的寄生电感会叠加在天线上,导致实际谐振频率低于设计值。我的第二版板子把引线从5mm缩小到3mm,读取稳定性明显改善。常规经验是:引线长度不要超过天线总长的5%,线宽不要小于0.2mm。
5.2 LED不亮但手机能读到标签
这个故障现象说明芯片工作正常、天线匹配没问题,问题出在能量采集电路或储能电容上。先量VEH引脚电压。手机贴住天线时,VEH对地应该在2V以上。如果电压正常但LED不亮,检查LED的正负极是否接反了——LED反接不会烧,但也不亮;再检查限流电阻阻值——如果误用了大电阻(10kΩ以上),电流会被限制在几十微安级别,LED微亮到看不见。
如果VEH电压始终在1V以下,大概率是储能电容漏电流过大或者超级电容把电压拉垮了。这里有个很容易踩的坑:超级电容的等效串联电阻(ESR)比较高,如果你把超级电容直接并在VEH上,读卡器刚靠近时,超级电容就像一个欠压大负载,把VEH电压瞬间拉低。解决方法是像我前面说的,先让钽电容在小电流下快速充电,等电压升上去再通过物理路径接入超级电容——或者更简单,在钽电容和超级电容之间串一个100Ω电阻,降低超级电容对VEH的“抽水”效应。
5.3 PCB天线设计避坑速查表
这个表是我做了三轮板子之后总结出来的,给后来人当参考。宁可多花五分钟检查,也不要像我一样打了三次板才调稳。
| 设计项 | 推荐值/做法 | 常见错误 | 后果 |
|---|---|---|---|
| 天线线宽 | 0.3mm 到 0.5mm | 小于0.2mm | 阻抗高、Q值低、读距短 |
| 天线匝数 | 3到5匝(取决于面积) | 匝数过多 | 自谐振频率下降,匹配困难 |
| 天线下方 | 全部挖空 | 保留地平面 | 涡流损耗大,读取失败 |
| 匹配电容 | 并联谐振电容 + 串联匹配电容 | 只并谐振电容 | 读距明显缩短 |
| 天线引线 | 短、细、并排走 | 大面积环路 | 辐射方向不准,读取不稳定 |
| 板材 | 1.6mm FR-4,2oz铜 | 0.8mm薄板+1oz铜 | 天线Q值偏低 |
其中“天线下方全部挖空”这一点可以说是视觉盲区——因为正常PCB设计习惯里,铺铜覆地是基础操作,很多从数字电路转来做NFC的人第一版都会栽在这里。我在嘉立创下单时特意预览了铜箔分布,确认天线区域没有覆铜才放心。
5.4 读取距离意外的短?先查读卡器再查天线
读取距离短,很多人第一反应是天线不行,但其实读卡器本身的功率和灵敏度同样关键。同一个标签,用PN532读卡器能到25mm,用某些老旧手机的NFC可能只有5mm,这是因为手机NFC天线的尺寸和位置差异太大。iPhone的NFC天线在机身背面上方,靠近摄像头的位置,新机型在背面中部,如果你把标签贴在手机背壳正中,不一定能对准天线。
测试时建议用手机背面边缘试探,找到NFC天线的大概位置(通常在摄像头附近或者背壳Logo区域),然后让标签对准那个位置读取。另一个技巧是用“NFC Reader Tool”这类App看它的轮询频率和信号状态反馈,虽然没有专业仪器那么精确,但已经能辅助判断是不是天线偏了。
6. 进阶玩法与后续扩展思路
这个项目做完之后,我把它装进了一个透明亚克力钥匙扣里,挂在工牌上。平时刷卡进门时,磁卡贴上去LED亮一下,手机碰一下能弹出我的电子名片链接。如果你还想再进一步,这里有三个方向可以参考。
第一个方向是能量采集的更大规模应用。NT3H1101能输出的电流虽然只有毫安级别,但搭配低功耗传感器和一颗大电容,完全可以实现“手机碰一下、传感器采集一次数据”的被动式传感节点。比如做一个小型温湿度标签,平时完全无源,手机靠近时读取温湿度数据并给标签供电。这个方向特别适合做环境监测手环、冷链物流记录标签等场景。
第二个方向是结合I2C接口做交互设备。用MCU通过I2C监听NT3H1101的中断引脚,当手机NFC靠近时触发MCU执行特定动作,比如播放一段音频、锁定/解锁电脑屏幕、记录考勤。这个功能的想象空间很大,相当于给设备增加了一个“物理碰一碰”的交互入口。Arduino或ESP32都能轻松驱动NT3H1101的I2C接口,代码量不大。
第三个方向是把它做成灵活的织物NFC标签。用漆包线或者导电磁性线在布料上缝制天线,配合贴片封装的NT3H1101和LED,就能做出可以缝在衣服、背包上的发光NFC标签。除了好看,它还能实现一个很实用的功能:老人小孩外出时,路过的热心人用手机碰一下衣服上的标签就能看到紧急联系人信息或医疗提示。
根据我自己的经验,“会发光的NFC标签”虽然听起来只是一个哄自己开心的小玩具,但它实际上把射频识别、能量采集、嵌入式存储、天线设计这些硬核知识点拧成了一个可以在一个周末内完成的实体项目。做完它,你对NFC的了解深度会比刷十篇文章都管用。下次再有人问“RFID和NFC到底啥区别”,你直接把这板子拍桌上给他演示一遍,比任何定义都好使。