Système de présence avec ESP32
Dans le cadre de l’évolution des technologies embarquées et de l’Internet des Objets (IoT), la gestion automatisée de la présence devient une solution efficace et moderne pour divers environnements tels que les écoles, les entreprises ou les laboratoires. Ce tutoriel vise à concevoir un système de présence basé sur un microcontrôleur ESP32 couplé à un module RFID (Radio Frequency Identification), permettant l’identification sans contact des individus à l’aide de cartes ou de badges RFID. Les données de présence sont ensuite transmises en temps réel à une plateforme IoT via une connexion Wi-Fi, offrant ainsi un suivi centralisé, sécurisé et accessible à distance.
Qu'allons-nous découvrir dans ce tutoriel?
Dans ce tutoriel, nous allons d'abord vous montrer ce que vous apporte ce tutoriel. Ensuite, nous allons vous montrer comment réaliser un système de présence puis transmettre les données sur une plateforme IoT(Youpilab IoT).
Que vous apporte ce tutoriel?
Grâce à ce tutoriel, vous allez comprendre comment intégrer un ESP32 avec un module RFID et un ECRAN LCD 16X2 pour créer un système de présence connecté .Également , grâce à ce tutoriel, vous allez comprendre comment utilser une plateforme IoT(Youpliab IoT) pour visualiser des données collectées.
Comment intégrer un ESP32 avec un module RFID et un ECRAN LCD 16X2 pour créer un système de présence?
Dans cette partie du tutoriel, nous allons vous montrer les composants requis pour réaliser le système, le schéma de connexion du système avec le pinout à l'appuie. Ensuite , nous allons vous montrer les bibliothèques requises pour le code source du système et donner une explication détaillée du code source.
Composants requis
-
01 Module wifi NODE MCU ESP 32
-
01 Lecteur RFID RC522
-
01 Ecran LCD I2C
-
02 Cartes RFID
-
01 Breadboard et jumpers
Schéma de connexion du système
Le pinout du schéma de connexion
Connexion ECRAN LCD 16X2 et ESP 32
ECRAN LCD 16X2 |
ESP32 |
GND |
GND |
VCC |
5V |
SDA |
GPIO21 |
SCL |
GPIO22 |
Connexion RFID RC522 et ESP32
Lecteur RFID RC522 |
ESP32 |
VCC | 3.3V |
GND | GND |
RST | DPIO22 |
SDA | GPIO21 |
MOSI | GPIO23 |
MISO | GPIO 19 |
SCK | GPIO18 |
Bibliothèques requises pour le code source
-
YoupiLab_IoT_ESP.h : Connexion et communication avec la plateforme YoupiLab IoT.
-
SPI.h : Communication avec le périphériques SPI (lecteur RFID)
-
MFRC522.h : Utilisation du module lecteur de cartes RFID RC522
-
LiquidCrystal_I2C.h : Contrôle d’un écran LCD via I2C (affichage de texte)
Le code source
#include < YoupiLab_IoT_ESP.h >
#include < SPI.h >
#include < MFRC522.h >
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
// Information sur notre WiFi
const char* ssid = "youpilab_fibre";
const char* password = "i_l@v3_yl2021Fibre";
// Identifiants de l'objet YoupiLab
String APP_ID = "sysa192b";
String APP_KEY = "ce2c9200";
YoupiLab_IoT_ESP YlIoTDriver(APP_ID, APP_KEY);
// Pins RFID RC522
#define RST_PIN 4
#define SS_PIN 5
MFRC522 rfid(SS_PIN, RST_PIN);
// Initialisation de l’écran LCD I2C (adresse 0x27, 16 colonnes, 2 lignes)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// UID autorisés
String uid1 = "E6_D9_AF_05";
String uid2 = "91_3E_45_0C";
// Fonction pour formater proprement l’UID
String formatUID() {
String uid_detecte = "";
for (byte i = 0; i < rfid.uid.size; i++) {
if (rfid.uid.uidByte[i] < 0x10) uid_detecte += "0";
uid_detecte += String(rfid.uid.uidByte[i], HEX);
if (i < rfid.uid.size - 1) uid_detecte += "_";
}
uid_detecte.toUpperCase();
return uid_detecte;
}
void printLastError() {
String error = YlIoTDriver.getLastError();
Serial.print("An error occurred : ");
Serial.println(error);
}
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
Wire.begin(21, 22); // pour ESP32
lcd.begin(16, 2);
lcd.backlight(); // Allumer le rétroéclairage
lcd.clear();
if (YlIoTDriver.connectToWifi(ssid, password) == 1) {
Serial.println("Connected");
lcd.setCursor(0, 0);
lcd.print("WiFi connecte");
} else {
Serial.println(" WiFi connexion error");
lcd.setCursor(0, 0);
lcd.print("Erreur WiFi");
}
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Present card...");
Serial.println("Système prêt. Présentez une carte...");
}
void loop() {
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
String uid = formatUID();
String statut;
Serial.print("UID détecté : ");
Serial.println(uid);
if (uid == uid1 || uid == uid2) {
statut = "Accepted";
Serial.println("Carte acceptée");
} else {
statut = "Rejected";
Serial.println("Carte rejetée");
}
// Affichage sur l'écran
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("UID:");
lcd.setCursor(4, 0);
lcd.print(uid.substring(0, 12));
lcd.setCursor(0, 1);
lcd.print("Statut:");
lcd.setCursor(8, 1);
lcd.print(statut);
// Envoi vers YoupiLab
YlIoTDriver.parametersValue["P1"] = uid;
YlIoTDriver.parametersValue["P2"] = statut;
if (YlIoTDriver.sendData() == 1) {
Serial.println("Données envoyées avec succès!");
} else {
Serial.println("Données non envoyées");
printLastError();
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(2000); // laisser le temps de lire
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Present card.....");
}
}
Explication du code source
1. Déclarations des bibliothèques et des variables
Dans ce bout de code, nous avons déclaré les bibliothèques, renseigné les informations de notre Wifi et déclaré nos varialbles, les pins de notre Module RFID RC522 et les UID autorisés.
2. Initialisation des composants et Vérifications
Dans ce bout de code, nous avons initialisé notre module RFID et l'Ecran sans oublier de définir les broches pour l'Ecran LCD.
3. Lecture et Affichage des données
Dans ce bout de code, nous définissons les conditions d'acceptation et de rejet des cartes, également l'envoi des données sur la plateforme et l'affichage dans le moniteur série.
Comment transmettre les données collectées vers la plateforme Youpilab IoT
Dans cette nouvelle et dernière partie du tutoriel, nous allons vous montrer comment utilser la plateforme Youpilab IoT pour les données lues par le Lecteur RFID RC522 .
1. S'insrire et se connecter
Ouvrez votre navigateur et tapez dans la barre de recherche "Youpilab IoT" puis créez un compte et connectez-vous sur la plateforme.
2. Allez ensuite dans la section "Objets" qui se trouve dans le tableau de bord à gauche puis cliquez sur le bouton plus (+) jaune en haut à côté droit pour créer un nouvel objet.
3.Après avoir cliqué sur le bouton plus(+), vous remplissez le formulaire qui s'affiche à l'écran puis vous céez l'objet.
4. Ensuite, cliquez sur la partie sur la partie "Description" de l'objet créé puis copiez les APP-ID et APP-KEY de l'objet que vous allez coller dans le code source.
voici comme suit à quoi ressemble la partie où vous allez coller les APP-ID er APP-KEY
5. Allez à nouveau dans la section "Objets" puis cliquez sur l'icône paramètre en jaune sur la page pour créer les deux .
Les deux paramètres sont l'UID et le Statut de la carte RFID qui sera scannée.
6.Ensuite, cliquez sur le bouton jaune plus (+) en haut à côté droit sur la nouvelle qui va s'afficher .
7.une fois le bouton cliqué, remplissez le forulaire qui s'affiche à l'écran tout en choisissant comme type "string" pour chaque paramètre. Ici alias répresente le paramètre que vous visualiser.
8. Ensuite, allez dans la section "Données et Graphiques" puis cliquez sur l'icône de données qui se trouve sur la page pour visualiser les données.
9. Une fois l'icône cliquée, vous allez voir s'afficher une nouvelle page ( comme montre l'image ci-dessous) où seront affichées les données lues par le Lecteur RFID RC522.
10.Resultats attendus
Une fois les instructions bien suivies , le câblage de système et un téléversement de code bien faits vous aurez les résultats suivants:
a.Les données vont s'afficher sur l'écran LCD 16X2:
Lorsque vous présente la carte RFID comme montre l'image ci-dessous, l'UID et le statut (Rejeté ou Accepté) de cette dernière vont s'afficher sur l'écran LCD:
ici, quand la carte reconnue est présentée , le statut est "Acceptée" mais dans le cas contraire, le statut est "Rejetée".
b. Les données vont être transmises sur la plateforme
Ici, le P1 représente l'UID de la carte RFID et P1 représente le statut de la carte RFID. Avant de pouvoir voir les données s'afficher sur la plateforme, il faut actualiser la page.