ID-12 (RFID)

The ID-12 is an easy to use 125kHz RFID receiver. It sends the ID to a serial port of any tag that is close. I got mine from SparkFun for $30. The RFID Reader Breakout and a couple 2mm Sockets make experimenting easier. SparkFun has also various 125kHz EM4001 tags in different sizes and shapes, like a credit card sized, a button, and a glass capsule.

Connecting the ID-12

It is good to read the complete ID-12 Datasheet , but here is a summary. At the very least 5 connections are necessary:

ID-12 ID-12 To Arduino or FTDI
1 GND GND
2 RST 5V
7 FS (Format Selector) GND (ASCII Output)
9 D0 (Data 0) RXI
11 5V 5V

The information can be sent in different output formats. The easiest is the ASCII mode, which is enabled by connecting the Format Selector to GND. In ASCII mode the baud rate is 9600 and each transmission is 16 bytes long. Each ID byte is encoded in ASCII hex code, so for example 0x42 is sent out as "42", which is 0x34 0x32.

The transmission starts with the STX (Start of Text) ASCII character 0x02, followed by a 5 byte ID (10 ASCII characters), a 1 byte check sum (2 ASCII characters), CR (Carriage Return) 0x0D, LF (Line Feed) 0x0A, and ETX (End of Text) 0x03:

STX 0x02h ID Data (10 ASCII) ID Check Sum (2 ASCII) CR 0x0D LF 0x0A ETX 0x03

The 1 byte check sum is the XOR (exclusive or) of the 5 ID bytes. To check if a transmission is valid the program can either XOR the 5 ID bytes and compare it to the 1 check sum byte or it can just XOR the 5 ID bytes and the 1 check sum byte and the result should be 0x00.