

Nfc test
Dirt-cheap keyfob noise-level indicator
- Size
- 30 × 38 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 13
- Nets
- 10
- Pads
- 36
- Tracks, vias
- 164, 19
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 27 Sep 2026
- Updated
- 3 Nov 2026
Overview
Nfc test is an open-source printed circuit board by mkovero, from the mkovero/dbfob repository on GitHub. It is a 2-layer board of 30 × 38 mm with 13 parts on 10 nets, routed with 164 tracks and 19 vias.
It is built around the NT3H2111W0FHKH, CC0603KRX7R9BB104 and BS-08-B2AA001, with the KT-0603R among its other parts. Its parts include 4 resistors, 3 capacitors, 1 IC, 1 diode and 1 connector. It belongs with the radio and wireless boards of this library.
Main components
4NT3H2111W0FHKH
XQFN-8(1.6x1.6)RFID ICsNXP SemiconductorsCC0603KRX7R9BB104
0603100nF 50V X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSYAGEOMultilayer Ceramic Capacitors MLCC - SMD/SMTBS-08-B2AA001
--25~85℃ Battery base CR2032 Phosphor bronze - ROHSMYOUNGButton And Strip Battery ConnectorKT-0603R
0603-40℃~+85℃ 1.6mm x 0.8mm square LED 1.8V~2.4V 120° 20mA 300mcd 40mW 615nm~630nm 645nm Discrete Diode Red Water Clear 0603 LED Indication - Discrete ROHSHubei KENTO ElecLED Indication - Discrete
README
hardware/nfc-test/README.mdNFC test board (for rev B / B1)
30 × 38 mm, 2 layers. It answers one question before B1 is trusted: does B1's NFC antenna read on a phone with a CR2032 right behind it, and with what trim? This is experiment 4.

