Skip to main content

Tuto-Arduino Utiliser un module RFID

Dans ce tutoriel nous allons voir comment utiliser un module RFID nous utiliserons pour notre exemple un module RC-522 mais il pourrait fonctionner avec d’autres modèles.

Celui-ci nous permettra de contrôler un accès et ainsi être utilisé avec une gâche électrique, dans notre exemple une simple LED.

Rappel : Pour nous soutenir, merci de le faire en cliquant simplement sur « START MINING » dans la colonne située sur la droite de votre écran.

Niveau de difficulté : Débutant

Matériel nécessaire :

Câblage module RFID :

Nous allons donc raccorder comme ceci:

Arduino → RC-522

  • 3.3v sur 3.3v
  • GND sur gnd
  • SDA sur D10
  • SCK sur D13
  • MOSI sur D11
  • MISO sur D12
  • RST sur D9

Câblage de notre LED :

Une fois que notre module sera raccordé il nous faudra faut bien évidemment mettre en place notre témoin lumineux ainsi que la gâche si nous souhaitons l’utiliser .

Pour ce faire nous allons donc procéder ainsi :

(Dans mon cas j’utilise une simple LED afin d’avoir un visuel pendant l’utilisation cependant j’ajouterais en commentaire dans le code tout ce qui est nécessaire pour le faire fonctionner avec une gâche électrique).

Arduino → LED

  • LED sur D6

Notre montage devrait donc ressembler à ça :

 

Le programme :

Maintenant que nous disposons du matériel nécessaire et que celui-ci est convenablement raccordé, il va falloir apprendre à notre Arduino à interpréter les informations reçues!

Transfert :

Pour le transfert du code sur l’Arduino, la procédure est relativement simple mais si vous ne l’avez jamais fait, je vous invite à jeter un coup d’œil par ici :

https://www.memorandum.ovh/utiliser-le-logiciel-arduino/

Dans un premier temps, il nous faudra importer les librairies SPI.h ainsi que MFRC522.h.

Toutes les informations concernant le réglage ainsi que les différents paramètres pour notre lecteur RFID se trouveront dans le code.

// utilisation : RFID - Controle d acces
// Autor : Guillaume FLOCH
//site : https://osdclic.fr
//site tuto : https://www.memorandum.ovh
//mise à jour, 05 octobre 2017.
#include <SPI.h>
#include <MFRC522.h>
//on défini nos pin
#define SS_PIN 10
#define RST_PIN 9
// definition des pin du RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); 

//on defini la bronche pour notre indicateur/témoin
int lock = 6;
//on pourrait très bien ajouter quelques chose comme :
int serrure = 3 //(pour gérer une gache éléctrique)


char st[20];

void setup() 
{
  pinMode(lock, OUTPUT);
  // si nous avions notre gache electrique
  pinMode (serrure, OUTPUT);
 
  //initialisation serie(pour le relevé d'information via le moniteur série) et initialisation des deux bibliotheque SPI et MFRC522
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init(); 
  // Message initial (le message afiché au démarrage dans le moniteur serie de notre programme arduino)
  Serial.println("Test acces via TAG RFID");
  Serial.println();
}

