SOMMAIRE ►
RFID RC522 Arduino (Radio Frequency IDentification) est une identification sans contact d’un transpondeur (tag) au moyen d’un canal de communication radiofréquence. Le système est largement utilisé dans de nombreux secteurs: pour le contrôle d’accès par badge, le suivi des marchandises dans les chaînes d’approvisionnement, la création de systèmes de primes, etc. Voyons maintenant comment connecter le lecteur de tags RFID-RC522 à la carte Arduino.
Pour cette activité, nous aurons besoin:
Matériel supplémentaire sur ce sujet:
Fonctionnement RFID-RC522 pinout, datasheet
Le système RFID pour les cartes Arduino se compose de deux éléments: un transpondeur (tag) sous la forme d’une carte plastique ou d’un fob et un lecteur de carte (tag reader). L’identification est basée sur un identifiant unique (standard Epc-96 sur 96 bits) que chaque étiquette rfid possède. Le module RFID RC522 Arduino émet des ondes électromagnétiques et les étiquettes renvoient leur numéro d’identification, les données de leur mémoire, etc.

Caractéristiques RFID RC522 Arduino
- Alimentation: 3,3 V
- Fréquence: 13,56 MHz
- Distance optimale: 10 mm
- Interface: SPI
- Protocole: Mifare
- Dimensions (sans les broches): 61 x 40 mm
Les étiquettes RFID peuvent être actives ou passives (sans source d’énergie, donc c’est autonome et inusable) et fonctionnent à différentes fréquences: LF (125 à 134 kHz), HF (13,56 MHz), UHF (860 à 960 MHz). Les modules qui lisent et écrivent des informations sur les étiquettes sont appelés lecteurs. Les modules RC522 basé sur la puce MFRC522 utilisent des champs électromagnétiques pour transférer des données entre la carte et le lecteur.
Comment brancher module RFID RC522 Arduino

| MFRC522 | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VCC | 3,3V | 3,3V | 3,3V |
| MOSI | 11 | 11 | 51 |
| MISO | 12 | 12 | 50 |
| SCK | 13 | 13 | 52 |
| SDA | 10 | 10 | 10 |
| RST | 9 | 9 | 9 |
Le module est connecté à l’Arduino via l’interface SPI, voir le schéma de connexion ci-dessus. Rappelez-vous que le bus SPI sur les cartes Arduino Uno et Mega est sur des ports différents. Il faut télécharger les librairies SPI, MFRC522 et installer dans le dossier librairies de votre dossier Arduino. Après avoir connecté le lecteur de carte au microcontrôleur, chargez le code suivant pour obtenir le type de tag et l’UID (identifiant unique de la porte clé ou carte).
Programme Arduino pour module RFID RC522
#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // RES pin #define SS_PIN 10 // SDA (SS) pin MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); delay(4); mfrc522.PCD_DumpVersionToSerial(); Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); } void loop() { // réinitialiser le cycle s'il n'y a pas de carte sur le lecteur if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // affiche l'UID sur le port série mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }
Explication du code pour capteur RFID Arduino RC522:
- le port série affiche l’UID (identifiant unique) de l’étiquette lorsque vous présentez la carte ou le porte clés étiqueté au lecteur de cartes;
- SPI.h doit également être installée pour que le croquis fonctionne.
Contrôle d’accès par badge avec Arduino et RC522

Prenons un exemple qui peut être utilisé pour créer un système d’accès complet. Le programme RFID couplé à la carte Arduino permet de détecter un badge enregistré ou non. Le logiciel va scanner l’identifiant unique de la balise, si l’UID de la carte correspond à la valeur définie dans le croquis (cardID), l’accès sera accordé. Si une étiquette inconnue est amenée devant le lecteur, l’accès sera refusé et la LED rouge ou LED verte s’allumera.
Programme Arduino pour contrôle d’accès par badge
#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // RES pin #define SS_PIN 10 // SDA (SS) pin byte readCard[4]; String cardID = "20C3935E"; // remplacer par l'ID de votre tag String tagID = ""; MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { while (getID()) { if (tagID == cardID) { Serial.println("Access Granted!"); digitalWrite(5, LOW); digitalWrite(6, HIGH); } else { Serial.println("Access Denied!"); } Serial.print("ID: "); Serial.println(tagID); delay(2000); digitalWrite(6, LOW); } } boolean getID() { if (! mfrc522.PICC_IsNewCardPresent()) { return false; } if (! mfrc522.PICC_ReadCardSerial()) { return false; } tagID = ""; for (uint8_t i = 0; i < 4; i++) { tagID.concat(String(mfrc522.uid.uidByte[i], HEX)); } tagID.toUpperCase(); mfrc522.PICC_HaltA(); return true; }
Explication du code pour contrôle d’accès avec capteur rfid:
- au lieu d’une LED verte, vous pouvez connecter un relais statique SSR à l’Arduino et l’utiliser pour contrôler, par exemple, une sonnette de porte;
- la valeur cardID dans le croquis doit être définie comme la valeur obtenue à partir de l’étiquette dans le premier programme.
Conclusion. Le module RC522 Arduino est conçu pour générer un champ électromagnétique qui est utilisé pour communiquer avec les étiquettes RFID. Le lecteur peut communiquer avec un microcontrôleur Arduino avec un taux de transfert de données maximum de 10Mbit par seconde via l’interface périphérique série SPI ou le protocole de communication I2C grâce auxquels il est possible de connecter jusqu’à 128 dispositifs simultanément.








Ce programme ne fonctionne pas si la carte est fausse (led rouge).
Il faut ajouter au else {digitalWrite(6, LOW);
digitalWrite(5, HIGH);
Bonjour a tous. J’ai utilisé le même code juste avec quelques modifications mais je rencontre un problème une fois que j’essaie le montage. Le branchement a été bien fait. Voici le problème rencontré une fois connecté, la carte RFID cesse de lire la carte apres un nombre d’essais je ne sais pas a quoi est dû cela et je prie vraiment que vous m’aider merci
bonjour,
eviter les alims à découpage,
rajouter des delai de 1 ms avant return,
mettre un watchdog : si le programme se bloque, ca resette l’arduino,
etc … j’ai surtout ce pb de blocage du programme avec le mega et l’utilisation d’alims lineaires
a tres fortement réglé le pb, et pour finir un watchdog l’a complètement réglé.Seul pb, on perd les données enregistrées s’il y en a .
Bonjour,
je m’interroge sur la différence de standard de tension : 3,3V pour le modle RC522 et 5V pour l’Arduino Uno. Est-ce que cela ne pose pas de problème ?
Fred
L’Arduino Uno dispose d’un port de 3,3 volts. Dans le schéma de câblage, le module RC522 est connecté à cette broche
est ce que la frequence est modulable ?
Non, vous ne pouvez pas. Les systèmes ayant des fréquences différentes ne sont pas compatibles et ont des antennes différentes
bonjour je ne comprend pas pourquoi aucune des deux led ne s’allume même aprés avoir fait les modification nécessaire {digitalWrite(6, LOW);
digitalWrite(5, HIGH); j’ai toujours ce message ‘getID’ was not declared in this scope
sa fonctionne bien j ai rajouter un bit sonore parfait
Bonjour,
En tout cas sa fonctionne super bien. Hate d’apporter des améliorations a ce programme.
Belle journée
Bonsoir a tout le monde, depuis que j’ai souder mon module RFID-RC522 il ne fonctionne plus à chaque fois que je l’utilisant il a un message d’avertissement disant qu’il y a une mauvaise communication entre le module et l’arduino. Quelqu’un peut me dire s’il y a une solution ?