Arduino RFID tutorial

Home/Arduino Projects/Arduino RFID tutorial

Arduino RFID tutorial

Are you interested in an Arduino RFID tutorial? In this video we take a look at the RFID RC522 reader and writer, and we learn how to use it with Arduino. We also use an OLED display to read the UID of the RFID tags. Let’s start!

Arduino RFID tutorial

Today we are going to build a very interesting project. For the first time we are going to use RFID tags with Arduino.

I have built a simple project which reads the Unique ID (UID) of each RFID tag we place close to the reader and displays it on this OLED display.

If the UID of the tag is equal to a predefined value that is stored in Arduino’s memory, then in the display we are going to see the “Unlocked” message.  If the Unique ID of the card is not equal to the predefined value, the Unlock message won’t appear. Cool isn’t it?

How RFIDs work?

Each RFID tag, has a small chip inside. If I place a flashlight under this RFID card you can see the small chip and the coil that surrounds it.

This chip does not have a battery in order to get power. It receives power from the reader, this device, wirelessly using this big coil. The reader can read an RFID card like this one from a distance up to 20mm! The same chip exists in this type of RFID tags as well.

Each RFID tag has a unique number that identifies it. That’s the UID that we display on the OLED display. Except from this UID, each tag can store data. In this type of cards we can store up to 1K of data! Impressive isn’t it?

We won’t use this functionality today but will do so in a future video. Today, all we are interested in is to identify a specific card by its UID. The cost of the RFID reader and these two RFID cards is around $4. Let’s see how to build this project.

The parts needed in order to build this project are these:

——————–
WHERE TO BUY
——————–

Arduino Uno: http://bit.ly/Cheap_Uno

RFID module: http://bit.ly/2dvWew1

OLED display: http://bit.ly/OLED_DISPLAY

Breadboard: http://bit.ly/SmallBreadboard

Wires: http://bit.ly/Wires3InOne

Power Bank: http://bit.ly/PowerBank_XiaoMi

Full disclosure: All of the links above are affiliate links. I get a small percentage of each sale they generate. Thank you for your support!

Arduino RFID tutorial – The connection

The connection with the Arduino Uno board is very simple. At first let’s connect the power of both the reader and the display. Be careful, the RFID reader must be connected to the 3.3V output of the Arduino Uno or it will be destroyed.

Since the display can also work at 3.3V we connect the Vcc from both modules to the breadboards positive rail. This rail is then connected to 3.3V output of the Arduino Uno. Next we connect both GNDs to the breadboard GND rail. Then we connect the GND rail of the breadboard to Arduino GND.

The RFID reader module uses the SPI interface in order to communicate with Arduino. So we are going to use the hardware SPI pins of the Arduino UNO.

RST pin goes to digital pin 9. IRQ pin stays unconnected. MISO pin goes to digital pin 12. MOSI pin goes to digital pin 11. SCK pin goes to digital pin 13 and lastly SDA pin goes to digital pin 10. That’s it. The RFID reader is connected.

We now have to connect the OLED display with Arduino using the I2C interface. So, the SCL pin of the display goes to Analog Pin 5 and SDA pin of the display to Analog Pin 4. If we now power up the project and place an RFID card close to the reader we can see that the project is working fine! Now it’s time to take a look at the code of the project.

Arduino RFID tutorial – The code

In order the project code to compile we need to include some libraries.

First of all we need the MFRC522 Rfid library. In order to install it, go to Sketch -> Include Libraries -> Manage libraries. Search for MFRC522 and install it.

We also need the Adafruit SSD1306 library and the Adafruit GFX library for the display. Install both libraries with the same procedure.

The Adafruit SSD1306 library needs a small modification. Go to the Arduino -> Libraries folder, open the Adafruit SSD1306 folder and edit the Adafruit_SSD1306.h library. Comment line 70 and uncomment line 69. Our display has a resolution of 128×64, that’s what we are defining here.

Now we are ready to take a quick look at the code.

At first we declare the value of the RFID tag that we want the Arduino to recognize. It is an array of integers.

Next we initialize the RFID reader and the display. After this, in the loop function we check for a tag on the reader every 100 ms.

If there is a tag on the reader we read its UID and we print it on the display. Next we compare the UID of the tag we just read, with the value that is stored in the code variable. If the values are the same, we display the UNLOCK message, else we don’t display this message.

Of course you can modify this code in order to store more than 1 UID values in order the project to recognize more RFID tags. This is just an example. As always you can find the code of the project in a link in the description of the video.

Arduino RFID tutorial – The code

As you can see with a very low cost we can add an RFID reader to our projects. We can easily build a security system with a reader like this one or build more fun projects. My main intention is to build some interactive games for kids using this RFID reader and a lot of RFID tags. In a future video we will also try to write and read data from an RFID tag. At this point I would love to hear your opinion about this RFID card reader. Do you plan to use it in any of your projects? Please post any comments or ideas in that comments section below, thanks!

——————–

CODE OF THE PROJECT
——————–

Download

 

 

 

——————–

SUBSCRIBE ON YOUTUBE

——————–

Never miss a video: Subscribe to educ8s.tv

2017-03-30T11:57:51+00:00

2 Comments

  1. Gabrielle March 31, 2017 at 11:34 pm

    Thanks I’ve been looking for this!

  2. Ardu August 30, 2017 at 10:06 pm

    Hello, I try to upload this code to my Arduino UNO but I have a problem. The program send me a error, like this:

    Arduino:1.8.4 (Mac OS X), Tarjeta:”Arduino/Genuino Uno”

    El Sketch usa 16984 bytes (52%) del espacio de almacenamiento de programa. El máximo es 32256 bytes.
    Las variables Globales usan 1181 bytes (57%) de la memoria dinámica, dejando 867 bytes para las variables locales. El máximo es 2048 bytes.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
    Problema subiendo a la placa. Visita http://www.arduino.cc/en/Guide/Troubleshooting#upload para sugerencias.

    Este reporte podría tener más información con
    “Mostrar salida detallada durante la compilación”
    opción habilitada en Archivo -> Preferencias.

    I´m not understand this, you can help me please?

    I´m spaniard, I´m sorry for my bad English.

    Thank you very much

Comments are closed.

Close