void loop() // le corp de notre programme
{
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  Serial.print("UID de tag :");
  String tag= "";
  byte caractere;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     tag.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     tag.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  tag.toUpperCase();
  
 // ici on va vérifier l'autorisation
  if (tag.substring(1) == "06 62 20 02") // le numero de tag est visible lorsqu on presente la carte ou le badge via le moniteur serie
  //il suffit d'insérer ci-dessus le tag que l'on souhaite authoriser ici on dit que si le tag = 06 62 20 02 est lu alors on affiche dans le moniteur serie
  // Tag verifie - Acces Autorisé et nous eteignons notre led pendant 3sec
  {
    digitalWrite(lock, HIGH);
    Serial.println("TAG verifie - Acces Autorise !");
    Serial.println();
    delay(3000);
    digitalWrite(lock, LOW);
    //dans le cas de la gache electrique
    digitalWrite(serrure, LOW) 
    //*ou HIGH selon le mode de fonctionnement de la gache) ce qui nous laisserais 3 secondes pour ouvrir la porte
    }
 
  // ici on va vérifier un second badge (il est possible d'ajouter plusieurs "else if" il peut être interessant 
  //d'utiliser la fonction switch je vous invite à vous renseigner sur celle-ci.
 else if (tag.substring(1) == "D4 A9 42 DB") // le numero de tag est visible lorsqu on presente la carte ou le badge via le moniteur serie
  //il suffit d'insérer ci-dessus le tag que l'on souhaite authoriser ici on dit que si le tag = 06 62 20 02 est lu alors on affiche dans le moniteur serie
  // Tag verifie - Acces Autorisé et nous eteignons notre led pendant 3sec
  {
    digitalWrite(lock, HIGH);
    Serial.println("TAG verifie - Acces Autorise !");
    Serial.println();
    delay(3000);
    digitalWrite(lock, LOW);
    //dans le cas de la gache electrique
    digitalWrite(serrure, LOW) 
    //*ou HIGH selon le mode de fonctionnement de la gache) ce qui nous laisserais 3 secondes pour ouvrir la porte
    }
  
  else
  //sinon si le Tag n'est pas valide
  {
    //on affiche Acces refuse !!!
    Serial.println("TAG inconnu - Acces refuse !!!");
    Serial.println();
    // on repete 5fois
    for (int i= 1; i<5 ; i++)
    {
      //LED clignotte ici rien à ajouter pour la gache puisque son etat ne doit pas changer la porte reste fermee
      digitalWrite(lock, HIGH);
      delay(200);
      digitalWrite(lock, LOW);
      delay(200);
    }
  }
  delay(1000);
}

Paramètres et réglages :

Afin de pouvoir utiliser notre montage il faudra donc entrer un TAG RFID dans notre programme qui corresponde à une carte ou un badge.

Moniteur série :

La procédure est la suivante dans le programme arduino, cliquez sur Outils puis Moniteur série. Cette manipulation peut aussi être faite via les touches du clavier Ctrl + Maj +M.

Pour que cela fonctionne il faut évidemment que notre Arduino soit relié au PC.

En présentant les badge devant le capteur nous devrions donc avoir quelque chose comme cela :

Nous pouvons voir ici que j’ai utilisé deux badges le premier UID : D4 A9 42 DB et le second UID : 06 62 20 02 ce sont les identifiants de nos badges mais les vôtres seront évidemment différents.

Modification du programme :

Dans le programme à la ligne 61 nous allons entrer le code UID du badge que nous souhaitons autoriser ainsi lorsque celui-ci sera présenté notre LED devrait s’allumer 3 secondes.

Dans le cas contraire lorsqu’on utilise le second badge qui lui n’est pas autorisé nous devrions voir la LED clignoter nous montrant ainsi que nous ne sommes pas autorisé à entrer.

Ce montage sera très certainement refait avec une véritable gâche électrique dont je dispose dans les locaux de l’association http://www.goldorhack.org ainsi, cela me permettra de vous présenter une vidéo d’utilisation concrète de ce genre de module mais en attendant, voici le résultat.

Le résultat en Vidéo :

J’espère que cet article vous aura plu, n’hésitez pas à le partager.

