Qu’est ce qu’un module RFID ?
Dans cet article nous parlerons du module RFID-RC522 13.56Mhz compatible Arduino, comme d’habitude, je n’y vois pas encore d’utilité personnelle, mais je suis très curieux donc c’est parti. Tout d’abord cet ensemble de composants permet la lecture d’une carte à puce. Une fois passée devant le module, la carte a puce est analysée ce qui nous permettra par exemple de donner diverses autorisations d’accès, d’effectuer des actions etc… L’utilisation d’une puce RFID avec le module combiné a l’Arduino peut laisser imaginer toute sorte de système d’identification d’entrée ou de protection.
Ce dont vous aurez besoin
- Un module RFID - Disponible ici
- Un Arduino – Disponible ici
- Quelques câbles de prototypage – Disponibles ici
Les broches du module RFID - PinOut
Branchement du module RFID
Le protocole du module RFID utilisé pour communiquer avec l’Arduino étant le SPI, il faut connecter le lecteur de carte sur des broches spécifiques:
- Module RFID -> Arduino
- SDA -> Pin 10
- SCK -> Pin 13
- MOSI -> Pin 11
- MISO -> Pin 12
- GND -> GND
- RST -> Pin 9
- VCC -> 3.3V ou 5V
Concernant le VCC veillez à vérifier la tension d’utilisation de votre module
Installez la librairie RFID
Téléchargez la librairie et installez-la.
Note sur l’installation de la librairie RFID:
- Décompressez l’archive rfid.rar
- Allez dans le dossier: rfid_lib > rfid_lib > Librairies
- A cet endroit vous retrouverez deux dossiers: RFID et SPI (Clique droit et copiez ces deux dossier).
- Allez ensuite dans vos document: Documents > Arduino > libraries et copiez les deux dossiers a cet endroit.
Code Arduino - Lecture du tag RFID
Pour lire la carte et récupérer le code UID téléversez ce code sur votre Arduino.
#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);
}Une fois le code téléversé sur votre Arduino, ouvrez le moniteur série pour voir le résultat et récupérer le code UID de votre tag
Idée de projet avec le module RFID et Arduino
Autorisation d’accès et ouverture de barrière: Controle d’un Servomoteur
Comme exemple d’Application j’ai réalisé l’ouverture d’une « barrière ». Pour çà j’ai connecté un servomoteur à l’Arduino (Mais çà aurait pu être un relais, une led,…) lorsque le bon tag est présenté au lecteur le servomoteur change d’angle et la barrière s’ouvre.
Ce qui donne:
- Lecture du badge RFID
- Si la valeur est correcte changement de position du servomoteur en position « ouverte »
- Si la valeur est incorrect changement de position du servomoteur en position « fermée »
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 (Puce RFID), j’ai commenté les lignes permettant d’afficher l’UID de la carte(de la puce RFID). 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é.
}Sources: Lien
0 commentaires