NFC-powered PCB business card animates 21 LEDs with no battery

A hobbyist set out to learn KiCad by designing a business card, then ended up building a working RF-powered circuit board. The card holds no battery. Tapping it against a phone makes 21 LEDs run an animation, powered entirely by the phone's NFC field.

The project began about three months before the write-up was published. Most business-card PCBs the author had seen used silkscreen and copper for contact details and a QR code, or added displays, batteries and inputs at the cost of thickness and price. Researching NFC business cards led to a key discovery: while most NFC chips use harvested energy only to run their own internal circuitry, a few, including the NXP NTAG I2C Plus and the STMicro ST25DV-KC, can take excess harvested DC voltage and route it out to power external hardware. This card uses that feature to power its own microcontroller and LEDs.

The first draft used an ATtiny412 MCU with four GPIOs driving 12 LEDs through Charlieplexing, a technique that exploits the one-way current flow of diodes so a small number of GPIOs can independently address many LEDs (the relationship is y = x times (x minus 1), where x is GPIO count and y is addressable LEDs). The ATtiny412 turned out to be a poor fit for assembly: it has only 5 GPIOs and comes only in taller SOIC/leaded packages, not the flatter QFN. The author switched to an ATtiny816, which has 17 GPIOs in a 3 mm by 3 mm QFN package, and to the NXP NTAG I2C Plus for its closer-range, higher-powered NFC standard. Six GPIOs on the ATtiny816 now drive 20 Charlieplexed LEDs plus one simple indicator LED wired straight to ground, for 21 LEDs total.

Power delivery required working around a datasheet limit. The NTAG I2C Plus datasheet states that VOUT should carry no more than 220 nF of capacitance, because a larger capacitor drops the voltage rail and can create an oscillating loop that never powers on. Wanting more smoothing capacitance anyway, the author added a 10 microfarad capacitor (C3) behind a P-channel MOSFET switch: a resistor (R3) limits inrush current to a few milliamps while C3 charges over about 120 milliseconds, after which the MCU pulls the MOSFET's gate low and gives C3 a low-impedance path to smooth the supply, satisfying both the datasheet's startup constraint and the desire for a bigger capacitor. Each Charlieplexed LED trace uses a 100 ohm resistor; at a 1 kHz PWM refresh rate and 20 percent duty cycle, the estimated VOUT drop is about 0.2 volts.

The antenna was tuned with STMicro's antenna inductance tool to sit close to 2.75 microhenries, so it resonates at 13.56 MHz against the NTAG chip's internal 50 picofarad capacitor; a 1.5 picofarad capacitor was added to allow tuning the resonant frequency lower if needed. Finding no KiCad plug-in that could generate a rectangular spiral antenna trace, the author wrote a custom KiPython script with help from an LLM and included the script in the public repo. The antenna deliberately leaves a gap at the top middle rather than forming a closed loop, to avoid eddy currents that a full loop would couple with the NFC field; the board also has no ground plane, since one would block the flux the antenna needs to work.

Thirty cards were ordered from JLCPCB, sized and thinned to match a credit card, with high-precision silkscreen and an ENIG, fully RoHS-compliant, lead-free finish. The marginal cost of each extra card was small enough that ordering thirty cost little more than ordering five. On first power-up, an LED wired across VCC and GND lit immediately with no antenna tuning required.

Programming uses three exposed pads on the back, GND, VCC and UPDI, ordered so a reversed connection causes no damage; each pad is 1.8 mm in diameter on the standard 0.254 mm (0.1 inch) breadboard pitch, letting a Pogo Pin Clip connect without adding hardware, and a TVS diode across UPDI and GND protects the MCU from static picked up in wallets and pockets. The ATtiny816 is programmed over UPDI, a single-wire variant of UART. Most Arduinos that support the needed jtag2updi firmware run 5V logic, incompatible with the board, so the author tried a Raspberry Pi Pico first; it produced nothing, even checked on an oscilloscope. An Adafruit UPDI Friend worked instantly. The firmware's main loop is hand-written bare-metal C rather than an Arduino sketch, so the Charlieplexed matrix can refresh as fast as possible and minimize flicker; the ATtiny is downclocked to 1 MHz to save power, and the code contains a hidden easter egg. The NTAG chip itself, not wired to the ATtiny over I2C, was written using NXP's TagWriter app after the more common NFC Tools app produced errors. Both the QR code and the NFC tag point to a redirect subdomain that currently forwards to the author's site but can be repointed through Cloudflare without any hardware change.

