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+ |
Puoi anche acquistarli separatamente dai link qui sotto.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
- |
|
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.
Schema Elettrico
Codice
Nota
Puoi aprire il file
08-mfrc522.inodal percorsoelite-explorer-kit-main\basic_project\08-mfrc522direttamente.Qui viene utilizzata la libreria
RFID1. La libreria può essere trovata nella directoryelite-explorer-kit-main/library/, oppure puoi cliccare quiRFID1.zipper scaricarla. Consulta Installazione Manuale per un tutorial su come installarla.
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).