Arduino RFID RC522

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é.

Rfid circuit 1

 

#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.

SignalMFRC522

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 instagramtwitter , 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