L’objectif de ce tutoriel est d’apprendre à lire l’identificateur unique (UID) d’une carte RFID à l’aide d’une carte ESP8266 NodeMCU, d’un module RFID-RC522 et d’un afficheur LCD I2C.
Nous allons configurer l’ESP8266 pour communiquer avec le module RFID-RC522 via l’interface SPI et afficher l’UID détecté sur l’écran LCD I2C. Ce projet est utile pour des applications telles que le contrôle d’accès, l’identification d’objets ou la gestion de présence.
À la fin de ce tutoriel, vous serez en mesure de :
- Connecter et configurer le module RFID-RC522 avec l’ESP8266.
- Lire l’UID d’une carte RFID.
- Afficher l’UID sur un écran LCD I2C.
- Comprendre le fonctionnement des protocoles de communication SPI et I2C utilisés dans ce projet.
Le RFID-RC522 est un lecteur RFID fonctionnant à 13.56 MHz, utilisé pour lire et écrire des données sur des cartes ou tags RFID compatibles. Il communique principalement via SPI, mais supporte aussi I2C et UART.
Fonctionnement du module RFID-RC522
1- Envoi d’un signal : La carte ESP8266 NodeMCU envoie une requête via SPI pour activer le module.
2- Détection d’une carte : Le module détecte une carte RFID lorsqu’elle est à proximité (~5 cm).
3- Lecture de l’UID : Le module récupère l’identifiant unique (UID) de la carte et l’envoie à La carte ESP8266 NodeMCU.
4- Affichage des données : La carte ESP8266 NodeMCU peut ensuite afficher l’UID sur un écran LCD I2C ou l’envoyer à un serveur.
Un badge RFID est un porte-clés contenant une puce RFID et une antenne, permettant d’être identifié à distance par un lecteur RFID comme le RFID-RC522. Il fonctionne grâce à la radiofréquence et ne nécessite pas de contact physique avec le lecteur.
Fonctionnement d'un badge RFID
1- Lorsqu’un badge RFID est approché d’un lecteur RFID-RC522, un champ électromagnétique est généré.
2- La puce du badge s’active grâce à ce champ et envoie son UID (Identifiant Unique) au lecteur.
3- La carte ESP8266 NodeMCU analyse l’UID et effectue une action : affichage sur un écran LCD I2C, ouverture d’une porte, enregistrement de présence, etc.
Une carte RFID est une carte en plastique équipée d’une puce électronique et d’une antenne intégrée, permettant une communication sans contact avec un lecteur RFID comme le RFID-RC522. Elle est utilisée pour l'identification, l'accès sécurisé et le stockage de données.
Fonctionnement d'une carte RFID
1- Lorsqu’une carte RFID est approchée d’un lecteur RFID-RC522, celui-ci génère un champ électromagnétique.
2- La puce de la carte s’active et envoie son UID au lecteur.
3- La carte ESP8266 NodeMCU lit et analyse l’UID, puis effectue une action comme l'affichage sur un écran LCD I2C
Connexion du module RFID-RC522 à la carte ESP8266 NodeMCU
RFID-RC522 Pin | ESP8266 NodeMCU Pin |
SDA | GPIO 15 (D8) |
SCK | GPIO 14 (D5) |
MOSI | GPIO 13 (D7) |
MISO | GPIO 12 (D6) |
GND | GND |
RST | GPIO 0 (D3) |
3V3 | 3V3 |
Connexion de l'afficheur I2C LCD à la carte ESP8266 NodeMCU
LCD I2C Screen Pin | ESP8266 NodeMCU Pin |
VCC | VIN |
GND | GND |
SDA | GPIO 4 (D2) |
SCL | GPIO 5 (D1) |
Voici un programme en MicroPython pour lire l'UID d'une carte RFID avec une ESP8266 NodeMCU, un module RFID-RC522 et un afficheur LCD I2C.
Bibliothèques requises
MFRC522 → pour gérer le module RFID-RC522
i2c_lcd et lcd_api → pour afficher les informations sur l’écran LCD I2C.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
from time import sleep_ms from machine import Pin, SPI, SoftI2C,ADC from mfrc522 import MFRC522 from lcd_api import LcdApi from i2c_lcd import I2cLcd # Define the SPI pins sck = Pin(14, Pin.OUT) mosi = Pin(13, Pin.OUT) miso = Pin(12, Pin.OUT) sda = Pin(15, Pin.OUT) I2C_ADDR = 0x27 totalRows = 4 totalColumns = 20 # Create SPI object and initialize MFRC522 RFID reader spi = SPI(baudrate=100000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso) # Initialize I2C LCD (address 0x27, 20x4 LCD) i2c = SoftI2C(sda=Pin(4), scl=Pin(5), freq=400000) #initializing the I2C method for ESP8266 NodeMCU lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns) def do_read(): while True: rdr = MFRC522(spi, sda) uid = "" <span class="hljs-comment"># Check if an RFID card is present</span> (stat, tag_type) = rdr.request(rdr.REQIDL) if stat == rdr.OK: (stat, raw_uid) = rdr.anticoll() if stat == rdr.OK: # Get the card serial number (UID) uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])) print(uid) lcd.clear() lcd.move_to(1,1) lcd.putstr("Card ID") lcd.move_to(1,2) # Display UID on LCD lcd.putstr(uid) sleep_ms(5000) lcd.clear() lcd.move_to(1,1) lcd.putstr('Scan your card') else: dui="" lcd.clear() lcd.move_to(1,1) lcd.putstr('Scan your card') do_read() |
Explication du programme
1- Initialisation des périphériques :
Le module RFID-RC522 est configuré en SPI.
L’afficheur LCD I2C est connecté via les broches SDA et SCL.
2- Boucle principale :
Le programme attend qu'une carte RFID soit approchée.
Lorsqu'une carte est détectée, il lit son UID et l'affiche sur l'écran LCD.
Après quelques secondes, l'écran se réinitialise pour attendre une nouvelle carte.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info