RFID  stands for Radio frequency identification. It is the use of a wireless non-contact system that uses radio-frequency electromagnetic fields to transfer data from a tag, for the purposes of automatic identification and tracking. Some tags require no battery and are powered by the electromagnetic fields used to read them. There are many frequencies that are used but the ones that are most interesting to the arduino user is the 13.56MHz, 125kHz (and 134kHz used in animal tracking). For the 125kHz and 13.56kHz frequencies there are commercial readers for sale.

http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/rfid/List/0/SortField/4/ProductID/688/Default.aspx
http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/rfid/List/0/SortField/4/ProductID/114/Default.aspx
These are RFID shields operating at 125kHz. One is read only the other is read and write. There is quite a lot of ready made software which can read the info from the cards.
http://www.priority1design.com.au/em4100_protocol.html has a good description of the EM4100 protocoll.
The read write protocoll  called T5557 can be found here. http://www.priority1design.com.au/t5557_rfid_transponder.html

RFID parallax readRFID parallax readwrite
I also have written a small article on the sign-advancetech shield at 13.56Mhz which you can find here.

Besides the arduino shields there are also many USB type readers you can get.
The Touchatag one http://www.touchatag.com/e-store which seems to have gone bust.
http://www.stronglink-rfid.com/en/rfid-modules/sl015m3.html
http://www.stronglink-rfid.com/download/SL015M-3-User-Manual.pdf
The Violet Mir:ror on which i have written an article here describing how to connect to the USB host shield.
This should be possible to do also for the Touchatag.
There is also this PN532 chip based reader here. This looks like a really good one and open source. I should really get one.
http://www.seeedstudio.com/wiki/index.php?title=NFC_Shield

Here is the place where you can download the libnfc library and the instruction about installing it.
http://code.google.com/p/libnfc/downloads/list
http://www.mysecondplace.org/?p=329
Touchatag driver software you can get below. Touchatag is the same as the ACR122U102. It uses the NFC chip: PN532/104 model for which there is no public datasheet. (just some info)
http://www.classic.nxp.com/acrobat_download2/literature/9397/75016623.pdf
http://www.touchatag.com/downloads

Here are some very similar readers all having the same hardware.

RFID NFCRFID tikitagRFID touchatag

You can visualize the RFID UID from the tags with a processing sketch.
Here you can see the output from the sketch with libnfc version 0.1.0 and one reader connected.
It also shows that there are three different RFID cards visible to the reader and their UID numbers.

RFID processing output

Here you can see the software responsible. You also need to download the appropriate libraries which you can get from the link.
Simply add them to the processing library and use the sketch enclosed which you can see below.

[spoiler]

import touchatag.*;

Touchatag rfid;
PFont font;

// Defines the maximum number of touchatag
// readers that might be connected to the computer 
int numOfReaders = 3;

// This library affords up to three touchatag
// tags on each of the touchatag readers
String[][] tags = new String[numOfReaders][3];

void setup() {

  // Optinally, if only one touchatag reader will
  // be used: rfid = new Touchatag(this); 
  rfid = new Touchatag(this, numOfReaders);

  font = loadFont("Verdana-10.vlw");
  textFont(font);

  size(800, 400);

  rectMode(CENTER);
  stroke(0);
  fill(125);
}

void draw() {
   background(255);
   text ("RFID",50,50);
   text (rfid.version(),50,100);
   // Gets the number of touchatag readers connected
   int numReaders = rfid.On();
   text (numReaders,50,150);
   if (numReaders != 0) {
     drawReaders(numReaders);

     // Gets the tags for each of the touchatag readers
     for (int i = 0; i < numReaders; i++) {
       tags[i] = rfid.tagsOnReader(i);
       drawTags(tags[i], i);
     }  
   }
}

// Draws a small square for each of
// the touchatag readers connected
void drawReaders(int num) {
  for (int i = 1; i <= num; i++) {
    rect(i * 200, 100, 50, 50);
  }
}

// Writes the list of tag IDs 
// present on a touchatag reader
void drawTags(String[] tagList, int pos) {
  for (int i = 0; i < tagList.length; i++) {
    text(tagList[i], (pos + 1) * 175, (i * 10) + 150);
  }
}

[/spoiler]

 

Some articles about RFID

http://www.marktrace.com/en/product-detail-17.html
http://www.seeedstudio.com/wiki/index.php?title=13.56Mhz_RFID_module_-_IOS/IEC_14443_type_a
http://www.nermal.org/projects/catalog/
http://www.parallax.com/Store/Microcontrollers/BASICStampModules/tabid/134/ProductID/114/txtSearch/rfid/List/1/Default.aspx?SortField=ProductName,ProductName
http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/rfid/List/0/SortField/4/ProductID/688/Default.aspx
http://www.gumbolabs.org/2009/10/17/parallax-rfid-reader-arduino/
http://www.thaieasyelec.net/index.php/RFID/13-56Mhz/Pia-931a-XA5-RFID-13-56a-MHz-Read-/-Write-Module-Multi-Standard-Long-Range-/p_204.html
http://www.thaieasyelec.net/archives/Manual/RFID%20Sheild%20Arduino.txt
http://www.thaieasyelec.com/RFID-NFC/RFID-13-56MHz-Read-Write-Mifare-Module-RS232.html
http://www.seeedstudio.com/wiki/index.php?title=NFC_Shield
http://www.codeforge.com/read/72828/fm1702slspi.c__html

Here you can find my other arduino projects.

 

Leave a Comment