Publié le

Capteur RFID

Semaine très chargée et week-end à venir encore plus… Je vais quand même prendre un peu de temps pour vous présenter le capteur RFID RC522 que j’ai reçu aujourd’hui.

Déballage :

Voici le petit bijou que j’ai reçu :

 

IMG_2665

Il se compose donc :

  • Un module  RV522
  • Une carte RFID
  • Un porte clef RFID

Le montage :

  • Un arduino MEGA
  • Deux LEDS
  • Deux résistances de 330Ω
  • Des fils…

Pour la connection du capteur RFID sur une arduino MEGA :

MOSI: Pin 51 / ICSP-4
MISO: Pin 50 / ICSP-1
SCK : Pin 52 / ISCP-3
SDA : Pin 53 (Configurable)
RST : Pin 5 (Configurable)

Si ce n’est pas un MEGA :

MOSI: Pin 11 / ICSP-4
MISO: Pin 12 / ICSP-1
SCK : Pin 13 / ISCP-3
SDA : Pin 10 (Configurable)
RST : Pin 9 (Configurable)

Je vous propose le montage COMPLET (c’est à dire avec les LEDS mais qui ne vont pas servir dans la première partie de l’article :

ATTENTION LE MODULE RFID FONCTIONNE EN 3,3V 

RFID-mega_bb1 RFID-Nano_bb

Lecture de l’identifiant de la carte et du porte clef :

Les cartes RFID possèdent un identifiant qu’il va falloir retrouver pour pouvoir ensuite savoir si notre carte est autorisée ou refusée.

#include <SPI.h>                            // Librairies nécessaires
#include <RFID.h>

RFID monModuleRFID(53,5);                  // On déclare les PINS SDA et RST Pour le NANO : monModuleRFID(10,9)

int UID[5];                                // On crée notre variable qui vit stocker l'UID de notre carte

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  monModuleRFID.init();                    // On initialise le module RFID

}

void loop()
{
    if (monModuleRFID.isCard()) {
          if (monModuleRFID.readCardSerial()) {
            Serial.print("L'UID est: ");
            for(int i=0;i<=4;i++)
            {
              UID[i]=monModuleRFID.serNum[i];
              Serial.print(UID[i],DEC);
              Serial.print(".");
            }
            Serial.println("");
          }
          monModuleRFID.halt();
    }
    delay(5000);
}

En sortie j’obtient ceci (J’ai passé le porte clef et premier puis la carte) :

Sans-titre2

  • Porte clef : 105.115.122.158.254
  • Carte : 138.55.50.59.180

Commande d’une LED :

Mettons en pratique l’authentification. Je vais programmer pour que le porte clef soit reconnu comme valide (LED verte) et que la carte soit invalide (LED ROUGE) :

#include <SPI.h>
#include <RFID.h>

const char DOUT_LED_ROUGE = 2;
const char DOUT_LED_VERTE = 3;

RFID monModuleRFID(53,5);

int UID[5]={};
int MASTERKEY[5]={105,115,122,158,254};

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  monModuleRFID.init();
  pinMode(DOUT_LED_ROUGE, OUTPUT);
  pinMode(DOUT_LED_VERTE, OUTPUT);
  digitalWrite(DOUT_LED_ROUGE, LOW);
  digitalWrite(DOUT_LED_VERTE, LOW);

}

void loop()
{
    if (monModuleRFID.isCard()) {
          if (monModuleRFID.readCardSerial()) {
            Serial.print("L'UID est: ");
            for(int i=0;i<=4;i++)
            {
              UID[i]=monModuleRFID.serNum[i];
              Serial.print(UID[i],DEC);
              Serial.print(".");
            }
            Serial.println("");
          }

          if (UID[0] == MASTERKEY[0]
           && UID[1] == MASTERKEY[1]
           && UID[2] == MASTERKEY[2]
           && UID[3] == MASTERKEY[3]
           && UID[4] == MASTERKEY[4])
          {
              digitalWrite(DOUT_LED_VERTE, HIGH);
              delay(500);
              digitalWrite(DOUT_LED_VERTE, LOW);
          }
          else
          {
              digitalWrite(DOUT_LED_ROUGE, HIGH);
              delay(500);
              digitalWrite(DOUT_LED_ROUGE, LOW);
          }
          monModuleRFID.halt();
    }
    delay(1);
}

Le résultat en vidéo :

Téléchargement des librairies ICI