The author expects the current batch of thirty cards to last a while, and is considering a V2 with different LED colors (VOUT stays high enough for green or yellow), a button or two for interactivity, and possibly arcade-style games using a ring of LEDs. Summing up the project, the author writes that individually, none of the pieces are novel: NFC PCB antennas, blinky LEDs run by an MCU, and PCB business cards have all been done before. As far as the author can tell, no one had combined them into one design before this card; the archived text of the article breaks off in the middle of that closing sentence.

Key facts

  • The card has no battery: an NXP NTAG I2C Plus chip harvests DC power from a phone's NFC field and routes the excess out to run an ATtiny816 microcontroller and 21 LEDs.
  • Charlieplexing lets six GPIOs independently address 20 LEDs plus one indicator LED, following the formula y = x times (x minus 1) for GPIOs (x) versus addressable LEDs (y).
  • A 10 microfarad smoothing capacitor is switched in through a P-channel MOSFET after a 120 millisecond charge delay, working around the NTAG datasheet's 220 nanofarad VOUT limit that would otherwise stop the board powering on.
  • The antenna targets about 2.75 microhenries to resonate at 13.56 MHz against the NTAG chip's internal 50 picofarad capacitor, generated with a custom KiPython script since no KiCad plug-in could draw a rectangular spiral coil.
  • Thirty RoHS-compliant, credit-card-sized boards were ordered from JLCPCB; the author calls no individual technique novel and describes the project as the first known combination of them, though the article's own closing sentence is cut off in the archived text.

Why it matters

Most NFC tags use the energy they harvest from a phone's field only to run their own internal logic. This project relies on the smaller set of chips, here an NXP NTAG I2C Plus, that can route surplus harvested voltage out to external hardware, and uses that headroom to run a full microcontroller and an animated LED matrix rather than a passive tag. It is also a case study in scope creep from a simple learning goal: a project meant to teach KiCad basics ended up requiring RF antenna tuning, datasheet-constrained power electronics, and custom tooling.

Who it affects

This is a single hobbyist's project, not a product or company announcement. It is most directly relevant to electronics hobbyists and PCB designers interested in NFC energy harvesting, Charlieplexing, or antenna design in KiCad, and to anyone who might reuse the published KiPython antenna-generation script or the full bill of materials from the linked repository.

How to use it

The schematic, PCB layout, BOM, and the custom KiCad antenna-generation script are published in the linked repository, so the design can be studied or rebuilt by others. No price is given for the JLCPCB order, the individual components, or the finished card; the author only states that the marginal cost of each extra card was small. The card's QR code and NFC tag point to a redirect subdomain that can be repointed to any URL through Cloudflare without changing the hardware.

How solid is it

The write-up is a detailed first-person build log with concrete, checkable engineering choices: specific component values, a documented workaround for a datasheet constraint, and a computed estimate (about 0.2 volts) for the PWM-driven voltage drop rather than a vague claim. The author explicitly frames the achievement as combining known techniques rather than inventing new ones, and that framing is the author's own assessment, not an independently verified claim. The retrieved article text ends mid-sentence during the closing argument, so its final wording cannot be confirmed complete from this source.

Risks and caveats

No cost figures are given for the boards, components, or assembly, and no exact card dimensions are stated beyond matching a credit card's size and thickness. The write-up does not say how far from a phone the card reliably powers on, nor how the cards hold up over time beyond an expectation that the current batch of thirty 'should last a while.' The approach depends on a specific class of NFC chip that can export harvested power, a feature most NFC tags lack, so it does not generalize to arbitrary NFC hardware.

“Individually, nothing in this project is novel or even that complicated: NFC PCB antennas, blinky LEDs with an MCU, and PCB business cards have all been done before.”

— the card's maker, in the project write-up