Pour ce projet, nous allons utiliser une carte Arduino Uno, un module RFID pour l'authentification par
carte, un clavier matriciel pour la saisie du code, un relais pour activer la serrure électronique, et un
écran LCD pour afficher des messages d'état. Le clavier sera un clavier matriciel 4x4, et les connexions
des lignes et des colonnes sont respectivement sur les broches A0, A1, A2, A3 pour les lignes et 1, 2, 3, 4
pour les colonnes. Le relais sera utilisé pour actionner la serrure.
Voici le code Arduino qui peut être utilisé pour cette configuration :
Matériel nécessaire :
Arduino Uno
Module RFID (par exemple, MFRC522)
Clavier matriciel 4x4
Relais (pour actionner la serrure)
Écran LCD (par exemple, 16x2)
Serrure électrique (commandée par relais)
Connexions :
Le module RFID est connecté à l'Arduino via le SPI (MISO, MOSI, SCK, et SDA).
Le clavier matriciel est connecté sur les broches définies (A0, A1, A2, A3 pour les lignes et 1, 2, 3, 4 pour
les colonnes).
Le relais est connecté à une broche numérique de l'Arduino (par exemple, la broche 8).
L'écran LCD est connecté aux broches RS, E, D4, D5, D6, D7.
Code Arduino :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <SPI.h>
#include <MFRC522.h>
// Définition des broches pour le RFID
#define RST_PIN 9 // Broche de réinitialisation du module RFID
#define SS_PIN 10 // Broche de sélection du module RFID
MFRC522 mfrc522(SS_PIN, RST_PIN); // Instance du lecteur RFID
// Définition des broches du clavier matriciel
const byte ROW_NUM = 4; // 4 rangées
const byte COL_NUM = 4; // 4 colonnes
char keys[ROW_NUM][COL_NUM] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pin_rows[ROW_NUM] = {A0, A1, A2, A3}; // Pins des rangées
byte pin_cols[COL_NUM] = {1, 2, 3, 4}; // Pins des colonnes
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_cols, ROW_NUM, COL_NUM);
// Définition du relais
int relaisPin = 8;
// Définition de l'écran LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse 0x27, écran 16x2
// Variables de gestion du mot de passe et de l'authentification
String password = "1234"; // Mot de passe par défaut
String enteredPassword = "";
bool authenticated = false;
void setup() {
// Initialisation de l'écran LCD
[Link]();
[Link]("En attente RFID...");
delay(2000);
// Initialisation du module RFID
[Link]();
mfrc522.PCD_Init();
// Initialisation du relais
pinMode(relaisPin, OUTPUT);
digitalWrite(relaisPin, LOW); // Relais éteint par défaut
// Initialisation du clavier
[Link](keypadEvent);
void loop() {
// Vérification de la présence d'une carte RFID
if (mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
String rfid = "";
for (byte i = 0; i < [Link]; i++) {
rfid += String([Link][i], HEX);
[Link]();
[Link]();
[Link]("Carte RFID lue");
delay(2000);
// Si la carte correspond au "mot de passe" (ici une carte spécifique pour l'exemple)
if (rfid == "XX XX XX XX") {
[Link]();
[Link]("Acces Autorise");
digitalWrite(relaisPin, HIGH); // Active le relais
delay(5000); // La serrure reste ouverte pendant 5 secondes
digitalWrite(relaisPin, LOW); // Désactive le relais
[Link]();
[Link]("Attente carte");
delay(1000);
} else {
[Link]();
[Link]("Carte non valide");
delay(2000);
// Vérification de la saisie du clavier
char key = [Link]();
if (key) {
if (key == '#') {
// Vérifier le mot de passe entré
if (enteredPassword == password) {
[Link]();
[Link]("Mot de passe correct");
digitalWrite(relaisPin, HIGH); // Active le relais
delay(5000); // La serrure reste ouverte pendant 5 secondes
digitalWrite(relaisPin, LOW); // Désactive le relais
enteredPassword = ""; // Réinitialise le mot de passe entré
} else {
[Link]();
[Link]("Mot de passe erroné");
delay(2000);
enteredPassword = ""; // Réinitialise le mot de passe entré
} else if (key == '*') {
// Réinitialiser la saisie du mot de passe
enteredPassword = "";
[Link]();
[Link]("Mot de passe: ");
} else {
// Ajouter la touche au mot de passe entré
enteredPassword += key;
[Link](0, 1);
[Link](enteredPassword);
}
// Fonction pour gérer les événements du clavier
void keypadEvent(KeypadEvent key) {
// Cette fonction n'est pas utilisée directement ici mais peut être personnalisée
Explication du code :
1. RFID : Nous utilisons la bibliothèque MFRC522 pour interagir avec le module RFID. Si une carte est lue,
le numéro de la carte est comparé à une valeur préenregistrée ("XX XX XX XX" dans cet exemple). Si la
carte est valide, le relais est activé pour 5 secondes (le temps d'ouvrir la serrure).
2. Clavier matriciel : Le clavier permet de saisir un mot de passe. Si le mot de passe est correct, le relais
est activé pour ouvrir la serrure pendant 5 secondes.
3. Relais : Un relais est utilisé pour commander la serrure. Il est contrôlé par la broche 8 de l'Arduino.
Lorsque l'accès est autorisé (soit par RFID soit par mot de passe), le relais est activé pendant 5 secondes.
4. LCD : L'écran LCD affiche des messages d'état, comme "Carte RFID lue", "Mot de passe correct", ou
"Erreur".
Remarques :
Assurez-vous que les connexions du module RFID, du clavier et de l'écran LCD sont correctement
réalisées.
Le mot de passe par défaut est "1234". Vous pouvez le changer à votre convenance dans le code.
Le numéro de la carte RFID valide doit être remplacé par celui que vous souhaitez utiliser.
Le relais peut être connecté à une serrure électronique pour contrôler l'accès.
Sécurité :
Ce projet est pour des applications simples et d'initiation. Dans des applications réelles, assurez-vous
d'implémenter des mesures de sécurité supplémentaires.