NFC R/W and Communication with smart phone [feasability]

Hi everyone,

First time poster here :slight_smile:
For my NPO I would like to build the following gadget:

A card logger, which reads Data from a user ID card (Name, ID Number, Organisation), displays the data on a screen and saves it temporarily. Temporarily meaning, that at the end of a session (after ca. 30min), the data should be read by a smartphone (over NFC or Bluetooth. I would prefer NFC as I already have a NFC connection and need to keep the cost as low as possible). The smartphone should then sync the read data with a database.
I can`t let the Arduino directly communicate with the database, as there is no Wifi connection at the palces where they will be used.

New to Arduino, I thought I would need the following components:

  • Arduino
  • Battery Pack
  • NFC component
  • storage unit?

However, I am not sure about the following points:

  • Can I let the Aduino and my smartphone communicate over NFC? (sending\receiving commands)
  • As the numbers of cards being read per time are only a few, each with 180 byte Data, is an EEPROM enough or do I need an extra storage unit?

Sorry for the noobish questions. I would really appreciate your expertise.


Keep in mind that not all smartphones support NFC.

What NFC are you using?

Yes I am aware of that. I figured, that it is mostly me, how needs to read the data, NFC would be enoughm but maybe I should choose Bluetooth.

Regarding NFC, for the Arduino I thought about something like this

The cards use an RFID tag.

If I understand correctly, what you want to do is

  1. User scan card on the reader(the card logger a.k.a Arduino)
  2. After 30min, smartphone reads the data in the logger?
  3. Sync the read data with a database

If so,

In (1), you can use NFC connected to Arduino to read the cards then, you can use bluetooth to transfer the data read, from the logger(Arduino) to a smartphone which completes point (2). I don't know about point (3) though.

Do you really need to read the data in the logger(Arduino) from a smartphone? If you can use a laptop, then there's no need of a bluetooth since Arduino can communicate with laptop through serial communication.

Thank you for your input!

Yes, the idea is as you described. However, there are no computers around, but all of the volunteers have a smartphone :confused:
Can't I communicate viy bluetooth serially?

You can if you are using HC-05/HC-06. They are bluetooth modules.

I am not really experienced either but in this kind of development, try to get your NFC communicate with Arduino first. Make sure you can read and write data into it.

Then, move on to get the bluetooth working. The bluetooth is connected to Arduino. Try making the bluetooth respond to your smartphone(send/receive data).

Then you can start combining both of the devices. Then move on to the next step.

I am speaking more in general guidance, but let's make it work steps by steps.

Thank you very much.

What would be the cheapest solution for storing data? EEPROM?

Are you going to store permanent data? How much data exactly?

Arduino EEPROM is not really big, you might need an external EEPROM if you really want to store permanent data.

What are you going to store actually?

Yes. I think I will have to store permanent data.

The cards I intend to use are


I expect around 40 entries, thus 40*180 Byte = 7200 Byte max.
I am in a really early stage of my project, thus don`t know yet how many bytes of the before mentioned card I will need.

The maximum memory the card can hold is 180 byte, but I doubt you would use the entire memory.

Again, what are you planning to store inside the card?

Oh sorry:

two strings containing a name each, three integer numbers (3bit, 4bit, 9bit) and one date (dd/mm/yyyy)

Are you planning to make the three integer numbers as the ID of the card?

Can you give a specific example of what you gonna store like

"Name1" "Name2", 001(like this?), 26/9/2017

For Example:

“Name1”, “Name2”, 1, 9, 200, 25/09/2017



becomes the ID of the card? If so, why the comma?

The card actually has 7 byte UID embedded in them, which is unique for every card.

Ah I see! Now I understand your question. One of these numbers (the 9 bit one) was thought to be the ID number. The other two numbers represent the number of people and a weekday (represented as a number 0-6).

But then I guess the UID is sufficient. But of course I would need those 7 byte as well.

Thank you for your help. I really appreciate it!

It's up to you how you design your system. You can use the three integers like you stated if the number represent anything.

But it would be better to use the provided UID and then store the integers to something you need(number of people, weekday, etc). This also consumes less memory on the card.

One thing to note is that if you are using Arduino UNO, the amount of EEPROM is 1kB. Assuming that each entry uses a maximum of 30 bytes, then you would have a total of (40x30) = 1200 bytes or 1.2kB which exceeds the available EEPROM. You can use use an external EEPROM or get a better board like Arduino MEGA.

But in the end, it's your responsibility to make the decision.

Thank you very much. The insight you gave me regarding the Arduino UNO / MEGA was the kind of I hoped for.