Nota

Ciao, benvenuto nella comunità di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Accedi in anteprima agli annunci di nuovi prodotti e agli sneak peek.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e omaggi: Partecipa a giveaway e promozioni festive.

👉 Pronto per esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

Modulo RFID-RC522

Panoramica

In questa lezione, imparerai a utilizzare un modulo RFID. RFID sta per Radio Frequency Identification. Il suo principio di funzionamento prevede la comunicazione dati senza contatto tra il lettore e l’etichetta per identificare il target. Le applicazioni dell’RFID sono estese, inclusi chip per animali, immobilizzatori, controllo accessi, controllo parcheggi, automazione delle linee di produzione, gestione dei materiali e altro ancora.

Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Arduino Uno R4 WiFi

-

Cavi Jumper

ACQUISTA

Modulo MFRC522

ACQUISTA

Circuito Fritzing

In questo esempio, inseriamo l’RFID nel breadboard. Collega i 3.3V dell’RFID ai 3.3V, GND a GND, RST al pin 2, SDA al pin 6, SCK al pin 5, MOSI al pin 4, MISO al pin 3 e IRQ al pin 7.

../_images/08-rfid_bb.png

Schema Elettrico

../_images/08_mfrc522_schematic.png

Codice

Nota

  • Puoi aprire il file 08-mfrc522.ino dal percorso elite-explorer-kit-main\basic_project\08-mfrc522 direttamente.

  • Qui viene utilizzata la libreria RFID1. La libreria può essere trovata nella directory elite-explorer-kit-main/library/, oppure puoi cliccare qui RFID1.zip per scaricarla. Consulta Installazione Manuale per un tutorial su come installarla.

08-mfrc522.ino
 1/*
 2  The code is designed for an Arduino system to interface with an RFID-RC522 Module 
 3  using the "RFID1" library. It initializes the RFID module and continuously scans for 
 4  RFID cards. When a card is detected, the code prints the card type and its 4-byte 
 5  serial number to the serial monitor.
 6  
 7  Board: Arduino Uno R4
 8  Component: RFID-RC522 Module
 9*/
10
11#include "rfid1.h"  // Include RFID1 library
12RFID1 rfid;         // Create an instance of the RFID1 class
13
14void setup() {
15  Serial.begin(9600);  // Initialize serial communication at 9600 baud
16  // Initialize the RFID reader with pin configuration
17  rfid.begin(7, 5, 4, 3, 6, 2);  // IRQ_PIN, SCK_PIN, MOSI_PIN, MISO_PIN, SDA_PIN, RST_PIN
18  delay(100);                    // Delay for 100 milliseconds
19  rfid.init();                   // Initialize the RFID module
20}
21
22void loop() {
23  uchar status;        // Status variable to hold the state of RFID functions
24  uchar str[MAX_LEN];  // Create an array to hold the RFID card data; maximum length is 16
25
26  // Search for an RFID card and get its type
27  status = rfid.request(PICC_REQIDL, str);
28  if (status != MI_OK) {
29    return;  // If no card is found, return to the beginning of loop()
30  }
31  Serial.print("Card type: ");
32  Serial.println(rfid.readCardType(str));  // Print the card type to the serial monitor
33
34  // Prevent RFID card collision and get the 4-byte serial number of the card
35  status = rfid.anticoll(str);
36  if (status == MI_OK) {
37    Serial.print("The card's number is: ");
38    int IDlen = 4;  // Length of the card's serial number
39    for (int i = 0; i < IDlen; i++) {
40      Serial.print(str[i], HEX);  // Print each byte of the card's serial number
41    }
42    Serial.println();
43    Serial.println();  // Print an empty line for better readability
44  }
45
46  delay(500);   // Delay for 500 milliseconds
47  rfid.halt();  // Put the card into sleep mode
48}

Caricato il codice sulla scheda Uno, puoi avvicinare la tua scheda RFID (chiave segreta) al lettore RFID. Il modulo leggerà le informazioni della scheda e le stamperà sul monitor seriale.

Analisi del Codice

Le funzioni del modulo sono incluse nella libreria rfid1.h.

#include <rfid1.h>

Funzioni della Libreria:

RFID1 rfid;

Crea una nuova istanza della classe rfid1 che rappresenta un particolare modulo RFID collegato al tuo Arduino.

void begin(IRQ_PIN,SCK_PIN,MOSI_PIN,MISO_PIN,SDA_PIN,RST_PIN)

Configurazione dei pin.

  • IRQ_PIN,SCK_PIN,MOSI_PIN,MISO_PIN: i pin utilizzati per la comunicazione SPI.

  • SDA_PIN: Adattatore dati sincrono.

  • RST_PIN: I pin utilizzati per il reset.

void init()

Inizializza l’RFID.

uchar request(uchar reqMode, uchar *TagType);

Cerca la scheda e legge il tipo di scheda, e la funzione restituirà lo stato di lettura corrente dell’RFID e restituirà MI_OK se ha successo.

  • reqMode: Metodi di ricerca. PICC_REQIDL è definito come comando 0x26 (Cerca le schede che non sono in modalità sleep nell’area dell’antenna).

  • *TagType: Viene utilizzato per memorizzare il tipo di scheda, e il suo valore può essere 4 byte (ad esempio 0x0400).

char * readCardType(uchar *TagType)
Questa funzione decodifica il numero esadecimale a quattro cifre di *tagType

nel tipo di scheda specifico e restituisce una stringa. Se viene passato 0x0400, verrà restituito «MFOne-S50».

uchar anticoll(uchar *serNum);

Previeni conflitti e leggi il numero di serie della scheda. La funzione restituirà lo stato di lettura corrente dell’RFID. Restituisce MI_OK se ha successo.

  • *serNum: Viene utilizzato per memorizzare il numero di serie della scheda e restituire il numero di serie della scheda a 4 byte. Il 5° byte è il byte di ricontrollo (ad esempio, l’ID della mia scheda magnetica è 5AE4C955).