Here are some notes for using the various RFID modules we have.

SparkFun ID-12 Innovations (125 kHz)

Product web page / datasheet

  • FTDI USB-to-serial adapter on SparkFun breakout board
    • Pin 01 (Vusb) to +5
    • Pin 10 (RX) to ID12 Pin 09 (TX)
    • GND to GND
  • ID-12 Innovations RFID reader on SparkFun breakout board
    • Pin 01 (GND) to GND
    • Pin 02 (RST) to +5v
    • Pin 07 (FS) to GND
    • Pin 09 (TX) to FTDI Pin 10 (RX)
    • Pin 10 (BZ) through 1K resistor to LED to GND
    • Pin 11 (5V) to +5v

Demonstration program in Processing

/* RFID Reader Demonstration
   based on Igoe, Making Things Talk, 1st ed, 310-313

   FTDI USB-to-Serial adapter on SparkFun breakout board
     Pin 01 (Vusb) to +5v
     Pin 10 (RX) to ID12 Pin 09 (TX)
     GND to GND

   ID-12 Innovations RFID reader on SparkFun breakout board
     Pin 01 (GND) to GND
     Pin 02 (RST) to +5v
     Pin 07 (FS) to GND
     Pin 09 (TX) to FTDI Pin 10 (RX)
     Pin 10 (BZ) through 1K resistor to LED to GND
     Pin 11 (5V) to +5v
*/

import processing.serial.*;

Serial myPort;
String tagID = "";

void setup() {
   size(600, 200);

   // set serial port to first on list and initialize it
   println(Serial.list());
   String portnum = Serial.list()[0];
   myPort = new Serial(this, portnum, 9600);
   myPort.buffer(16);

   // use third font available
   PFont myFont = createFont(PFont.list()[2], 24);
   textFont(myFont);
}

void draw() {
   background(0);
   text(tagID, width/4, height/2 - 24);
}

// read bytes from the serial port and put them into tag string
void serialEvent(Serial myPort) {
   String inputString = myPort.readString();
   tagID = parseString(inputString);
}

// read string and look for 10-byte tag ID
// assumes string begins with STX byte (0x02) and ends with ETX byte (0x03)
String parseString(String thisString) {
   String tagString = "";
   char firstChar = thisString.charAt(0);
   char lastChar = thisString.charAt(thisString.length() - 1);
   if ((firstChar == 0x02) && (lastChar == 0x03)) {
     tagString = thisString.substring(1, 11);
   }
   return tagString;
}