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
<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>
Nom | Prix | Fréquence | Protocole de communication | Lien |
---|---|---|---|---|
PN532 | 10€ | 13,56 MHz | I²C, UART | Lien |
RC522 | 8€ | 13,56 MHz | SPI | Lien |
/*
* 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);
}