Avec Amazon prime vous bénéficiez de la livraison gratuite en 1 jours ouvré. 30 jours d’essais gratuits dans obligation d’abonnement!
Utiliser un module RFID-RC522 avec l’Arduino
Tutoriel RFID 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. L’utilisation d’une puce RFID avec de module combiné a l’arduino peut laisser imaginer toute sorte de système d’identification d’entrée ou de protection.
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é.
}
/* inspiré de: http://www.les-electroniciens.com/ */
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 ^^
Hey, je suis débutante, j’aimerais je suis en train de réaliser le montage d’un lecteur de carte RFID , j’ai mis le code ci dessus, le probleme c’est pour le téléchargement de la bibliothèque: téléchargé en .rar je l’ai extrais le problème c’est que lorsque je cherche pour le mettre dans ma bibliothèque je ne trouve aucun document pouvant etre ouvert et j’ai le message d’erreur suivant :
Bibliothèque non valide trouvée dans : ……mes documents
merci d’avance pour vos réponses
Tout d’abord, as-tu bien collé le fichier décompressé dans le dossier: “Mes Documents/Arduino/libraries” ?
Ensuite il ne faut pas oublier de redémarrer complètement le le logiciel Arduino.
J’ai du chercher aussi un peu avant de réussir : il faut décompresser l’archive .rar, qui contient l’arborescence suivante :
rfid_id /
__Librairies/
____RFID/
____SPI/
Ensuite à partir du logiciel arduino il faut bien sélectionner juste le dossier RFID (double-cliquer dessus) et faire OK. Ça devrait l’importer correctement.
J’ai le même module RFID chez moi. Les tags fournis avec contiennent une puce MIFARE Classic 1K qui contient 1Ko de mémoire. En plus la puce et le lecteur peuvent s’authentifier mutuellement et chiffrer tous leurs échanges de données, il est possible de diviser la mémoire entre plusieurs applications distinctes…
Je l’utilise avec la librairie miguelbalboa/RFID, je vous conseille de trouver des exemples de codes en ligne, elle est assez compliquée à utiliser
Je réalise un projet pour le bac et j’ai justement utilisé votre programme qui a fonctionné lorsque j’étais au lycée. Cependant, je m’en suis servi sur l’ordinateur de mon prof qui avait déjà téléchargé la bonne bibliothèque. Maintenant, je souhaite faire des modifications depuis chez moi mais je n’arrive pas à faire fonctionner le programme en téléchargeant la bibliothèque ci dessus. Est ce que vous avez une idée de mon problème? J’ai téléchargé la bibliothèque au format .rar. J’ai alors essayé de le décompresser avec Winrar et j’ai testé le programme qui ne fonctionne pas. J’ai alors testé une autre approche: je l’ai converti au format zip grâce à des convertisseur présents sur internet. J’y suis parvenu, j’ai téléchargé la bibliothèque dans arduino mais le programme ne marche pas non plus…
A savoir: J’ai Arduino 1.0.6 que j’ai pris sur clé USB sur l’ordi de mon prof. Je ne sais pas si cela peut apporter une info utile ^^
Ce que je peux vous conseiller dans un premier temps c’est une installation complète de l’IDE dans la même version que celle de votre prof (sans passer par l’usb peut-etre).
Vous avez une erreur ou un problème d’import de bibliothèque ?
Bonsoir,
J’ai bien téléchargé la bonne version de arduino mais en effet, je pense avoir un problème avec la bibliothèque. Lorsque je suis dans arduino, je mets “Importer bibliothèque”, “Add library” puis le message qui s’affiche est: “Library added to your libraries. Check “Import library” menu”. Puis je ferme arduino, je le ré-ouvre et finalement j’essaie les programmes en exemples inclus avec la bibliothèque. Cependant toujours la même chose, il y a un problème avec RFID RFID…
Il est vrai que l’information est pertinente. Je n’hésiterais pas à l’ajouter à l’article ^^ pour la réponse cela doit déprendre du modèle mais c’est de l’ordre du cm, voire 2 cm dans ce cas-ci.
Bien a toi,
Lee
Bonjour,
Merci pour cette page très claire aux explications et sketchs simples.
Je viens de faire quelques adaptations pour essayer des allumages/extinctions de leds avec les 2 badges fournis dans le kit “Chinois” et ça marche nickel.
Sais-tu pourquoi le quartz de la carte est un 27,12Mhz (le double de 13,56Mhz) ?
merci pour ce tuto, c’est juste ce qu’il me fallait !
J’avais déjà essayé il y a de cela 1 an et demi sans succès… Je suppose que l’émetteur que j’avais acheté était défectueux donc j’en ai racheté un (le même) et cette fois ci en suivant ce tuto il fonctionne nickel. Il ne me reste plus qu’à retester l’ancien pour confirmer que le problème était bien un problème de matériel et non d’une mauvaise manip ou de l’usage de la mauvaise librairie.
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
Serial.print(“L’UID est: “);
for(int i=0;i<=4;i++)
{
SerRFID+=monModuleRFID.serNum[i];
}
Bonjour,
Tout d’abord merci pour ce tuto qui est clair et précis. De mon coté ça fonctionne parfaitement.
J’ai en revanche une petite question. Ici nous lisons l’UID de la carte, mais est il possible de lire également le contenue de la carte? J’imagine que ces cartes peuvent posséder d’autres informations que leur numéro de série non? Comment les lires?
je n’ai aucune idée de s’il y a d’autres informations à lire sur ces puces. A vrai dire je ne pense pas qu’elles soient dédiées à d’autres choses qu’a attribuer un “matricule”. Cependant si je trouve des infos je n’hésiterais pas à te les communiquer.
J’ai un problème qui me prend la tête depuis plusieurs heures ayant fait la plupart des forums, dans le but de trouver une solution. J’espère que vous pourrez m’éclairer !
Ayant copié le programme ci-dessus, téléchargé la bibliothèque SPI et RFID je téléverse
Televersement réussie, Mais le badge ne fonctionne, rien ne s’affiche dans le sériel et un message me dit bibliothèque non valide trouvé dans le //…
NICOLAS MICHNIEWSKI
sur 16 octobre 2019 à 10 h 55 min
Bonjour, quand on lit une carte rfid (comme avec une app Android sur smartphone), l’uid est exprimé en valeur hexadécimal et ici on utilise du décimal. Y a-t-il moyen d’utiliser la librairie rfid.h en manipulant l’uid du tag au format hexadécimal ? Dans mon projet, il n’est pas prévu de passer par l’arduino pour connaître l’uid, celui ci doit être connu en amont et enregistré en config sur un fichier de carte SD et je ne comprends pas comment convertir l’uid hex vers la valeur que me donne la librairie rfid.h en décimal
Bonjour,
je débute,
je m’acharne , et me retourne le Cerveau.
j’ai beau installer toutes les bibliothèques RFID qu’on me conseil sur le net,
j’ai toujours ce fichu ” ‘class MFRC522’ has no member named ‘init'”.
que puis-je faire?
Je vais t’inviter a patienter. Je prend un certain temps entre les articles mais je suis en train de refaire un tutoriel RFID - Repartant de 0 avec toutes les ressources nécessaires (librairie, liste du matériel etc). Tandis que d’autre y arrivent juste en suivant l’article, certains d’entre vous ont des soucis pour éviter tout problème de version / compatibilité je prend le temps de tout refaire et illustrer.
bonjour a tous je voudrait utiliser la mémoire eeprom pour expire la carte(par exemple j’ai utiliser la carte 10 fois ) quelqu’un aidez moi,excusez moi je ne parle pas très bien la langue française
Mo projet consiste faire une serrure codée avec carte RFID et clavier
mon programme fonctione mais , j’ai du y inscrire en “dur” les N° des cartes RFID autorisées
J’aurais aimé pouvoir mettre ces N° UID detectés en mémoire EEPROM
et les comparer ensuite lorsqu’ils sont presentés devant le lecteur
est-ce possible
Bonjour,
Je dois programmer un badge RFID avec arduino de tel manière que je dois envoyer avec ce badge deux informations (numéro de série et type de gaz) (ils’agit de bouteilles de gaz).
Mais je n’arrive pas à écrire sur le badge ni a faire la programmation.
Merci d’avance pour vos réponses.
cordialement
Tarvis
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
Salut !
Je suis débutant et je voudrais savoir comment on installe la librairie .rar (idehack.com/dl/rfid_lib.rar).
Merci !
Ah bah non j’ai trouvé 🙂
Oh bhen tu m’as même pas laissé le temps de répondre… 🙂
😉
Hey, je suis débutante, j’aimerais je suis en train de réaliser le montage d’un lecteur de carte RFID , j’ai mis le code ci dessus, le probleme c’est pour le téléchargement de la bibliothèque: téléchargé en .rar je l’ai extrais le problème c’est que lorsque je cherche pour le mettre dans ma bibliothèque je ne trouve aucun document pouvant etre ouvert et j’ai le message d’erreur suivant :
Bibliothèque non valide trouvée dans : ……mes documents
merci d’avance pour vos réponses
Hey a toi aussi,
Tout d’abord, as-tu bien collé le fichier décompressé dans le dossier: “Mes Documents/Arduino/libraries” ?
Ensuite il ne faut pas oublier de redémarrer complètement le le logiciel Arduino.
Bien à toi,
Leroyd
J’ai du chercher aussi un peu avant de réussir : il faut décompresser l’archive .rar, qui contient l’arborescence suivante :
rfid_id /
__Librairies/
____RFID/
____SPI/
Ensuite à partir du logiciel arduino il faut bien sélectionner juste le dossier RFID (double-cliquer dessus) et faire OK. Ça devrait l’importer correctement.
J’ai aussi des problèmes sur les librairies.
Salut LeroyD,
Petite question, avec le module RFID-RC522 peux t-on programmer une carte? Ou juste lire ce qu’elle contient.
Merci d’avance,
Bonjour,
Il existe des modèle ouvert en écriture.
Cependant pas ce modèle ne l’est pas.
Un projet en particulier ?
Sorry pour le temps de réponse quelques travaux en cours 🙂
bàt,
Leroyd
J’ai le même module RFID chez moi. Les tags fournis avec contiennent une puce MIFARE Classic 1K qui contient 1Ko de mémoire. En plus la puce et le lecteur peuvent s’authentifier mutuellement et chiffrer tous leurs échanges de données, il est possible de diviser la mémoire entre plusieurs applications distinctes…
Je l’utilise avec la librairie miguelbalboa/RFID, je vous conseille de trouver des exemples de codes en ligne, elle est assez compliquée à utiliser
Bonsoir , je suis débutante et je veut écrire un code avec arduino pour le systeme de paiement avec le badge RFID si quelqu’un peut m’aider merci
Bonsoir,
Je réalise un projet pour le bac et j’ai justement utilisé votre programme qui a fonctionné lorsque j’étais au lycée. Cependant, je m’en suis servi sur l’ordinateur de mon prof qui avait déjà téléchargé la bonne bibliothèque. Maintenant, je souhaite faire des modifications depuis chez moi mais je n’arrive pas à faire fonctionner le programme en téléchargeant la bibliothèque ci dessus. Est ce que vous avez une idée de mon problème? J’ai téléchargé la bibliothèque au format .rar. J’ai alors essayé de le décompresser avec Winrar et j’ai testé le programme qui ne fonctionne pas. J’ai alors testé une autre approche: je l’ai converti au format zip grâce à des convertisseur présents sur internet. J’y suis parvenu, j’ai téléchargé la bibliothèque dans arduino mais le programme ne marche pas non plus…
A savoir: J’ai Arduino 1.0.6 que j’ai pris sur clé USB sur l’ordi de mon prof. Je ne sais pas si cela peut apporter une info utile ^^
hello,
Ce que je peux vous conseiller dans un premier temps c’est une installation complète de l’IDE dans la même version que celle de votre prof (sans passer par l’usb peut-etre).
Vous avez une erreur ou un problème d’import de bibliothèque ?
Bàt,
Lee
Bonsoir,
J’ai bien téléchargé la bonne version de arduino mais en effet, je pense avoir un problème avec la bibliothèque. Lorsque je suis dans arduino, je mets “Importer bibliothèque”, “Add library” puis le message qui s’affiche est: “Library added to your libraries. Check “Import library” menu”. Puis je ferme arduino, je le ré-ouvre et finalement j’essaie les programmes en exemples inclus avec la bibliothèque. Cependant toujours la même chose, il y a un problème avec RFID RFID…
Bonjour,
j’ai essayé ton code, mais le test RFID.isCard() ne passe jamais.
Le fait de poser la carte ne provoque rien. Sais tu d’ou peut provenir le problème ?
Bonjour, très bon article merci a vous
Cependant il me reste une question, niveau distance entre le tag et le lecteur, le max est à combien ?
Il est vrai que l’information est pertinente. Je n’hésiterais pas à l’ajouter à l’article ^^ pour la réponse cela doit déprendre du modèle mais c’est de l’ordre du cm, voire 2 cm dans ce cas-ci.
Bien a toi,
Lee
4cm pour moi avec la carte blanche (voir même plus en augmentant le gain du récépteur), avec le badge bleu c’est un peu moins
Bonjour,
Merci pour cette page très claire aux explications et sketchs simples.
Je viens de faire quelques adaptations pour essayer des allumages/extinctions de leds avec les 2 badges fournis dans le kit “Chinois” et ça marche nickel.
Sais-tu pourquoi le quartz de la carte est un 27,12Mhz (le double de 13,56Mhz) ?
Salut,
merci pour ce tuto, c’est juste ce qu’il me fallait !
J’avais déjà essayé il y a de cela 1 an et demi sans succès… Je suppose que l’émetteur que j’avais acheté était défectueux donc j’en ai racheté un (le même) et cette fois ci en suivant ce tuto il fonctionne nickel. Il ne me reste plus qu’à retester l’ancien pour confirmer que le problème était bien un problème de matériel et non d’une mauvaise manip ou de l’usage de la mauvaise librairie.
En tout cas pour ceux que ça intéresse, mon modèle qui fonctionne avec ce tuto est le suivant : https://www.amazon.fr/gp/product/B00QFDRPZY/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
Je propose le code suivant pour éviter les multiples variables et simplifier le code
#include
#include
const char DOUT_LED_ROUGE = 2;
const char DOUT_LED_VERTE = 3;
RFID monModuleRFID(10,9);
String MasterRFID=”7221106197117″;
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()
{
String SerRFID=””;
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
Serial.print(“L’UID est: “);
for(int i=0;i<=4;i++)
{
SerRFID+=monModuleRFID.serNum[i];
}
Serial.print(SerRFID);
Serial.println("");
}
if (SerRFID==MasterRFID)
{
digitalWrite(DOUT_LED_VERTE, HIGH);
delay(500);
digitalWrite(DOUT_LED_VERTE, LOW);
Serial.println("Master");
}
else
{
digitalWrite(DOUT_LED_ROUGE, HIGH);
delay(500);
digitalWrite(DOUT_LED_ROUGE, LOW);
}
monModuleRFID.halt();
}
delay(1);
}
Bonjour,
Tout d’abord merci pour ce tuto qui est clair et précis. De mon coté ça fonctionne parfaitement.
J’ai en revanche une petite question. Ici nous lisons l’UID de la carte, mais est il possible de lire également le contenue de la carte? J’imagine que ces cartes peuvent posséder d’autres informations que leur numéro de série non? Comment les lires?
Merci
Hello,
je n’ai aucune idée de s’il y a d’autres informations à lire sur ces puces. A vrai dire je ne pense pas qu’elles soient dédiées à d’autres choses qu’a attribuer un “matricule”. Cependant si je trouve des infos je n’hésiterais pas à te les communiquer.
Lee
Bonjour,
Merci pour ce tuto, est-il possible de rajouter un shield Wifi ?
Bonjour!!
J’ai un message d’erreur me disant que au niveau du programme:
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;
RFID n’est pas déclarée avez vous une solution>?
merci d’avance
bonjour,
et comment on augmente le gain du récepteur ?
Denis
Bonjour !
J’ai un problème qui me prend la tête depuis plusieurs heures ayant fait la plupart des forums, dans le but de trouver une solution. J’espère que vous pourrez m’éclairer !
Ayant copié le programme ci-dessus, téléchargé la bibliothèque SPI et RFID je téléverse
Televersement réussie, Mais le badge ne fonctionne, rien ne s’affiche dans le sériel et un message me dit bibliothèque non valide trouvé dans le //…
Merci de votre aide
Bonjour, quand on lit une carte rfid (comme avec une app Android sur smartphone), l’uid est exprimé en valeur hexadécimal et ici on utilise du décimal. Y a-t-il moyen d’utiliser la librairie rfid.h en manipulant l’uid du tag au format hexadécimal ? Dans mon projet, il n’est pas prévu de passer par l’arduino pour connaître l’uid, celui ci doit être connu en amont et enregistré en config sur un fichier de carte SD et je ne comprends pas comment convertir l’uid hex vers la valeur que me donne la librairie rfid.h en décimal
bonjour j’ai installer la librairie mais quand je vérifie le code c’est marqué que ca ne connais pas
#include
bonjour j’essaie de réaliser ce programme je suis débutante
je ne sais pas où lire l’uid de la carte
meri
Hello,
As-tu quelque chose qui s’affiche dans le moniteur série sur pc ? (ou mac).
Lee
non mais je ne sais pas l’utiliser
Salut, pour moi je suis bloqué a la 1er étape,
Le moniteur série n’affiche pas le TAG même après l’installation de la bibliothèque
Bonjour
J’ai fais l’acquisition du matériel pour suivre ce tutorial super cela fonctionne sans problème.
Merci
DIDIER
comment vous modifier le programe pour plusieur tag ?
comment communiquer une base de donnés avec RFID rc522
Tu peux imaginer un code avec a la place d’un Arduino un NodeMcu pour pouvoir envoyer celà vers mysql
Bàt,
Lee
Bonjour,
je débute,
je m’acharne , et me retourne le Cerveau.
j’ai beau installer toutes les bibliothèques RFID qu’on me conseil sur le net,
j’ai toujours ce fichu ” ‘class MFRC522’ has no member named ‘init'”.
que puis-je faire?
Je vais t’inviter a patienter. Je prend un certain temps entre les articles mais je suis en train de refaire un tutoriel RFID - Repartant de 0 avec toutes les ressources nécessaires (librairie, liste du matériel etc). Tandis que d’autre y arrivent juste en suivant l’article, certains d’entre vous ont des soucis pour éviter tout problème de version / compatibilité je prend le temps de tout refaire et illustrer.
Lee
bonjour a tous je voudrait utiliser la mémoire eeprom pour expire la carte(par exemple j’ai utiliser la carte 10 fois ) quelqu’un aidez moi,excusez moi je ne parle pas très bien la langue française
Bonjour ,
Mo projet consiste faire une serrure codée avec carte RFID et clavier
mon programme fonctione mais , j’ai du y inscrire en “dur” les N° des cartes RFID autorisées
J’aurais aimé pouvoir mettre ces N° UID detectés en mémoire EEPROM
et les comparer ensuite lorsqu’ils sont presentés devant le lecteur
est-ce possible
cordialement
Bonjour,
Je dois programmer un badge RFID avec arduino de tel manière que je dois envoyer avec ce badge deux informations (numéro de série et type de gaz) (ils’agit de bouteilles de gaz).
Mais je n’arrive pas à écrire sur le badge ni a faire la programmation.
Merci d’avance pour vos réponses.
cordialement
Tarvis