46 réponses à “Tuto-Arduino Utiliser un module RFID

  1. Bonjour,Après avoir suivi à la lettre votre tutoriel, et en approchant différents tags, rien ne s’affiche sur le moniteur série.Cordialement.Paul Dury

      1. Bonjour,
        Merci pour votre tuto!
        j’ai une carte arduino uno, et un module RFID ( RC-522 ).
        En utilisant la carte ou le porte cle fournie avec le module rfid,
        je n’ai rien qui s’affiche sur le moniteur.

        Pourtant, j’ai bien la led, du module qui s’allume.
        En vous remerciant

  2. Merci de répondre aussi vite.J’ai bien le message de test sur la console série, qui me dit que la carte est initialisée.Par contre quand j’approche la carte, rien ne s’affiche

  3. Bonjour. Le schéma comporte une erreur : le module RFID n’est pas alimenté correctement.Le fil rouge du RFID doit être connecté à la broche 3v3 de l’arduino comme indiqué dans le texteLe montage fonctionne impec après correction

  4. Bonjour, tout d’abord merci énormément pour ce tuto super utile !J’ai un petit soucis :Je suis possesseur de l’arduino Nano et du kit RFID avec un badge et une carte RFID livrés avec.Pas de soucis pour importer les librairies et le programme.Je démarre le SerialMonitor, passe un badge livré avec le kit RFID et il est reconnu, Nickel.Puis je passe la carte livrée aussi avec, reconnue aussi.Je passe une autre carte (pas livrée avec) qui je pense est du Mifare (style Vigik) car elle est pas reconnue par le téléphone qui lit du NFC. Et à partir de ce moment là plus rien…Plus rien n’est reconnu, les précédents badge j’ai rien au niveau du Monitor. J’ai remarqué que j’avais une petite led rouge qui s’allumait très faiblement sur l’Arduino lors des passages des badge RFID et maintenant j’ai vraiment plus rien.J’ai essayé avec un autre arduino, retéléchargé le programme plusieurs fois, et rien à faire.Le Badge Mifare pourrait griller comme ça la carte RFID ? C’est un simple hasard ?Je suis un peu pomé sur la question ! Qu’en pensez vous ?Merci pour votre tuto et votre éventuelle aide !Gus.   

  5. Bonjour,J’ai réussi à refaire marcher mon module RFID je ne sais comment.J’ai un autre problème, les badges sont bien détecté et la led clignote bien 3 fois quand le badge est pas connu.Mais cela ne dure pas, au bout d’un moment j’ai l’impression que le programme se perd.La led rouge allumé sur l’arduino nano (noté L) ne s’allume que de temps en temps.Quand elle est allumé, la détection fonctionne. Par contre dès qu’elle s’éteind la détection ne fonctionne plus. Pourquoi ? Qu’indique cette led ?Pourquoi c’est totalement aléatoire ? Parfois cela fonctionne puis pendant 2 minutes plus rien puis cela refonctionne pendant 10s…Merci de votre aide.

  6. Tout fonctionne parfaitement avec un Arduino Uno.
    Attention, cependant, le module RFID-RC522 vient de plusieurs fabricants pour lesquels l’ordre des broches n’est pas toujours le même.
    J’ai par exemple:
    VCC RST GND MISO MOSI SCK SDA IRQ pour un module
    VCC RST GND IRQ MISO MOSI SCK SDA pour un autre

    1. Effectivement je n’ai pas testé plusieurs tags, il faudrait que je complète le tuto. Si je ne dis pas de bêtises, je vous invite à ajouter un else if après le if déjà présent de la manière suivante :
      Faite une simple copie du if (ligne 60 à 73 les commentaires ne sont évidemment pas nécessaires) puis remplacer « if » par « else if ». N’oublié pas de remplacer le numéro de tag. Je ne pourrais pas tester cela dans l’immédiat mais si vous en avez l’occasion merci de me confirmer que le fonctionnement est correct. Cordialement

  7. Merçi de votre réponse, a la ligne 58 vous précisez le code du tag a lire, aidez moi a utiliser 2 tags et de ce fait 2 code Merçi (rectification)

  8.  Bonjour, suite à la dernière requête de « MESSAOUD » j’ai mis à jour le code à jour afin d’utiliser plusieurs badges merci à lui. N’hésitez pas à partager vos retours sur vos différents montages et vos demandes.

  9. Merci pour le tuto, ça m’a bien aidé^^

    Sinon j’ai fait une petite modif pour ajouter plus « simplement » des cartes, si ça peux aider certains je partage : https://codeshare.io/2p7VY4 (Au passage, désolé si c’est mal foutu, je viens du PHP, je galère encore à devoir déclarer les types 😀 )

    1. j’ai survolé le code et effectivement on sent le php derrière c’est nettement mieux organisé et surtout plus simple à comprendre. beau boulot ! merci pour la contribution pourrais tu mettres le code sur github (gist) que je le mette à dispo directement dans le tuto. merci par avance.

  10. Bonjour, Pouvez-vous m’indiquer la portée maximale de ce type de module RFID? J’aurais besoin pour mon projet d’une portée d’environ 10cm max  et voudrais savoir si le RC522 ferait l’affaire? Savez-vous s’il y a possibilité d’augmenté la portée? Si non, avez-vous un module à me conseiller ? Merci d’avanceAnoy

    1. Bonjour je n’ai pas fait de test précis quant à la portée du RC522, mais je ne pense pas qu’il puisse être utilisé a une distance de 10cm. ce type de module reste limité . Pourriez vous éventuellement m’exposer votre projet afin que je puisse éventuellement vous suggérer autre chose si toute fois cela est possible?

  11. Bonjour Guillaume,
    J’ai lu avec attention vos instructions de programme et l’utilisation que l’on en fait par exemple pour des accès.
    J’ai vu que l’on pouvait envoyer des informations/commandes vers un moniteur via un port COM, ce pourrait être le tag propre à chaque RFID passé devant l’Arduino.
    Que ce soit vers un port com ou usb, avez vous une idée pour récupérer les tag pour les stocker en mémoire ou les enregistrer dans un fichier ou tableau Excel
    Merci à vous pour le temps que vous passez bénévolement pour chacun des lecteurs/questionneur.
    bernard

  12. Bonjour Guillaume, J’ai lu avec attention vos instructions de programme et l’utilisation que l’on en fait par exemple pour des accès. J’ai vu que l’on pouvait envoyer des informations/commandes vers un moniteur via un port COM, ce pourrait être le tag propre à chaque RFID passé devant l’Arduino. Que ce soit vers un port com ou usb, avez vous une idée pour récupérer les tag pour les stocker en mémoire ou les enregistrer dans un fichier ou tableau Excel Merci à vous pour le temps que vous passez bénévolement pour chacun des lecteurs/questionneur. bernard

    1. Bonjour bernard,
      Oui il est tout à fait possible de stocker les tags qui sont passés devant le modules.
      Concernant la com USB par exemple, nous devrions sortir prochaine un tuto pour interfacer l’arduino avec un raspberrypi !
      Bonne journée

  13.  Bonjour,Déjà ravi de voir que votre site est redevenu online! J’ai cru le perdre à tout jamais! :)Petite question qui reprend une autre posée un peu plus haut; Peut-on par quelconque moyen, augmenter la portée du module? Jusqu’à 1m, avec par exemple une antenne faite maison ou bien à acheter?Ce serait le cas par exemple d’un boitier pour une porte chez moi, et que la porte se déverrouille automatiquement lorsque le boitier détecte ma carte (ou celle d’un autre membre de la famille, peu importe!), et ce sans avoir à rapprocher la carte à moins de 10cm.

    1. Bonjour, il semble que cela existe et coûte entre 100 et 200€, je n’ai par contre pas testé et je ne peux actuellement pas te dire s’il est possible simplement d’en fabriquer une. Il faudrait que je me penche sur le problème .

  14. Bonjour j’effectue un projet sur un distributeur de croquettes avec un capteur RFID 125 KHz et j’aimerai savoir comment faire pour apres avoir passé un des deux badges on pourrait mettre une sorte d’horloge pour que le badge soit autorisé a repassé devant le capteur seulement apres 4h par exemple ?

    voila merci de votre réponse d’avance et si cela vous va repondez moi par mail .

    sinnetnebur1@gmail.com

    1. Bonjour,
      Tu peut utiliser soit un module de temps de type DS3231 ou un module wifi / ethernet et utiliser un serveur NTP.
      Ensuite un peu de logique de code et c’est tout bon !
      Merci pour ton commentaire 😉

  15. Bonjour,

    suite à la question de Giovani, quelle est la portée maximum de détection du module RFID CRFM-522 RC522 représenté dans cet tutoriel ? Je n’ai pas besoin d’un mètre, mais 8-10 centimètres me seraient confortables. Sans bien entendu être obligé de souder une antenne externe ou d’augmenter la tension du courant. Merci.

    En tous cas, ce tutoriel est bien utile.

     

  16. Bonjour, merci pour votre tuto mais moi ce qui m’intéresse c’est le circuit que vous avez fait sur Tinkercard. Pourriez vous-m’aidez à le reproduire ? (Je ne trouve pas le module Rfid ni la arnuino nano).

    Merci !

  17. Bonjour merci pour votre tuto ! J’aimerais savoir comment avez-vous fait pour trouver le module RFID sur Tinkercad ? Cela m’aiderait grandement, merci.

  18. bonjour je souhaiterais utiliser une information du tag RFID contenue dans la mémore de ce tag (pas utiliser son adresse) savez vous comment faut il faire pour que cela fontionne?

    1. Slt Electronis,

      que veux tu faire exactement ?

      j’ai peut être un prog pour toi.

      il teste une plage de donnée plutôt que l’uid de la carte.

      Orefie

  19. Bonjour, merci pour votre tuto cependant je n’ai pas compris pourquoi vous avez mit une constante char de 20 colonnes et aussi pour le int lock = 6. (C’est quoi un indicateur témoin ?)

    Pouvez-vous m’expliquer ?

  20. Bonjour Guillaume.

     

    Super Tuto, très simple par contre, j’ai un soucis. Quand je lance le moniteur, j’ai bien le message « TEST ACCES VIA RFID » mais quand j’approche un carte ou un badge (livré avec le module), rien ne s’affiche sur le moniteur…

    J’ai revérifié les branchements, mais rien n’y fait…

     

    Help me Obi Wan 🙂

  21. Bonjour ,

    Je viens de suivre le tuto tout est bon dans les test , maintenant j’aimerai utiliser un gâchette électrique mais je ne sais ni ou la brancher sur le arduino ni comment modifier le code pour la faire fonctionné :s

  22. Merci et bravo pour votre tuto très instructif.

    Il manque juste des « ; » aux lignes 17, 72, et 88 pour que le code fonctionne.

    Cordialement,

    J-François.

    1. Bonjour, merci pour votre commentaire, effectivement les dernières modifications ayant étés apporté sans test il est possible que des erreurs se soit glissé dans le code je ferais la correction dès que possible merci pour votre aide.

  23. Bonjour,

    j’ai testé votre montage / code, et pour ma part tout fonctionne très bien et je vous en remercie.

    Ayant testé le montage sur une Arduino Mega, j’aurais aimé connaître une précision relative à l’alimentation sur une Arduino Nano.

    Je débute, et j’ai lu qu’on pouvait alimenter la Nano de manière externe (à l’aide d’une pile 9v par exemple) via la broche « vin ».

    Ma question est la suivante, comment rendez-vous votre projet nomade. Quel est votre shéma d’alimentation (hors USB) ?

    Merci encore pour l’aide que vous apportez à chacun d’entre-nous.

    1. Bonjour, Merci pour votre commentaire et votre question. je n’ai pas encore expérimenté ce type de montage nomade en général je me contente d’une batterie externe et utilise donc l’usb cependant je vous invite à jeter un œil à cet article : http://hardware-libre.fr/2014/07/arduino-le-nano-officiel/ . Attention comme il est précisé si vous avez la nécessité du 3v3 dans votre montage celui-ci n’est disponible que si le nano est alimenté via sa prise USB.

      1. Merci pour la réponse.

        Effectivement, mon idée de projet étant nécessairement nomade et souhaitant y utiliser un RFID RC522 alimenté en 3v3, ça pose un problème…

        Je n’ai plus qu’à parcourir les forums pour trouver une solution…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *