|

Maison sécurisée par RFID

Dans le cadre de mon projet final de fin de programme en Technologie du génie électrique, j’ai réalisé un système de contrôle d’accès permettant de sécuriser une porte de maison à l’aide de la technologie RFID (Radio Frequency Identification). L’objectif était de concevoir une maquette fonctionnelle capable de simuler un système réel utilisé dans de nombreux environnements comme les entreprises, les hôtels ou les bâtiments sécurisés.

Composants utilisés

Le système est composé des éléments suivants :

  • Microcontrôleur Arduino UNO R3
  • Lecteur RFID RC522
  • Cartes RFID
  • Servomoteur SG90 (mécanisme d’ouverture de la porte)
  • LED (indication visuelle)
  • Buzzer (signal sonore)
  • Breadboard et fils de connexion
  • Boîtier conçu en impression 3D

Fonctionnement bref du système

Le système repose sur un microcontrôleur Arduino UNO connecté à un lecteur RFID. Lorsqu’une carte est présentée devant le lecteur :

  • Le système lit l’identifiant unique (UID) de la carte
  • Il compare cet identifiant avec une liste de cartes autorisées
  • Il prend ensuite une décision automatique

✔️ Si la carte est autorisée :

  • Une LED verte s’allume
  • Un signal sonore court est émis
  • La porte s’ouvre automatiquement grâce à un servomoteur
  • Après quelques secondes, la porte se referme automatiquement

❌ Si la carte est refusée :

  • Une LED rouge s’allume
  • Un signal sonore plus long est déclenché
  • La porte reste fermée

Ce fonctionnement permet de démontrer un système simple mais efficace de contrôle d’accès.

Schéma électrique

Le montage comprend l’Arduino UNO connecté au lecteur RFID RC522 via le protocole SPI (broches MISO, MOSI, SCK et SS). Il est important de bien respecter ces connexions, car une inversion des broches empêche le fonctionnement du lecteur RFID.
Le servomoteur est relié à une sortie PWM de l’Arduino pour permettre le contrôle précis de l’ouverture et de la fermeture de la porte.
Les LED et le buzzer sont connectés aux sorties numériques afin de fournir une indication visuelle et sonore de l’état du système (accès autorisé ou refusé).

Circuit complet

Vue d’ensemble du montage incluant tous les composants connectés à l’Arduino.

Branchement RFID

Le module RC522 est connecté en SPI (MOSI, MISO, SCK, SS, RST) et alimenté
en 3,3 V.

Branchement du Servomoteur

Le servomoteur est relié à une sortie numérique (signal, VCC, GND) et permet l’ouverture et la fermeture de la porte.

Technologie RFID expliquée

La technologie RFID (Radio Frequency Identification) permet d’identifier une carte sans contact grâce à des ondes radio. Dans mon projet, j’utilise un lecteur RFID RC522 fonctionnant à une fréquence de 13,56 MHz, celui-ci génère un champ électromagnétique qui alimente la carte lorsqu’elle est proche. La carte renvoie ensuite son identifiant unique (UID).

Chaque carte possède un UID différent, ce qui permet de distinguer les utilisateurs. Dans mon projet, cet UID est utilisé comme clé d’accès.

La portée du lecteur utilisé (RC522) est d’environ 2 à 4 cm, ce qui limite les lectures involontaires et améliore la sécurité.

Programmation du RFID

Dans mon programme Arduino, le lecteur RFID lit le UID de chaque carte présentée. Ce UID est ensuite converti en chaîne de caractères afin de pouvoir être comparé avec ceux enregistrés dans le code.

Exemple de fonctionnement :

  • Lecture du UID de la carte
  • Comparaison avec les UID autorisés
  • Exécution d’une action (ouvrir ou refuser l’accès)

Association d’un nom à chaque carte

Pour rendre le système plus réaliste, j’ai associé un nom à chaque carte RFID.

Dans le code, chaque UID correspond à un utilisateur :

  • Si le UID correspond à une carte connue → un nom est assigné
  • Sinon → la carte est considérée comme inconnue

Cela permet d’afficher directement le nom de la personne dans le système et dans le fichier Excel.

Peut-on dupliquer une carte RFID ?

Oui, certaines cartes RFID peuvent être copiées, mais cela dépend du type de carte utilisé.

  • Les cartes standards (comme celles utilisées dans ce projet) ont un UID fixe non modifiable
  • Cependant, il existe des cartes spéciales appelées cartes clonables qui permettent de copier un UID

La duplication nécessite :

  • Un appareil spécifique (copieur RFID)
  • Ou un système avancé avec un lecteur compatible

Cela montre que la sécurité RFID simple peut être limitée et qu’elle peut être améliorée avec des systèmes plus avancés (cryptage, authentification, etc.).


Évolution du projet

Au cours du développement, deux améliorations ont été ajoutées :

  • Ajout de plusieurs cartes autorisées avec nom associé
  • Enregistrement des accès dans Excel (heure, UID, nom, statut)

