dynamic nfc business card

wifi/ble and nfc connected business card.

Similar projects worth following
0x0630ff PCB Business Card
Using ESP32-C3 + ST25DV16K

This handy creation is great for those looking for a job while needing to maintain two or more personalities or emails. Even if you only have one email or one phone number like most sane people, this device is still going to be a fun way to learn about NFC and low power device design. All while giving the smallest amount of effort trying to look like some high tech cyberpunk gizmo. To keep it as thin as possible, USB connectors were eliminated. In the next revisions, slimming the display connection and battery connections will be the priority. Programming will be done via UART connections broken out to through hole pins.

Goals for this device include
- Use as an NFC tag
- BLE and WiFi connection
- Update the NFC stored data via wireless or user input
- 3 button interface
- OLED display
- Longest possible battery life
- Re-chargable
- Ability to experiment with NDEF payloads for 7h3 h4ck3r 1n 4ll 0f u$.





Board thickness: 0.062" (1.6mm)

Layer count: 4

NFC Coil turn count: 10


    Left button: GPIO9 (Boot button)

    Center button: GPIO8

    Right button: GPIO3

    SDA: GPIO18

    SDL: GPIO19


Google Gemini helped provide a brief description of NDEF for me:

The Near Field Communication (NFC) Data Exchange Format (NDEF) serves as the foundation for communication between NFC-enabled devices. It defines a standardized structure  for encoding data onto NFC tags and facilitates the exchange of information during close-range interactions (typically a few centimeters). NDEF messages function similarly to data packets, encapsulating one or more records that specify the type and content of the information being transmitted.

Each NDEF record comprises two key components: a header and a payload. The header offers crucial metadata about the record, including its type (text, URI, etc.), length, and optional identification details. The payload itself contains the actual data being transmitted, which can range from simple text strings to more complex formats like URLs or contact information. By adhering to the NDEF structure, NFC devices can interpret the data correctly and perform the intended actions, such as launching a web page upon tag interaction.

  • 1 × ESP32-C3FH4 MCU
  • 1 × ST25DV16K NFC IC

  • Solved the NFC outputs on scan

    0x0630ff06/19/2024 at 06:00 0 comments

    After diving into the datasheet and Arduino Library (STM32duino ST25DV) for the ST25DV NFC tags, I was able to get output from the NFC IC's GPO pins as well as output transmitted power form the Energy Harvesting output pin. However, the energy harvested power level seems to be inconsistent and sometimes very weak. Unsure if i messed up a setting in the code or if it is something else. The output was able to light up an LED at the very least.

    The trick ended up being a setting written over i2c to the Energy Harvesting Config register and the GPO setup registers. Refer to the GPO and EN register sections to see which bits to set. See the code below for bits used in my example. They output energy when a field is present. 

    The code looks a bit like this:

    #include "ST25DVSensor.h"
    #include "ST25DV_IO/st25dv_io.h" // arduino library for st25dv

    {     // attach interrupt to GPO pin pinMode(NFC_GPO_PIN, INPUT_PULLUP); attachInterrupt(NFC_GPO_PIN, nfc_tag_cb, RISING);     // enable Energy Harvesting output st25io.ST25DV_i2c_ConfigureGPO(0b10001000); st25io.ST25DV_i2c_WriteEHMode(ST25DV_EH_ON_DEMAND); }

    It just occurred to me that I should have routed the energy harvesting output to the charging circuit so that I could put this device on any NFC enabled wireless charging pad and add some juice to the battery. I went ahead and tried that, however I am not sure if the Energy harvesting output is going to generate enough power. The charge light sure doesn't turn on. I will try other things at a later date.

    I don't plan to order a rev2 of this board (definitely not in time for the contest) because I am contemplating changing things up for this idea and using the PN7150 reader/writer IC instead to open the door for even more NFC fun, just as someone else in the contest has also done. I have a breakout board I designed a while back using the PN7150 but didn't use it due to having mediocre antenna performance. This path seems much more interesting to me. 

    Stay tuned to see how this journey goes as it changes to a read/writer as well as tag emulator. 

  • Adding display and battery power.

    0x0630ff06/10/2024 at 17:05 0 comments

    Did anyone really think there would be zero mistakes?

    Turns out I got the display pins rotated the wrong way, oops....

    The device is shown running a test sketch that cycles through some preset NDEF messages to update the NFC data with. Left and right buttons change the URI message and the center button commits the data to the IC. By using the proper URI protocol, the receiving device can recognize phone numbers to call, emails to send a message to, and URLs to open in the default browser with.

    I added some jumper wires to get the display spun the right way. Looks alright enough to keep going with rev1 of this project. Adds a lot to the thickness unfortunately. In the end, this will be soldered in place as flat as possible. It looks much nicer top down where you cannot tell how tall the display sits. 

    Here is a side view of the device. the battery is much thicker than the end goal but for testing this is working out well. It fits in my pocket without any problems (aside for being stabbed by the programming pins still soldered in place). The battery can be charged via the programmer's input power pin. The end goal is to find a paper thin Li-Po for the bottom side to keep the entire thickness down (I found a company "PowerSteam" that offers some viable choices). Obviously, getting the display connection correct will also help reduce that thickness. 

  • need to figure out power problem

    0x0630ff06/01/2024 at 03:35 0 comments

    Unsure exactly what the issue is. Unable to get enough power through the UART TTL programmer into the charge and regulator circuit. Bypassing the charge circuit for the time being to work on programming the device and ensure all parts are working as expected. I know the programmer isn't intended to deliver a lot of power but surprised this isn't working since I used an identical circuit in other functional projects. Could be component selection. Will explore this later. Also planning to use pogo-pins for programming (4 pin header for now...)

    The on off switch I chose is easily stuffed up with flux after some rework. Boot button also seems to occasionally have this issue as well. Will need to be careful when doing rework, or buy extra parts.. 

    I was successfully able to update the NFC chip via i2c from the ESP32-c3 to share URL data. Hoping to spend time learning more about the various messages able to share using NDEF.  It is covered by the display once everything is soldered. Initial tests will use a board to board connector just in case I need to rework the NFC IC, however it seems to work fine, so far...

  • The boards are here!

    0x0630ff05/22/2024 at 05:29 0 comments

    PCB's arrived. Still waiting for ESP32-C3 and ST25dv16k IC's since JLCPCB didn't have the specific part number I planned to use. Those should arrive tomorrow and I will solder them on as soon as possible. Crossing my fingers this works right away....

  • 20240519

    0x0630ff05/20/2024 at 04:26 0 comments

    PCBA ordered. ETA ~5 days.

View all 5 project logs

Enjoy this project?



ap0l0 wrote 05/28/2024 at 18:48 point

what's the range of the NFC antenna? can you share a video of a phone getting close to it 

  Are you sure? yes | no

0x0630ff wrote 06/01/2024 at 03:17 point

Hi @ap0l0 I am able to get a reading from up to 3-4 cm away using a smart phone. I will try to get a video uploaded soon.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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