Arduino RFID shield

By on February 27, 2012
Pin It

This shield could be used as a stand-alone transponder key, or with Google’s servers to create a cloud-computing application.


It’s time to present you an application with RFID. We want to show you how to use the popular Arduino to produce a device capable of recognizing passive transponder (TAG). But this is not the usual RFID key, because the system can activate a relay if a recognised TAG is read, but also we took the opportunity to make an application that use cloud-computing. The basic version, which is a simple key relay consists of an Arduino (Duemilanove or UNO) and the RFID shield based on a ID-12 of Innovations: placing a transponder already learned, the relay is activated.
The extended version of our project uses an Arduino, the RFID Shield and the Ethernet Shield with which we can access the Internet and stored, using the Google Docs service, the transponder data.

The RFID shield
But before you see the applications in detail, we spend some words on the shield for Arduino that we need to capture data of passive TAG. It is a very simple circuit based on the form ID-12 , which contains a complete recognizer of passive transponders, in addition to a relay controlled by Arduino and a few other passive components. The buzzer, which allows you to set an audible alert, could be controlled by ID-12 or by Arduino.

The relay is powered by Vin Arduino (and the corresponding contact of the shield) and GND. The base of the transistor that controls RL1 is driven by the pin 9 of the Arduino. The lines 6 and 8 control the lighting of the LEDs.
In our case, the pin 7 of ID-12 is connected to ground, so the chip will only recognize ASCII coded tag and return its output in ASCII characters.

The component has a TTL level serial interface, accessible from it’s pins 9 and 8, then there is an output (pin 10) that pulses rapidly (at a frequency of 3 kHz) every time the module detects the code of a tag encoded and used to drive a buzzer or a light emitting diode.
All data are read from Arduino using the library NewsoftSerial that allows to emulate a serial port; in our case, the emulation is carried on lines 7.

How it works

Once you put power to the system, when the module ID-12 reads a tag, the pin 10 pulse at 3 kHz and the Arduino read s data; then microcontroller compares the code with those who has in memory.
If the transponder is one of those already learned the micro actives the relay and the green led. This relay will be used to control an electric lock, a gate, etc..
In bistable mode, the relay changes state each time the ID-12 reads a valid tag.
Clearly, the circuit can work well if in his memory there is at least a RFID tag.

To learn the code for a tag and then write it to EEPROM, you must press and hold button P1 for 3 seconds (max. 5), once that is done you have to pass a card and wait for the confirmation sound (given by buzzer) and light (provided by the green LED).
At any time you can remove a tag code from memory: must press the P1 button for 5 seconds or longer, until the red LED lights on. At this point you release the button and pass the tag to be deleted, if the LED turns off and on again, the card has been deleted.
To erase the entire EEPROM you must restart the Arduino, and during the reboot, hold down the button P1 for about one second; when the red LED lights up. Done this, Arduino is ready to read new tags.


R1: 330 ohm
R2: 330 ohm
R3: 4,7 kohm
R4: 10 kohm

LD1: Led 3 mm green
LD2: Led 3 mm red

BZ1: Buzzer

T1: BC547

RFID1: ID-12

RL1: Relé 12V

P1: Microswitch 90°

D1: 1N4007

– Screw 3 poli
– Jumper (2 pz.)
– Strip male 3 via (2 pz.)
– Strip M/F 6 via (2 pz.)
– Strip M/F 8 via (2 pz.)




Send data to Google

Our system may be facing a network and on the web to secure the cooperation of the Google Docs service. It only works if we add an Ethernet Shield.
Our online application proposes to use a Google Spreadsheet document (spreadsheet on Google Docs, anyway …) in which Arduino transcribe the codes read from valid cards. The only condition for accessing the service has to be registered, or have a Google account (eg Gmail), if you have not, open it: it is free and gives you the opportunity to have a mail box and many other free services offered by Google.
In practice, our system does not directly access to the spreadsheet, but sends the data using a form (form). We write a post to explain how to connect Arduino to Google Docs. All the results of a module is imported in the corresponding sheet, from which can be viewed by authorized users, or by anyone in possession of the link, if we remove the protection.



[Thanks to Andrea Fainozzi]

About Boris Landoni

Boris Landoni is the technical manager of Skilled in the GSM field, embraces the Open Source philosophy and its projects are available to the community.


  1. D.

    June 19, 2012 at 5:50 PM

    dov’è possibile acquistare tale shield? Grazie,

    where i can buy this shield? Thanks,


  2. Angelo

    November 13, 2012 at 7:31 PM

    Quale è la distanza massima alla quale è possibile leggere il tag?

  3. Pingback: Arduino RFID shield | Arduino, Netduino, Rasperry Pi! |

  4. Pingback: A stand-alone access control with RFID | Open Electronics

  5. Andreas

    March 6, 2014 at 3:38 PM

    Where is the antenna for the RFID reader?

    • BorisLandoni

      August 2, 2014 at 10:18 AM

      Inside the ID12

  6. Matteo

    July 16, 2014 at 5:13 PM

    Hi, very beautiful project!
    I copy the sketch for “RFID shield Google”, but when click to “verify” , Arduino IDE 1.0.3, say that there are some errors in ethernet function!
    I use a SoftwareSerial.h, because NewSoftSerial.h don’t work on IDE 1.0.3.
    I read the article “How to send data from Arduino to Google Docs Spreadsheet”, and I follow the posts of Igor Kovba for Ethernet.h, but I do not know where I insert the other string of Ethernet command.

    Thank you!!

    • BorisLandoni

      August 2, 2014 at 10:21 AM

      Have you tried to use the last version?

      • Matteo

        August 11, 2014 at 3:31 PM

        I used the softwareserial.h library not the newsoftserial.h!! The problem now, is that Google modify the Google Form, where I found it? Which one line I select to send a data from Arduino to Google in Google form? There is another way to send data from Arduino + Ethernet shield + RFID shield to a database?
        Thank you!!

  7. Matt

    January 2, 2015 at 10:57 PM

    its seems as though the transistor on my shield is not working? anyone else experience this issue?

Leave a Reply