Fonctionnement du FRID

RFID est l’acronyme de radiofrequency identification. Composée d’un lecteur et d’une radio-étiquette passive. Le lecteur est composé d’un émetteur et d’un récepteur. L’étiquette passive et composée d'une antenne et d’une puce. Les émissions radio de l’émetteur alimentent la puce qui transmet ses données au récepteur.

Principe de communication RFID avec une radio-étiquette passive

Principe de communication RFID avec une radio-étiquette passive

Lecteurs disponibles “compatible Arduino”

<aside> ⚠️ Il existe plusieurs modules :

Certains fonctionnent sur 13,56 MHz ou 125 kHz.

Avant de racheter de nouvelles cartes du tag, assurez-vous qu’ils fonctionnent bien sur la même fréquence que le lecteur

</aside>

Liste de module compatible Arduino

Nom Prix Fréquence Protocole de communication Lien
PN532 10€ 13,56 MHz I²C, UART Lien
RC522 8€ 13,56 MHz SPI Lien

Code

/*
 * Simple Arduino RFID acces control code
 * Written By Antoine Chatleain for Adimaker's beta project Tomorowtech elec.
 * 
 * Alpha 0.1 NOT SUITABLE FOR PROUDCTION ENVIRONMENT 
 *  
 * Dependencies :
 * 
 * SPI library by Arduino
 * MFRC522 library by miguelbalboa
 *  
 */
 
#include <SPI.h>
#include <MFRC522.h>

/* 
 * Project Pinout
 * 
 * +---------+-------+
 * | Arduino | RC522 |
 * +=========+=======+
 * | 13      | SCK   |
 * | 12      | MISO  |
 * | 11      | MOSI  |
 * | 10      | SDA   |
 * +---------+-------+
 */

#define SS_PIN 10
#define RST_PIN 9 
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Define MFRC522 wiring configuration.

const int tabSize = 4;
String cardId[tabSize] = {"77-39-50-39", "37-35-11-34", "14-35-10-12", "55-35-11-22"}; // déclare le tableau nommé 'cardId'
                  // contenant 5 colones de type String

void setup() {
  Serial.println("Basic acces control software");
  Serial.println("Init RFID Reader");
  Serial.begin(115200);
  SPI.begin();
  mfrc522.PCD_Init();

  Serial.println("");
}

void loop(){
  //Look for cards to scan
  if ( !mfrc522.PICC_IsNewCardPresent() ){
    return;
  }
  //Select one of the cards
  if ( !mfrc522.PICC_ReadCardSerial() ) {
    return;
  }
  
  String content= "";
  byte letter;
  for( byte i = 0; i < mfrc522.uid.size; i++ ){
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
     if( i < mfrc522.uid.size-1 ) content+="-";
  }
  content.toUpperCase();
  Serial.println();
  Serial.println("UID tag :'" + content + "'");

  // Check if the card is recognized
  for (int i =0 ; tabSize-1; i++){
    if( content == cardId[i]){
      Serial.println("Authorized access");
      Serial.print("Carte autorisée n° ");
      Serial.println(i);
    }
    else{
      Serial.println("Access denied");
    }
  }  
  delay(1000);
}