Les portes avec accès par carte sont des systèmes de contrôle d'accès électronique qui permettent d’ouvrir une porte à l’aide d’une carte (souvent RFID, magnétique ou à puce). Ce type de système remplace les clés mécaniques traditionnelles par une méthode plus moderne, sécurisée et pratique.
1- Carte RFID (sans contact)
la plus courante aujourd’hui
Fonctionne à des fréquences comme 13.56 MHz (MIFARE) ou 125 kHz.
Communication sans contact avec un lecteur.
2- Carte magnétique
Contient une bande magnétique qui doit être glissée dans un lecteur.
Plus ancienne, moins sécurisée.
3- Carte à puce (à contact)
Nécessite un contact physique avec le lecteur.
Utilisée dans des systèmes nécessitant un haut niveau de sécurité (ex. banques).
1- L’utilisateur approche ou insère sa carte dans un lecteur placé à l’entrée.
2- Le lecteur vérifie l’authenticité et l'autorisation de la carte.
3- Si la carte est reconnue comme valide, le système déverrouille la porte (électro-aimant, gâche électrique, serrure motorisée…).
4- La porte se referme automatiquement ou manuellement après l’entrée.
Entreprises : contrôle des employés, horaires, zones restreintes.
Hôtels : cartes temporaires pour les clients.
Écoles / universités : accès aux salles, bibliothèques, dortoirs.
Immeubles résidentiels : accès à l’entrée ou aux parkings.
Laboratoires ou sites sensibles : accès hautement contrôlé.
Sécurité renforcée : accès réservé aux cartes autorisées.
Hygiène / Sans contact (dans le cas des cartes RFID).
Flexibilité : gestion des autorisations (ajout/suppression d’un badge).
Traçabilité : enregistrement des accès possibles.
Révocation facile : une carte perdue peut être désactivée sans changer la serrure.
Créer un système qui permet d’ouvrir une porte automatiquement lorsqu’une carte RFID autorisée est détectée. Le système utilise une ESP32 comme unité de contrôle, un lecteur RFID RC522 pour lire les cartes, un servomoteur pour simuler l’ouverture de la porte, et un afficheur LCD I2C pour afficher les messages d’état.
Fonctionnement général
1- À la mise sous tension, l’écran LCD affiche "Scanner une carte...".
2- L’utilisateur approche une carte RFID du lecteur RC522.
3- L’ESP32 lit l’UID de la carte.
4- Si l’UID correspond à une carte autorisée, le servomoteur tourne pour ouvrir la porte, un message s'affiche : "Accès autorisé".
5- Après quelques secondes, le servomoteur revient en position fermée.
6- Si la carte est inconnue, le message "Accès refusé" s'affiche, et la porte reste fermée.
1. Carte ESP32
Rôle : c’est le cerveau du projet. Elle contrôle tous les autres composants.
Module RFID RC522
Rôle : lire l’UID (identifiant unique) des cartes RFID.
Carte RFID (badge ou porte-clé)
Rôle : fournir un identifiant unique pour authentifier l’utilisateur.
Servomoteur (ex : SG90 ou MG996R)
Rôle : simuler l’ouverture et la fermeture d’une porte.
Écran LCD avec module I2C
Rôle : afficher les messages d’état ("Scanner une carte", "Accès autorisé", etc.).
Breadboard
Rôle : tester et connecter les composants facilement
Câbles Dupont
Rôle : assurer la connexions entre les modules
Prototype de maison en bois
Le prototype de maison en bois simule une vraie maison avec une porte mobile.
Il constitue un support pour fixer le servomoteur et la porte.
Connexion de l'afficheur I2C LCD à la carte ESP32
LCD I2C Pin | ESP32 pin |
VCC | 5 volt |
GND | GND |
SDA | GPIO 21 |
SCL | GPIO 22 |
Connexion du servomoteur à la carte ESP32
Servomoteur | ESP32 |
Fil marron (-) | GND |
Fil rouge (+) | 5V |
Fil jaune | GPIO 23 |
Connexion du module RFID-RC522 à la carte ESP32
RFID-RC522 Pin | ESP32 Pi |
VCC | 3V3 |
RST | GPIO 2 |
GND | GND |
MISO | GPIO 19 |
MOSI | GPIO 23 |
SCK | GPIO 18 |
SDA (SS) | GPIO 5 |
Voici le code en Micropython qui implémente le fonctionnement du système :
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
Servo → pour commander le servomoteur
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
import machine from machine import Pin, SPI,SoftI2C from time import sleep from servo import Servo from lcd_api import LcdApi from i2c_lcd import I2cLcd from mfrc522 import MFRC522 # === CONFIGURATION I2C POUR L'ÉCRAN LCD === I2C_ADDR = 0x27 totalRows = 4 totalColumns = 20 i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000) #initializing the I2C method for ESP32 lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns) # === CONFIGURATION DU MODULE RFID RC522 === sck = Pin(18, Pin.OUT) mosi = Pin(23, Pin.OUT) miso = Pin(19, Pin.OUT) sda = Pin(5, Pin.OUT) spi = SPI(baudrate=100000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso) # === CONFIGURATION DU SERVOMOTEUR === motor=Servo(pin=17) # A changer selon la broche utilisée motor.move(90) # tourne le servo à 90° pour fermer la porte position_door=90 lcd.clear() # === Afficher des messages sur l'afficheur LCD I2C lcd.move_to(0,1) lcd.putstr("Scanner votre carte") lcd.move_to(0,2) lcd.putstr("pour ouvrir porte") while True: rdr = MFRC522(spi, sda) uid = "" (stat, tag_type) = rdr.request(rdr.REQIDL) if stat == rdr.OK: (stat, raw_uid) = rdr.anticoll() if stat == rdr.OK: # Si le module RFID détecte une carte uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])) print(uid) if uid=="0x2334a703" or uid=="0x717ab601" : # comparer l'identificateur de la carte à lise des identificateurs autorises if position_door==90: # si la porte est fermee lcd.clear() lcd.move_to(1,1) lcd.putstr("Porte s'ouvre") for i in range(91,19,-1): motor.move(i) # tourne le servo à 20° pour ouvrir la porte sleep(0.1) position_door=20 lcd.clear() lcd.move_to(1,1) lcd.putstr("Porte ouverte") sleep(5) lcd.clear() lcd.move_to(0,1) lcd.putstr("Scanner votre carte") lcd.move_to(0,2) lcd.putstr("pour fermer porte") else: if position_door==20: # si la porte est ouverte lcd.clear() lcd.move_to(1,1) lcd.putstr("Porte se ferme") for i in range(20,91): motor.move(i) # tourne le servo à 90° pour fermer la porte sleep(0.1) position_door=90 lcd.clear() lcd.move_to(1,1) lcd.putstr("Porte fermee") sleep(5) lcd.clear() lcd.move_to(0,1) lcd.putstr("Scanner votre carte") lcd.move_to(0,2) lcd.putstr("pour ouvrir porte") else : # si la carte detectee est non autorisee lcd.clear() lcd.move_to(1,1) lcd.putstr("Carte refusee") lcd.move_to(0,2) lcd.putstr("impossible d'ouvrir") lcd.move_to(0,3) lcd.putstr("la porte !!!") sleep(5) lcd.clear() lcd.move_to(0,1) lcd.putstr("Scanner votre carte") lcd.move_to(0,2) lcd.putstr("pour ouvrir porte") |
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