Close
0%
0%

Harvesting NFC Energy to Transmit Commands

Using NFC RF energy harvested from a phone tap to submit commands and start a microcontroller. No standby power.

Public Chat
Similar projects worth following
Cell phones are everywhere — and most of them are capable of radiating a 13.56 MHz field for NFC (near field communication) — and for energy harvesting! This project harvests that RF energy to transmit a command and write it to the eeprom of a chip, no other power source involved in the data transmission. A tap couples energy into a tuned antenna, powering an ST25DV04KC NFC chip entirely from the RF field. The harvested energy is used to write a command payload to the chip's EEPROM and assert a wake signal. The ST25 then wakes a Raspberry Pi Pico, powered by batteries, which reads the command over I²C and acts on it — in this demo by blinking an LED fast or slow depending on the input defined by a simple Android app. Of course, that is just a demo - I'm also used this to trigger a more complex epaper update with inki https://github.com/c0de111/inki, see https://youtu.be/uki8xeUsLtA Standby power: effectively zero. No active components powered, no quiescent current — just leakage.

## Hardware

The heart of the circuit is the **ST25DV04KC** — a NFC/RFID chip with an I²C interface. It sits between the phone's RF field and the microcontroller, handling energy harvesting, EEPROM storage, and wake signaling entirely from harvested power.

The ST25 includes a fixed internal capacitor of 27.5 pF (typical) between its antenna inputs AC0 and AC1. A hand-wound loop of 6 turns of enameled wire with ~50 mm diameter that provides good coupling to the cell phone yields roughly 3 µH, which with the internal cap alone resonates around 16–19 MHz — above the 13.56 MHz NFC target so that we can tune the antenna into resonance. The external trimmer capacitor C2 is used to tune the circuit into resonance at 13.56 MHz. The circuit has all the tools for that onboard: a dedicated tuning firmware samples the harvested voltage V_EH continuously via the Pico ADC and renders a live bar graph over USB serial into the terminal, making antenna optimization straightforward. An ascii tuning tool! Below you see a video capture of me tuning the trimmer cap across resonance, my cell phone with a generic nfc app is at a constant distance to the antenna during tuning.

The **wake/latch circuit** uses a P-MOS high-side switch (TSM260P02CX) to gate battery power to the Pico. The ST25 GPO pin — open-drain, powered from the RF field — pulls the gate low on an EEPROM write event, switching the Pico on. The Pico immediately latches itself via a small NPN (MMBZ390A) to hold power through the command execution, then releases the latch when done.

The PCB breaks out three functional areas: the NFC tag and antenna matching network (center), the power switching and latch circuit (left), and an energy harvest output header (right) for measuring or using V_EH directly.


I also used this to wake up my epaper display device inki, as for example to display a custom message: 


NFC_exploration_board.pdf

KiCAD board

Adobe Portable Document Format - 27.30 kB - 04/22/2026 at 15:51

Preview

NFC_exploration_schematic.pdf

KiCAD schematics

Adobe Portable Document Format - 45.78 kB - 04/22/2026 at 15:49

