Back

RFID

Loading views...

RFID

Category: Wireless

Overview

RFID (Radio Frequency Identification) uses electromagnetic fields to automatically identify and track tags attached to objects. Tags contain a microchip and antenna; readers interrogate tags wirelessly. Used in access control, supply chain, animal tracking, and contactless payments.

1. Theory & Fundamentals

  • Frequencies: LF (125/134 kHz), HF (13.56 MHz), UHF (860–960 MHz), Microwave (2.45 GHz)
  • Tag types: Passive (no battery, powered by reader), Active (battery), Semi-passive
  • LF: Short range (10cm), penetrates metal/water, used in animal tags, older access cards
  • HF (13.56 MHz): ISO 14443 (MIFARE/NFC), ISO 15693 (vicinity); 10–100cm range
  • UHF: ISO 18000-6C (EPC Gen2); 1–12m range; supply chain, retail
  • EPC (Electronic Product Code): Standard for UHF RFID in supply chain

2. Frame / Packet Structure

ISO 18000-6C (EPC Gen2) UHF frame:
  Preamble | Command | Data | CRC-16

Commands: Query, QueryRep, ACK, NAK, Read, Write, Kill, Lock

Tag response to Query:
  RN16 (random 16-bit number, used for singulation)

Read response:
  Header | PC (Protocol Control, 16b) | EPC (96b) | CRC-16

ISO 15693 frame (HF vicinity):
  SOF | Flags(8b) | Command(8b) | Data | CRC-16 | EOF

3. Protocol Mechanics

  • Anticollision: Multiple tags in field simultaneously; singulation protocol selects one
  • Gen2 Q-algorithm: Probabilistic slotted ALOHA for anticollision
  • Memory: EPC, TID (unique), User memory banks; write-protected with kill/lock commands
  • Energy harvesting: Passive tag derives power from reader's RF field

4. Hardware Implementation

  • LF reader: 125kHz oscillator, coil antenna, ASK demodulator (EM4100 decode)
  • HF reader: MFRC522 (SPI), PN532 (I2C/SPI/UART) for ISO 14443/15693
  • UHF reader: Impinj R420, ThingMagic M6 module; SPI/UART/USB to host
  • Antenna: Coil (LF/HF) or patch (UHF); impedance match to 50Ω
  • Power: Reader 5V/500mA; tags passive (zero power)

5. Register-Level / Configuration

// MFRC522 SPI-based HF RFID reader
void MFRC522_Init(void) {
    SPI_Write(MFRC522_REG_COMMAND, 0x0F); // Soft reset
    delay_ms(50);
    SPI_Write(MFRC522_REG_T_MODE, 0x8D);   // Timer auto + prescaler
    SPI_Write(MFRC522_REG_T_PRESCALER, 0x3E);
    SPI_Write(MFRC522_REG_T_RELOAD_H, 0x00);
    SPI_Write(MFRC522_REG_T_RELOAD_L, 0x1E);
    SPI_Write(MFRC522_REG_TX_ASK, 0x40);   // 100% ASK
    SPI_Write(MFRC522_REG_MODE, 0x3D);     // CRC preset 6363
    // Turn on antenna
    SPI_Write(MFRC522_REG_TX_CONTROL,
        SPI_Read(MFRC522_REG_TX_CONTROL) | 0x03);
}
// Read card UID
uint8_t uid[4];
MFRC522_RequestA();         // Send REQA
MFRC522_Anticollision(uid); // Get UID

6. Driver / Software Development

// Full MFRC522 MIFARE read block
uint8_t MIFARE_ReadBlock(uint8_t block, uint8_t *data) {
    uint8_t cmd[4] = {0x30, block, 0, 0}; // Read command
    // Calculate CRC and append
    MFRC522_CalcCRC(cmd, 2, &cmd[2]);
    MFRC522_Transceive(cmd, 4, data, 18); // 16 bytes + 2 CRC
    return data[16] == calc_crc[0] && data[17] == calc_crc[1];
}

7. Debugging & Testing

  • RFID protocol analyzer: Feig, Profilic RFID test tools
  • Logic analyzer on SPI to MFRC522 for register verification
  • Common issues: Antenna detuning by metal; tag in null field area; anticollision timeout
  • Check SPI timing (MFRC522 max 10 MHz SPI)

8. Real-World Applications

  1. Access control (HF ISO 14443 MIFARE cards)
  2. Supply chain and inventory (UHF EPC Gen2)
  3. Animal tracking and livestock ID (LF 134.2 kHz ISO 11784)
  4. Retail loss prevention and checkout (UHF)
  5. Library management (HF ISO 15693)

9. Advanced Topics & Edge Cases

  • Near-field reader coil design: Tuning for maximum read range
  • Privacy: Killing tags, locking memory; EPC Gen2 access/kill passwords
  • Anti-clone: MIFARE DESFire with AES; cryptographic authentication
  • Passive tag: Energy harvested from 13.56 MHz field; must exceed activation threshold

10. Standards & Variants

Standard Freq Range Notes
ISO 11784/85 134.2 kHz <10cm Animal RFID
ISO 14443 13.56 MHz <10cm NFC/MIFARE
ISO 15693 13.56 MHz 1m Vicinity
ISO 18000-6C 860-960 MHz 12m EPC Gen2 UHF

💡 Practical Examples

Example 1: Read MIFARE UID

MFRC522_Init();
while(1) {
    if(MFRC522_RequestA() == 0) {  // Card detected
        MFRC522_Anticollision(uid);
        printf("Card UID: %02X%02X%02X%02X\n", uid[0],uid[1],uid[2],uid[3]);
    }
    delay_ms(500);
}

Example 2: Write UHF EPC tag

Use Impinj reader SDK to write new EPC value to Gen2 tag.

Example 3: Multi-tag inventory

UHF reader Q-algorithm reads 100+ tags in <1 second; export EPC list.

🧪 Practice Questions

Beginner

  1. What are the 3 main RFID frequency bands?
  2. What is a passive RFID tag?
  3. What is EPC in UHF RFID?
  4. What standard does MIFARE use?
  5. How does RFID anticollision work?

Intermediate

  1. Implement MFRC522-based access control with UID whitelist.
  2. How does ISO 14443 anticollision singulation work?
  3. Implement MIFARE Classic block read/write with authentication.
  4. What limits UHF RFID read range near metal?
  5. How does EPC Gen2 Q-algorithm avoid tag collisions?

Advanced

  1. Design a UHF RFID warehouse inventory system.
  2. Implement AES authentication with MIFARE DESFire EV1.
  3. Build an RFID reader antenna for 1m range at 13.56 MHz.
  4. Implement ISO 15693 multi-tag inventory in embedded C.
  5. Design anti-cloning protection for access control tokens.

Hands-on Projects

  1. Access Control: MFRC522 + relay, authorized UID list in EEPROM.
  2. Inventory System: UHF RFID + database, track 1000 items.
  3. Animal Tracker: LF 134.2 kHz reader for livestock ID tags.

Checklist

  • [ ] Understand RFID frequency bands and their characteristics
  • [ ] Initialize MFRC522 via SPI
  • [ ] Read MIFARE card UID
  • [ ] Authenticate and read/write MIFARE Classic block
  • [ ] Implement UID-based access control
  • [ ] Interface with UHF reader
  • [ ] Design antenna for target frequency
  • [ ] Handle anticollision for multiple tags
  • [ ] Implement AES-based secure tag authentication
  • [ ] Build complete RFID application