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