Skip to the content
PCBKitNew board
2 layers30 × 26 mmDbfob, the printed circuit board in 3D

Dirt-cheap keyfob noise-level indicator

Size
30 × 26 mm
Copper layers
2
Thickness
1.6 mm
Parts
24
Nets
28
Pads
89
Tracks, vias
297, 38
Pours
7
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
27 Sep 2026
Updated
3 Nov 2026

Overview

Dbfob is an open-source printed circuit board by mkovero, from the mkovero/dbfob repository on GitHub. It is a 2-layer board of 30 × 26 mm with 24 parts on 28 nets, routed with 297 tracks and 38 vias.

It is built around the CH32L103F8U6, NT3H2111W0FHKH and CC0603KRX7R9BB104, with the BS-08-B2AA001, IM66D130MV01XTMA1 and TS-1187A-B-A-B among its other parts. Its parts include 7 resistors, 6 capacitors, 4 diodes, 2 ICs and 1 connector.

Main components

10

README

hardware/nfc-test/README.md

NFC 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.

top render

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.
RefWhatNote
U1NT3H2111W0FHKH, C710403VOUT unused
C1, C20603 trim, not fittedC0G, chosen on the bench
C3100 nFVCC decoupling
R1, R24.7 kΩSDA / SCL pull-ups to VCC
R310 kΩFD pull-up to the cell, as B1 will wake the MCU with it
R4, D11 kΩ, redlit while a reader's field is on: FD pulls it low, even with VCC off
JP1solder jumperbridge to run the tag's I2C side from the cell
BT1BS-08-B2AA001 (C964777)hand-fit on the back, so JLC assembly stays one-sided
J11×6 2.54 mm, not fitted+ V D F C G = VBAT, VCC, SDA, FD, SCL, GND

Regenerate

sh
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

  1. 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.
  2. 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.
  3. Fit the cell, no ferrite. Repeat steps 1–2. This shows how much the cell costs.
  4. 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.
  5. 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

24
QtyValueFootprintReferences
32.2kResistor_SMD:R_0603_1608MetricR5, R6, R7
2100nCapacitor_SMD:C_0603_1608MetricC3, C4
24.7kResistor_SMD:R_0603_1608MetricR1, R2
2tune C0GCapacitor_SMD:C_0603_1608MetricC1, C2
1100kResistor_SMD:R_0603_1608MetricR3
110uCapacitor_SMD:C_0603_1608MetricC5
11kResistor_SMD:R_0603_1608MetricR4
11uCapacitor_SMD:C_0603_1608MetricC6
1CH32L103F8U6Package_DFN_QFN:UQFN-20-1EP_3x3mm_P0.4mm_EP1.85x1.85mmU2
1CR2032dbfob:BatteryHolder_MYOUNG_BS-08-B2AA001_CR2032BT1
1IM66D130Mdbfob:Infineon_IM66D130M_LGA-5_3x2mmMK1
1NT3H2111W0FHKdbfob:NXP_XQFN-8_1.6x1.6mm_P0.5mmU1
1PROGdbfob:TestPads_1x05_P2.54mm_D1.2mmJ1
1antennaNetTie:NetTie-2_SMD_Pad0.5mmNT1
1measureButton_Switch_SMD:SW_Push_1P1T_XKB_TS-1187ASW1
1orange 605nmLED_SMD:LED_0603_1608MetricD3
1red 625nmLED_SMD:LED_0603_1608MetricD4
1yellow 590nmLED_SMD:LED_0603_1608MetricD2
1yellow-green 575nmLED_SMD:LED_0603_1608MetricD1

Questions

How big is the Dbfob PCB?

It measures 30 × 26 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Dbfob use?

24 parts, built around the CH32L103F8U6, NT3H2111W0FHKH, CC0603KRX7R9BB104 and BS-08-B2AA001. 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 Dbfob KiCad files?

From the mkovero/dbfob repository on GitHub, at the commit this page was made from: the board is hardware/b1/b1.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 Dbfob 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 × 52.5 mmDbfob, the printed circuit board in 3D

    Dbfob

    mkovero/dbfob

    Dirt-cheap keyfob noise-level indicator

    17 parts
  • 2 layers30 × 38 mmNfc test, the printed circuit board in 3D

    Nfc test

    mkovero/dbfob

    Dirt-cheap keyfob noise-level indicator

    13 parts

Similar boards

  • 4 layers100 × 50 mmChronolog, the printed circuit board in 3D

    Chronolog

    slemanz/chronolog

    STM32-based temperature data logger with RTC, NOR flash storage, LCD and Wi-Fi. Hardware and firmware.

    95 parts5
  • 2 layers63.2 × 85 mmBadge blob, the printed circuit board in 3D

    Badge blob

    HeyPCB/badge-blob

    Blob, the social battery badge: The name badge that tells people whether to come say hi. KiCad 10, heypcb.ai merch.

    18 partsCERN-OHL-S-2.0
  • 2 layers100 × 100 mmHour meter board microfit can handroute, the printed circuit board in 3D

    Hour meter board microfit can handroute

    ilomon10/embedded-totalizer-hour-meter

    ESP32 engine hour meter & totalizer: firmware, SensorFrame protocol, Node host tools, KiCad PCB and a Deno device simulator

    152 parts
  • 4 layers46 × 23 mmCountdown, the printed circuit board in 3D

    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
  • 4 layers90 × 70 mmInclinationMeter, the printed circuit board in 3D

    InclinationMeter

    soldernerd/InclinationMeter

    A battery-powered, Bluetooth-enabled precision electronic level instrument for machine tool geometry inspection and granite surface plate qualification.

    118 parts
  • 4 layers50.8 × 22.9 mmBench stim wing, the printed circuit board in 3D

    Bench stim wing

    ThatguyCplus/throttleECU

    STM32F411CE Throttle ECU — PID position control with AS5048A encoder, H-bridge motor, safety module

    114 parts1
  • 2 layers40 × 96.1 mmCable bunny, the printed circuit board in 3D

    Cable bunny

    HeyPCB/cable-bunny

    Cable Bunny: Is it a charge-only cable? Ask the bunny. KiCad 10, heypcb.ai merch.

    25 partsCERN-OHL-S-2.0
  • 4 layers60 × 50 mmESP32 boardV1, the printed circuit board in 3D

    ESP32 boardV1

    robertxdx/ESP32S3PD15W

    A 15 W USB-C powered ESP32-S3 LED-strip controller and development board.

    46 parts