It goes in the same order as B1, so it can't steer B1's layout. B1 copies this antenna and its trim pads exactly. Whatever trim value this board finds goes straight onto B1's pads.
What's on it
- Top 30 × 26 mm: B1's outline and B1's antenna block, from ../lib/antenna.py, which both boards import so they can't drift apart:
- a 6-turn PCB coil, 0.25 mm track with a 0.2 mm gap, chamfered to clear the 3 mm corners, about 2.1 µH in air (NXP AN11276 formula);
- its outer end drops to B.Cu at VO, crosses under the turns and comes back up at VI, as on B1, whose edge leaves no room for a tail;
- U1 (NT3H2111, NTAG I2C plus 1k), C3 and the C1/C2 trim pads (not fitted) inside the bottom turns, where they sit on B1.
- Back: B1's CR2032 holder, MYOUNG BS-08-B2AA001. The holder has its own − spring, so the board under the cell is bare. A ferrite sheet can then lie on the holder floor under the cell, with a slot for the spring. Rev A's Keystone 3034 couldn't take a ferrite, because the cell sits directly on a PCB pad.
- Tail, 12 mm: D1 field LED, the pull-ups, JP1 and the J1 host header.
| Ref | What | Note |
|---|---|---|
| U1 | NT3H2111W0FHKH, C710403 | VOUT unused |
| C1, C2 | 0603 trim, not fitted | C0G, chosen on the bench |
| C3 | 100 nF | VCC decoupling |
| R1, R2 | 4.7 kΩ | SDA / SCL pull-ups to VCC |
| R3 | 10 kΩ | FD pull-up to the cell, as B1 will wake the MCU with it |
| R4, D1 | 1 kΩ, red | lit while a reader's field is on: FD pulls it low, even with VCC off |
| JP1 | solder jumper | bridge to run the tag's I2C side from the cell |
| BT1 | BS-08-B2AA001 (C964777) | hand-fit on the back, so JLC assembly stays one-sided |
| J1 | 1×6 2.54 mm, not fitted | + V D F C G = VBAT, VCC, SDA, FD, SCL, GND |
Regenerate
python3 hardware/lib/gen_lib.py # NT3H2111 symbol, XQFN8 + BS-08 footprints
python3 hardware/nfc-test/tools/gen_sch.py # tables -> schematic
python3 hardware/nfc-test/tools/make_pcb.py # coil + placement + hand-drawn LA/LB, the router does the rest
python3 hardware/nfc-test/tools/fab.py # -> production/This follows the same procedure as rev A (../README.md).
How the antenna is drawn. The coil is LA track. Its inner end meets LB through net tie NT1; its outer end crosses under the turns on B.Cu (VO to VI) to reach the tag's LA pin. DRC doesn't check clearance within one net, so antenna.py builds the turns at a fixed pitch and asserts the 0.2 mm gap, and the vias' gap to the turns, itself.
State at commit:
- ERC: clean, apart from the library-table warnings.
- DRC: 0 errors, 0 unconnected, 0 parity issues.
- Repeatability: two runs give byte-identical boards.
- CPL: all 7 placements checked against JLC's EasyEDA footprints.
On the bench
- No cell, no ferrite. Tap with an Android (NXP TagInfo) and an iPhone. Write a URL with NFC Tools. Note the read distance, and the distance at which D1 lights.
- Find the resonance, if a NanoVNA and a small pickup loop are at hand. Couple the loop loosely and read the S11 dip, f0. Then the trim is C = 50 pF × ((f0 / 13.56 MHz)² − 1). Without a VNA, try 0, 4.7, 10, 15 and 22 pF C0G in C1, and keep the value with the longest read distance.
- Fit the cell, no ferrite. Repeat steps 1–2. This shows how much the cell costs.
- Fit the ferrite: WE-FSFS-class, 0.1–0.2 mm, cut to a 20 mm disc with a slot for the − spring, on the holder floor. Repeat steps 1–2.
- Locked iPhone: with the screen on, a tap should open the URL with no app.
Record f0, the trim value, the read distance and the LED distance for each of steps 1, 3 and 4. The step 4 trim value goes on B1's pads.
Why the coil is under 2.75 µH. 13.56 MHz needs 2.75 µH with the tag's 50 pF (44–56 pF). The coil is short of that on purpose: ferrite raises L, the cell lowers it, and a parallel trim cap can only pull the resonance down.
Parts
13| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | tune C0G | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 1 | 100n | Capacitor_SMD:C_0603_1608Metric | C3 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | CR2032 | dbfob:BatteryHolder_MYOUNG_BS-08-B2AA001_CR2032 | BT1 |
| 1 | HOST | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J1 |
| 1 | NT3H2111W0FHK | dbfob:NXP_XQFN-8_1.6x1.6mm_P0.5mm | U1 |
| 1 | VCC=VBAT | Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP1 |
| 1 | antenna | NetTie:NetTie-2_SMD_Pad0.5mm | NT1 |
| 1 | red | LED_SMD:LED_0603_1608Metric | D1 |
Questions
How big is the Nfc test PCB?
It measures 30 × 38 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Nfc test use?
13 parts, built around the NT3H2111W0FHKH, CC0603KRX7R9BB104, BS-08-B2AA001 and KT-0603R. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Nfc test KiCad files?
From the mkovero/dbfob repository on GitHub, at the commit this page was made from: the board is hardware/nfc-test/nfc-test.kicad_pcb and its schematic hardware/b1/b1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Nfc test design in my own project?
Its repository states no licence, so its author keeps all rights: ask mkovero before reusing the design.
More from mkovero/dbfob
2- 2 layers30 × 26 mm

- 2 layers30 × 52.5 mm

Similar boards
- 4 layers100 × 50 mm

Chronolog
slemanz/chronolog
STM32-based temperature data logger with RTC, NOR flash storage, LCD and Wi-Fi. Hardware and firmware.
95 parts5 - 4 layers46 × 23 mm

Countdown
tsmiltonAgents/20260721_countdown
A 46 × 23 mm, 4-layer keyring PCB that counts down the hours to 10 October 2026, midday on a red 4-digit 7-segment display.
24 parts - 2 layers55 × 39.6 mm

Fallout badge
Anvarys/fallout-badge
This is a business card / badge that i made quickly at fallout
8 parts - 2 layers85.6 × 54 mm

- 4 layers118 × 76 mm

Smart led badge
zgeez/Pixel-Badge
Wearable 32x32 LED badge with Zephyr firmware, BLE control, passive NFC, and a Flutter Android app, built around a custom nRF52840 PCB.
1,236 partsMIT - 2 layers89.6 × 116.3 mm

HackerBadgePCBV2
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
31 parts915 - 2 layers90.5 × 50 mm

Main control board
jamro/tiny-engineer
A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.
42 parts1.1k - 6 layers84 × 98 mm

FujiNet-5200-Rev0
FujiNetWIFI/fujinet-hardware
Schematics and design files for FujiNet hardware
145 parts142