Arduino RFID RC522: leggere UID di badge e tag
Colleghiamo un lettore RFID RC522 ad Arduino UNO tramite SPI e leggiamo l’UID di badge e tag compatibili, visualizzandolo sul Monitor Seriale.
Introduzione
I sistemi RFID permettono di identificare badge e tag senza contatto. In questo progetto useremo il modulo MFRC522 / RC522 con Arduino UNO per leggere l’UID del tag e mostrarlo sul Monitor Seriale.
È un ottimo punto di partenza per capire il funzionamento di base di lettori RFID, protocollo SPI e identificazione di tag.
- come collegare il modulo RC522 ad Arduino UNO;
- come comunicare con il lettore tramite bus SPI;
- come installare e usare la libreria MFRC522;
- come rilevare la presenza di un tag;
- come leggere e formattare il suo UID.
Materiale necessario
🧰 Non hai ancora i componenti?
Un kit Arduino per principianti contiene molti dei componenti utili per seguire i progetti del sito.
Vedi il kit Arduino consigliato →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.📘 Vuoi imparare Arduino passo dopo passo?
Nei miei libri dedicati ad Arduino trovi spiegazioni, schemi e numerosi progetti pratici pensati anche per chi parte da zero.
Scopri i miei libri su Arduino →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.Schema di collegamento SPI
📡 RC522 → Arduino UNO
- SDA / SS → pin 10
- SCK → pin 13
- MOSI → pin 11
- MISO → pin 12
- RST → pin 9
- GND → GND
- 3.3V → 3.3V
- IRQ → non collegato
⚙️ Protocollo
Il modulo comunica con Arduino tramite bus SPI. Su Arduino UNO i pin hardware SPI sono 11, 12 e 13; il pin SS del progetto è impostato a 10.

Libreria necessaria
Installa la libreria MFRC522 dal Gestore librerie dell’IDE Arduino. Il codice usa inoltre la libreria SPI, già inclusa normalmente nell’ambiente Arduino.
Codice Arduino
Ho migliorato il codice originale formattando l’UID sempre con due cifre esadecimali per byte e aggiungendo la corretta chiusura della comunicazione con il tag.
// ============================================
// Progetto 112 - Lettura badge RFID con RC522
// Visualizza l'UID sul Monitor Seriale
// ============================================
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
Serial.println("Lettore RFID pronto");
Serial.println("Avvicina un badge o tag...");
}
void loop() {
// Nessun nuovo tag presente
if (!rfid.PICC_IsNewCardPresent()) {
return;
}
// Impossibile leggere il seriale del tag
if (!rfid.PICC_ReadCardSerial()) {
return;
}
Serial.print("UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
// Mantiene due cifre HEX per ogni byte
if (rfid.uid.uidByte[i] < 0x10) {
Serial.print("0");
}
Serial.print(rfid.uid.uidByte[i], HEX);
if (i < rfid.uid.size - 1) {
Serial.print(":");
}
}
Serial.println();
// Termina correttamente la comunicazione
// con il tag corrente.
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(300);
}Come funziona
Inizializzazione SPI
SPI.begin() inizializza il bus SPI, mentre PCD_Init() prepara il lettore RC522.
Rilevamento del tag
PICC_IsNewCardPresent() verifica se è stato avvicinato un nuovo tag compatibile.
Lettura dell’UID
PICC_ReadCardSerial() acquisisce i dati identificativi del tag e li rende disponibili nella struttura rfid.uid.
Visualizzazione
I byte dell’UID vengono stampati in esadecimale sul Monitor Seriale, separati da due punti.
Chiusura della lettura
PICC_HaltA() conclude la comunicazione con il tag corrente e prepara il sistema per una nuova lettura.
UID e sicurezza
Molti progetti base confrontano semplicemente l’UID letto con una lista di badge autorizzati. È una tecnica utile per imparare, ma non equivale a un sistema di autenticazione robusto.