Enregistrement des accès

Une fonctionnalité avancée du projet est l’enregistrement automatique des accès dans un fichier Excel.

À chaque utilisation, le système enregistre :

  • L’heure à laquelle la carte est présentée
  • Le UID de la carte
  • Le nom associé à la carte
  • Si l’accès est autorisé ou refusé

Cette fonction permet de simuler un système de surveillance utilisé dans les entreprises.

Enregistrement automatique des accès

Conception 3d

La conception 3D du projet a été réalisée afin de créer une maquette réaliste d’une maison intégrant le système de contrôle d’accès RFID. Le modèle comprend plusieurs éléments essentiels : un toit, une base représentant la structure principale, ainsi qu’une porte mobile permettant de simuler l’ouverture et la fermeture. Un système de maintien de la porte a été conçu afin d’assurer un mouvement stable et précis. Un engrenage est utilisé pour transmettre le mouvement du servomoteur vers la porte, garantissant ainsi une ouverture contrôlée. Enfin, un support spécifique a été conçu pour maintenir solidement le servomoteur en position, assurant la fiabilité mécanique de l’ensemble du système. 

Code

#include <SPI.h>          // Bibliothèque pour la communication SPI
#include <MFRC522.h>      // Bibliothèque du lecteur RFID RC522
#include <Servo.h>        // Bibliothèque pour contrôler le servomoteur
// ---------------------------
// Définition des broches
// ---------------------------
#define SS_PIN 10         // Broche SDA / SS du module RFID
#define RST_PIN 9         // Broche RESET du module RFID
#define SERVO_PIN 3       // Broche de commande du servomoteur
#define LED_G 4           // LED verte
#define LED_R 5           // LED rouge
#define BUZZER 2          // Buzzer
// ---------------------------
// Création des objets
// ---------------------------
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Création de l’objet RFID
Servo myServo;                      // Création de l’objet servo
void setup() {
  // Initialisation de la communication série
  Serial.begin(9600);
  // Initialisation du bus SPI
  SPI.begin();
  // Initialisation du lecteur RFID
  mfrc522.PCD_Init();
  // Configuration des broches en sortie
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  // Mise à l’état initial des sorties
  digitalWrite(LED_G, LOW);
  digitalWrite(LED_R, LOW);
  noTone(BUZZER);
  // Message affiché dans le moniteur série
  Serial.println("Presentez votre carte au lecteur...");
}
void loop() {
  // Vérifie si une nouvelle carte est présente
  if (!mfrc522.PICC_IsNewCardPresent()) return;
  // Vérifie si la carte peut être lue
  if (!mfrc522.PICC_ReadCardSerial()) return;
  // ---------------------------
  // Lecture de l'identifiant UID
  // ---------------------------
  String uid = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    // Ajoute un espace avant chaque octet
    uid += (mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    uid += String(mfrc522.uid.uidByte[i], HEX);
  }
  // Conversion en majuscules
  uid.toUpperCase();
  // Supprime le premier espace
  uid = uid.substring(1);
  // Affiche l’UID dans le moniteur série
  Serial.print("UID : ");
  Serial.println(uid);
  // ---------------------------
  // Vérification des cartes autorisées
  // ---------------------------
  String nom = "";
  if (uid == "93 5D 67 25") {
    nom = "Lowen";
  }
  else if (uid == "03 C2 12 36") {
    nom = "Makoume";
  }
  // ---------------------------
  // Si la carte est autorisée
  // ---------------------------
  if (nom != "") {
    Serial.print("OK Bienvenue a : ");
    Serial.println(nom);
    // Allume la LED verte
    digitalWrite(LED_G, HIGH);
    // Émet un bip court
    tone(BUZZER, 500);
    delay(300);
    noTone(BUZZER);
    // Ouvre la porte avec le servomoteur
    myServo.attach(SERVO_PIN);
    myServo.write(180);
    delay(350);
    myServo.detach();
    // Attend 5 secondes avant de refermer
    delay(5000);
    // Referme la porte
    myServo.attach(SERVO_PIN);
    myServo.write(0);
    delay(315);
    myServo.detach();
    // Éteint la LED verte
    digitalWrite(LED_G, LOW);
  }
  // ---------------------------
  // Si la carte est refusée
  // ---------------------------
  else {
    Serial.println("Acces refuse");
    // Allume la LED rouge
    digitalWrite(LED_R, HIGH);
    // Émet un bip long
    tone(BUZZER, 300);
    delay(1000);
    noTone(BUZZER);
    // Éteint la LED rouge
    digitalWrite(LED_R, LOW);
  }
  // ---------------------------
  // Fin de communication avec la carte
  // ---------------------------
  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
  // Petite pause avant la prochaine lecture
  delay(1500);
}

Me contacter

Auteur/autrice

Publications similaires