125 kHz RFID Tag Reader

Introduction

This RFID reader works with 125 kHz tags in credit card size shape cards and with 125 kHz key fobs (Figure 1). The EM4100 protocol is used. When you approach an RFID Tag close enough (4-5 cm) to the reader's coil (L1) the reader will read the 10-digit unique ID of the Tag and transmit it as ASCII characters trough the serial output with 2400 bits per second.

Figure 1. RFID reader works with 125 kHz RFID tags.

The circuit includes a buzzer that beeps when a Tag is read successfully (Figure 2).

Внешний вид модуля RFID считывателя
Figure 2. RFID reader.

 Schematic of the circuit (Figure 3).

Принципиальная схема RFID считывателя.
Figure 3. RFID Reader Schematic Diagram.

Description

I will try to explain with simple words how the RFID works. The Atmel ATtiny13 uses the PWM function to produce an 125 kHz square wave signal. This signal comes out from PB0 pin. On the falling edge of the PB0 (Logic '0'), the T1 does not conduct.So the L1 is energized from R1 (100 ohm) with +5V. When PB0 pin is rising (Logic '1') the T1 is conducting and one side of L1 goes to GND. The L1 goes in parallel with C2 creating an LC oscillator (Figure 4). These transitions of L1 to logic '1' and logic '0' are made 125000 times in one second (125 kHz).

Принципиальная схема RFID считывателя.
Figure 4. The 125 kHz waveform that is transmitted from L1 and C2 components.The 125 kHz waveform that is transmitted from L1 and C2 components.

The RFID reader provides energy to the transponder (Tag) by creating an electromagnetic field. The energy transmission between the RFID reader and the Tag is the same as transformers convert the voltage from the 220V AC power network to 12V AC, based on the magnetic field that creates the primary coil. In our case the primary coil is the RFID reader and the secondary coil is the RFID tag. The only difference is that on RFID circuits there is no iron core between the two coils (one coil is on the reader side and the other coil is in to the RFID tag). The D1 ,C3 and R5 components constitute an AM signal demodulator (AM = Amplitude Modulation) .

Data communication between Tags and reader.

How Tags communicate with the reader? The idea is simple, but very clever! When the Tag wants to send a logic '0' to the reader it puts a "load" to its power supply line to request more power from the reader. That will make a small voltage drop on the RFID reader side. That voltage level is logic '0' (picture 4). Simultaneously, as long as the reader transmits the 125 kHz signal it reads the voltage of the transmitted signal trough the filters D1, C3 and R5, C1. When the Tag drops the voltage as we said before, the reader reads this voltage drop as logic '0'. When the Tag doesn't require any additional power, it doesn't make a voltage drop. That is logic '1' (picture 4). The 'Ones' or 'Zeros' length depends on the serial transmission data rate. For example, for 125 kHz carrier frequency we don't have 125000 bits per second data transmission! The data transmission from Tag to the reader varies from 500 bits per second up to 8000 bits per second.

Внешний вид модуля RFID считывателя
Figure 5. Snapshot of transmitted data  ...10101...

The RFID tag content (Figure 6).

Внешний вид модуля RFID считывателя
Figure 6. 125kHz RFID tag transmits 64 bits.

    The 125kHz RFID tag transmits 64 bits.

  1. The first 9 bits are the start communication bits ( always '1' ). 
  2. The next 4 bits are the Low Significant Bits of the customer ID(D00,...,D03).
  3. The next 1 bit (P0) is the Even parity bit of the previous 4 bits .
  4. The next 4 bits are the High Significant Bits of the customer ID (D04,...,D07).
  5. The next 1 bit (P1) is the Even parity bit of the previous 4 bits.
  6. The next 4 bits are first part of the 32-bit Tag's serial number (D08,...,D11).
  7.  ...
  8. The PC0 bit is the Even parity bit of bits D00, D04, D08, D12, D16, D20, D24, D28, D32 and D36 (the bits on the same column).
  9. The PC1, PC2, PC3 bits represent the parity bits of the next 3 columns.

The data verification is been done from ATtiny13 by calculating the Even parity bit of each line and each column with the parity bits that had been received form the RFID Tag transmitted data.

Constructing the coil

The coil has 120 mm diameter and 58 turns. Just in case leave more copper wire for additional 2-3 turns (60-61 turns total). To achieve maximum distance between the RFID Tag and reader (between Tag and reader's antenna-coil) you need to calibrate the coil. If you connect an oscilloscope to the point that R1 and L1 are connected you will see the red marked spot of noising on the left picture. That is  a sign that L1 must be calibrated (Figure 7).

Принципиальная схема RFID считывателя.
Figure 7. To achieve maximum distance between the RFID Tag and reader you need to calibrate the coil.

How can you calibrate the L1 ?

    Power on the RFID reader and:

  1. After you connect an oscilloscope probe to the R1, L1 connection point try slowly to remove or add more cooper wire (more or less turns) to the coil until the noise will be eliminated.
  2. If you don't have an oscilloscope then try to move your RFID tag close to the L1 until the tag will be recognized by the reader. If your Tag will be recognized to the distance of 2 cm from the L1, try to add more turns (more cooper wire) to L1 to see if this time your Tag will be recognized from longer distance (3 cm for example).

Try the same by removing turns (cooper wire) from the L1. Finally you will achieve the maximum range between your Tags and the L1.

I made the (L1) 120 mm diameter and 58 turns but afterward I wanted to make it in smaller size. So, I folded the coil to the half to make it as a "figure eight" (the shape seems like the 8 number ) and I did again the calibration. That's why the coil L1 on the pictures seems smaller than 120 mm.

Programming the ATtiny13.

You have to set the ATtiny13 fuses to: High Fuse: 0x1F and Low Fuse: 0x7A .These settings set the ATtiny13 to work with the internal 9.6 MHz oscillator. The System clock divided by 8 function is disabled.

The firmware v1.00 is 1024 bytes and it occupies the 100% of the Flash program memory of ATtiny13.

Maybe a migration to any other 8-pin AVR such as ATtiny85 it would be a good idea if you want to add more functions to the source code.

Downloads

Source code, hex file, schematic and pictures of 125 kHz RFID reader - download

Reference:

EM4100 Protocol description
 

serasidis.gr

 
EMS supplier