Lecture de carte RFID
1. Connexion matérielle
Le module RFID MFRC522 se connecte au port GROVE A du M5Stack Basic, qui correspond aux broches I2C (SDA sur GPIO21, SCL sur GPIO22). L’adresse I2C par défaut du module est 0x28.
2. Initialisation logicielle
Il faut utiliser la bibliothèque MFRC522_I2C pour piloter le lecteur RFID, ainsi que les bibliothèques Wire (I2C) et M5Unified (pour gérer l’écran et l’initialisation du M5Stack).
L’initialisation consiste à :
-
Démarrer le M5Stack (
M5.begin()
). -
Initialiser le bus I2C (
Wire.begin()
). -
Initialiser le module RFID (
mfrc522.PCD_Init()
).
3. Lecture du UID
Dans la boucle principale du programme, il s’agit de :
-
Vérifier la présence d’une nouvelle carte avec
mfrc522.PICC_IsNewCardPresent()
. -
Lire la carte avec
mfrc522.PICC_ReadCardSerial()
. -
Si une carte est détectée, parcourir le tableau
mfrc522.uid.uidByte[]
qui contient le UID, et l’afficher sur l’écran du M5Stack ou sur le port série.
4. Fonction de conversation hexadécimale
Le capteur RFID renvoie les données lues de la carte dans un tableau sous forme de bits bruts. Il faut donc convertir ces données en une chaine de charactères hexadécimaux :
String uidhex(MFRC522 &rfid){
String uidStr;
for (byte i = 0; i < rfid.uid.size; i++) {
if (rfid.uid.uidByte[i] < 0x10) uidStr += "0";
uidStr += String(rfid.uid.uidByte[i], HEX);
if (i < rfid.uid.size - 1) uidStr += ":";
}
return uidStr;
}
Ce code renvoie une chaine de charactères contenant le numéro de série de la carte lue au format standard, c'est à dire : XX:XX:XX:XX ... où X est un caractère hexadécimal.
5. Exemple de code
#include <M5Unified.h>
#include <Wire.h>
#include "MFRC522_I2C.h"
MFRC522 mfrc522(0x28); // Adresse I2C du module RFID
void setup() {
M5.begin();
Wire.begin();
mfrc522.PCD_Init();
M5.Display.setTextSize(2);
M5.Display.println("Presentez une carte");
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
String uid = uidhex(mfrc522);
M5.Display.print("UID : ");
M5.Display.println("uid");)
}
M5.delay(2000);
M5.Display.fillRect(0, 60, 320, 240, BLACK);
}
Ce code affiche le UID de chaque carte RFID présentée devant le lecteur sur l’écran du M5Stack.
5. Résumé du fonctionnement
-
Branchez le module RFID sur le port GROVE A du M5Stack.
-
Chargez le code exemple sur le M5Stack.
-
Approchez une carte RFID ou un appareil NFC du lecteur.
-
Le UID de la carte s’affiche instantanément à l’écran.
Cette méthode est fiable pour des applications telles que le contrôle d’accès, la gestion de présence ou l’inventaire.
No Comments