Utiliser un module RFID-RC522 avec l’Arduino

J’ai reçu un module RFID-RC522 13.56Mhz compatible Arduino, comme d’habitude, je n’y vois pas encore d’utilité, mais je suis très curieux donc c’est parti.

module_rfid

Les broches

Branchement

  • Module RFID -> Arduino
  • SDA -> Pin 10
  • SCK -> Pin 13
  • MOSI -> Pin 11
  • MISO -> Pin 12
  • GND -> GND
  • RST -> Pin 9
  • VCC -> 3.3V

Installez la librairie RFID

Téléchargez la librairie et installez-la

Lien vers la librairie

Lecture du tag RFID

#include <SPI.h>
#include <RFID.h>
RFID RFID(10,9);
int UID[5];
void setup()
{
  Serial.begin(9600);
  SPI.begin();
  RFID.init();  
}
void loop()
{
    if (RFID.isCard()) {  
          if (RFID.readCardSerial()) {        
            Serial.print("L'UID est: ");
            for(int i=0;i<=4;i++)
            {
              UID[i]=RFID.serNum[i];
              Serial.print(UID[i],DEC);
              Serial.print(".");
            }
            Serial.println("");
          }          
          RFID.halt();
    }
    delay(100);    
}

 

Controle d'un Servomoteur

Branchement du servo:

  • vcc -> + 5V Arduino
  • GND -> GND Arduino
  • Signal -> Pin ~5 Arduino

Un peu à la manière d'une barrière. On badge, çà s'ouvre, on passe.

Pour la lecture du tag, j'ai commenté les lignes permettant d'afficher l'UID de la carte. Pour mes propres essais je les ai simplement retiré.

#include <SPI.h>
#include <RFID.h>
#include <Servo.h>
RFID RFID(10,9);
int UID[5]={};
int MASTERKEY[5]={1,171,43,97,224}; // UID du badge ou de la carte acceptée sous forme de tableau (Array).
Servo monServo;
bool statut = 1;
void setup()
{
  Serial.begin(9600);
  SPI.begin();
  RFID.init();
  monServo.attach(5); // Servo connecté à la pin 9.  
}
void loop()
{
    if (RFID.isCard()) {  
          /* Lecture du tag */
          if (RFID.readCardSerial()) 
          {        
          /*Serial.print("L'UID est: ");*/  
            for(int i=0;i<=4;i++)
            {
              UID[i]=RFID.serNum[i];
             /* Serial.print(UID[i],DEC);
              Serial.print(".");*/
            }
            /*Serial.println("");*/
          }
          /* fin de  Lecture du tag */
          if (UID[0] == MASTERKEY[0]   // Si l'UID 0  est égale à 1
           && UID[1] == MASTERKEY[1]   // Et si l'UID 1  est égale à 171
           && UID[2] == MASTERKEY[2]   // Et si l'UID 2  est égale à 43
           && UID[3] == MASTERKEY[3]   // Et si l'UID 3  est égale à 97
           && UID[4] == MASTERKEY[4])  // Et si l'UID 4  est égale à 224
            {
              ouverture();
            }
            else
            {
              fermeture();
            }
          RFID.halt();
    }
    delay(100);    
}
void ouverture()
{
  monServo.write(125); // On ouvre le portail fermé.
}
void fermeture()
{
  monServo.write(35); // On ouvre le portail fermé.
}
/* inspiré de: http://www.les-electroniciens.com/ */ 

Sources: Lien | Lien

← Previous post

Next post →

5 Comments

  1. Hello, ne devrait-on pas changer les && par des || pour la partie:

    if (UID[0] == MASTERKEY[0] // Si l’UID 0 est égale à 1
    && UID[1] == MASTERKEY[1] // Et si l’UID 1 est égale à 171
    && UID[2] == MASTERKEY[2] // Et si l’UID 1 est égale à 43
    && UID[3] == MASTERKEY[3] // Et si l’UID 1 est égale à 97
    && UID[4] == MASTERKEY[4]) // Et si l’UID 1 est égale à 224

    Car là c’est impossible qu’un badge soit égal à la fois à 171 et à 43 en même temps par exemple.

    • On analyse le tableau ici. Si tu remarque on check l’UID[0], ensuite le [1],… jusqu’au UID[4]. L’erreur ne se trouve que dans le commentaire du code ^^ j’ai copié-collé trop vite ^^

      Mais je corrige 🙂

      Bien à toi,

      Lee

  2. Antonin

    Salut !
    Je suis débutant et je voudrais savoir comment on installe la librairie .rar (idehack.com/dl/rfid_lib.rar).
    Merci !

Laisser un commentaire