Aujourd’hui on va apprendre à comment utiliser le module rfid RC522.
J’ai nettoyé les codes en exemple avec la librairie pour faire un contrôle d’accés simplifié.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53
#define RST_PIN 5
MFRC522 rfid(SS_PIN, RST_PIN); // appel de la classe
#define PIN_LED_VERTE 8
#define PIN_LED_ROUGE 9
// liste clés valides
String keyOk[]={"15 c4 2d 5","15 c4 2d 6"};
void setup() {
Serial.begin(57600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
pinMode(PIN_LED_VERTE,OUTPUT);
pinMode(PIN_LED_ROUGE,OUTPUT);
// led eteintes a l'init
digitalWrite(PIN_LED_VERTE,LOW);
digitalWrite(PIN_LED_ROUGE,LOW);
}
void loop() {
// Si on ne detecte pas une carte on reboucle au debut
if ( ! rfid.PICC_IsNewCardPresent())
return;
// as t'on lu la carte
if ( ! rfid.PICC_ReadCardSerial())
return;
// recuperation de l'UID et concaténation de sa valeur en hex dans un string
String myKey=String(rfid.uid.uidByte[0],HEX) + " " + String(rfid.uid.uidByte[1],HEX) + " " + String(rfid.uid.uidByte[2],HEX) + " " + String(rfid.uid.uidByte[3],HEX);
// j'affiche la valeur de la carte sur le serial
Serial.println(myKey);
bool accessOk = 0;
// je boucle sur toutes les valeurs des clés autorisés et si je la trouve accesOK => 1
for(int y = 0; y < (sizeof(keyOk)/sizeof(String)) ; y++){
if(keyOk[y] == myKey){
accessOk = 1;
}
}
// Halt PICC, fin de lecture de carte
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
// La carte as t'elle acces , si oui led verte , si non led rouge
if(accessOk == 1){
digitalWrite(PIN_LED_VERTE,HIGH);
}
else{
digitalWrite(PIN_LED_ROUGE,HIGH);
}
// on eteind les led apres un delais
delay(2000);
digitalWrite(PIN_LED_VERTE,LOW);
digitalWrite(PIN_LED_ROUGE,LOW);
}En matériel il nous faut :
– 1 arduino
– 1 module rfid RC522
Attention ce module fonctionne sous 3,3 Volt !!!
Pour le branchement cela va dépendre de la carte arduino utilisé ( utilisation du SPI ) , ci dessous le tableau récapitulatif.
| Signal | MFRC522 Reader/PCD Pin | Arduino Uno/101 Pin | Arduino Mega Pin | Arduino Nano v3 Pin | Arduino Leonardo/Micro Pin | Arduino Pro Micro Pin |
| RST/Reset | RST | 9 | 5 | D9 | RESET/ICSP-5 | RST |
| SPI SS | SDA(SS) | 10 | 53 | D10 | 10 | 10 |
| SPI MOSI | MOSI | 11 / ICSP-4 | 51 | D11 | ICSP-4 | 16 |
| SPI MISO | MISO | 12 / ICSP-1 | 50 | D12 | ICSP-1 | 14 |
| SPI SCK | SCK | 13 / ICSP-3 | 52 | D13 | ICSP-3 | 15 |
Pour installer une librairie aller dans croquis, inclure une bibliothèque, gérer les bibliothèques et en recherche taper “rc522” , tu vas trouver toutes la librairie MFRC522.
Pour le code on appelle deux librairies , une pour le SPI et l’autre pour le module RC522.
On définit les pin SS_PIN et RST_PIN avec les pin associés a la carte utilisée, dans mon exemple j’utilise une carte Mega donc pin 53 et 5 , si tu utilise une carte Uno pin 10 et 9 ( voir tableau pour les pin ).
On appelle la classe pour la carte RFID : MFRC522 rfid(SS_PIN, RST_PIN);
Je défini deux variables pour les led que je vais utiliser plus tard pour afficher si j’ai débloqué l’acces ou non.
J’ai ensuite un tableau keyOK qui contient les UID des puce rfid qui vont avoir acces .
Dans le setup on initialise le SPI avec begin et le module RC522 avec rfid.PCD_Init();
Puis mes deux led en OUTPUT et je les met dans leur état LOW.
Partie boucle, j’ai une premiere condition qui verifie si une carte est presentée devant le module, si aucune carte ou reboucle au debut avec return et deuxieme condition on lit la carte, si on y arrive pas ou reboucle.
Si tout s’est bien passé on recupere la valeur UID de la carte et on stocka sa valeur en hexadecimal dans la variable myKey et je l’affiche dans le serial pour connaitre sa valeur ( pour facilement voir la valeur de nos cartes).
J’ai un booleen pour valider mon acces ou non avant ma boucle de controle, dans cette boucle de controle je balaye toutes les valeurs de keyOk et si je trouve une correspondance accessOk passe à 1.
On stoppe la lecture du rfid avec rfid.PICC_HaltA(); et rfid.PCD_StopCrypto1();
J’ai ensuite ma condition pour valider ou non la carte ou je vais éclairer une led, led verte pour ok et rouge pour bloquer. Je te laisse appliquer le code pour ton utilisation
Je termine avec un delay pour eteindre les led apres 2 secondes.
A toi d’adapter le code à l’utilisation que tu veux en faire 🙂
Télécharger le code :
– RFID RC522
📌 FAQ – Utiliser le module RFID RC522 avec Arduino
Q : Qu’est-ce que le module RFID RC522 ?
R : Le RC522 est un lecteur RFID fonctionnant à 13,56 MHz, compatible avec les cartes MIFARE. Il permet de lire et écrire des données sur des tags RFID, et est couramment utilisé dans les projets Arduino pour l’identification sans contact.
Q : Comment connecter le RC522 à un Arduino ?
R : Le module communique via le protocole SPI. Voici le câblage typique pour un Arduino Uno :
SDA (SS) → D10
SCK → D13
MOSI → D11
MISO → D12
RST → D9
3.3V → 3.3V Arduino (ne pas utiliser 5V)
GND → GND Arduino
⚠️ Attention : alimenter le module en 5V peut l’endommager.
Q : Quelle bibliothèque utiliser pour le RC522 ?
R : La bibliothèque MFRC522 de Miguel Balboa est largement utilisée. Elle permet de lire les UIDs des cartes, d’écrire des données, et de gérer l’authentification.
Q : Comment lire l’UID d’une carte RFID ?
R : Après avoir installé la bibliothèque, utilisez l’exemple DumpInfo disponible dans l’IDE Arduino. Approchez une carte du lecteur, et l’UID s’affichera dans le moniteur série.
Q : Peut-on écrire des données sur une carte RFID ?
R : Oui, les cartes MIFARE 1K possèdent 1 Ko de mémoire divisée en secteurs. Il est possible d’écrire des données dans ces secteurs après authentification, en utilisant les fonctions appropriées de la bibliothèque.
Q : Quelle est la distance de lecture du RC522 ?
R : Environ 2 à 5 cm, selon le type de tag utilisé.
🔗 À découvrir aussi sur Retro&Geek
👉 Créer une télécommande infrarouge avec Arduino
Apprenez à contrôler vos projets Arduino à distance avec une télécommande IR.
👉 Utiliser un écran LCD 16×2 avec Arduino
Affichez des informations en temps réel sur un écran LCD, idéal pour visualiser les données RFID lues.
👉 Configurer le module Bluetooth HC-05 pour Arduino
Ajoutez une connectivité sans fil à vos projets Arduino pour les contrôler via Bluetooth.
👉 Utiliser un moteur pas à pas 28BYJ-48 avec ULN2003A
Contrôlez des moteurs pas à pas pour des mouvements précis dans vos projets Arduino.
N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagram , twitter , facebook ,youtube ; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel et à partager les projets que vous aimeriez créer etc…
Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.
Merci les RetroGeeker et RetroGeekeuse