Preview

  • 1 × ST25DV04KC NFC energy harvesting chip, SOIC-8
  • 1 × TSM260P02CX P-ch MOSFET, power switch, SOT-23
  • 1 × MMBT3904 NPN transistor, latch, SOT-23
  • 1 × Trimmer capacitor, antenna tuning JZ400
  • 1 × Raspberry Pi Pico W

  • Tap to book a room — powered by your phone's NFC field

    caspar04/22/2026 at 16:25 0 comments

    Here's a real-world use case for this project: an ePaper room sign that you can book with a phone tap. No button, no active radio on the device side, the inki door sign does not need to be powered at all.

    For this I put the NFC test circuit into an inki device (https://github.com/c0de111/inki). Used with seatsurfing (https://github.com/seatsurfing/seatsurfing) it shows automatically the current room status — free or booked, who has it, until when. Between automatic updates, the Pico W is completely off. The image stays on the ePaper without any power. For details also see https://hackaday.io/project/203726-inki-low-power-wireless-epaper-device

    **What happens when you tap**

    1. The ST25DV04KC NFC chip wakes powered from the phone's 13.56 MHz RF field — no current from battery
    2. The Android app writes a 16-byte command to the chip's EEPROM: opcode 0x10 (Book Seat) + your user name
    3. The chip's GPO pin fires — the P-channel MOSFET switches on — the Pico W boots
    4. The Pico reads the command over I²C, extracts the user name
    5. It connects to Wi-Fi and sends a booking request to the seatsurfing server
    6. Booking confirmed → the Pico refreshes the ePaper with the new state: your name, booking duration
    7. The Pico releases its power latch — the MOSFET cuts power — system is off

    The ePaper holds the updated booking display without any power.

    **Idle: Almost nothing**

    The trigger and the energy for this entire transaction came from the phone's RF field. The device contributed no power to being "ready" for a tap — because there is no standby. Not sleeping, not polling — off. Apart from leakage and pull-up currents, the only quiescent draw is the RTC. With an RV-3028, that's 45 nA. A set of AA batteries sustains thousands of wakes.

    Active cycle time: roughly 5–8 seconds (Wi-Fi connect + API call + ePaper refresh). Then off again — until the next tap, an RTC alarm, or another wake source.

  • Drawing on your phone, displaying on ePaper via NFC

    caspar04/19/2026 at 13:42 0 comments

    The idea of this project is to harvest NFC Energy to transmit commands. A command is typically a few bytes. So — how far can we push it?

    With the chip at hand, up to 512 bytes, as it turns out. Enough for a 62×62 pixel image, drawn with my finger on my phone screen, packed as a 1-bit bitmap, and transferred entirely over NFC — powered by nothing but the phone's RF field. No cable, no Wi-Fi, no power from the device side. Pixel art - well, not if I do the drawing, as you can see ;) Below the rough Android app. 

    The test setup (see video): The Pico W is completely off, no power, no polling, no sleep mode — just a dead circuit waiting for something to happen. Then I approached my phone with the NFC field active.

    The ST25DV NFC chip wakes from the phone's RF field, powered entirely by it. The Android app writes the 62×62 pixel bitmap — drawn with my finger on the phone screen, see above — into the chip's EEPROM over NFC. The chip's GPO pin fires. A P-channel MOSFET switches on. The Pico boots, reads the image from the chip over I2C, and refreshes the ePaper display. Then it cuts its own power and goes back to drawing negligible current.

    The phone carried the energy. The device carried no listening burden.

    **How the image transfer works**

    The drawing canvas in the Android app is a 62×62 pixel grid — matching the NFC payload capacity of the ST25DV04KC. Each pixel is one bit. The full image fits in 481 bytes (62 × 62 / 8), well within the chip's 512-byte EEPROM.

    When you tap the phone to the chip:
    1. The app writes the 481-byte pixel bitfield to the chip EEPROM 
    2. It then writes a 16-byte "INKI" command header at the end of the EEPROM, with opcode 0x30 (Draw Image)
    3. The header write triggers the GPO pin — waking the Pico
    4. The Pico reads the opcode, fetches the pixel data from the chip, decodes the bitfield, and renders it on the ePaper display

    The ePaper then holds that image indefinitely — no power required to maintain it.

    **Idle: Almost nothing**

    The NFC subsystem draws no current from the battery when no phone is present. The ST25DV is powered by the phone's 13.56 MHz RF field. The Pico is completely off between interactions. The ePaper holds its image without power.

    Apart from leakage and pull-up currents, the only quiescent draw is the RTC. With an RV-3028, that's 45 nA. A set of AA batteries sustains thousands of wakes - see inki project (https://github.com/c0de111/inki).

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates