#include <SPI.
h>
#include <MFRC522.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
// Pins pour le RFID
#define RST_PIN 9
#define SS_PIN 10
// Pins pour le DHT22
#define DHT_PIN 4
#define DHT_TYPE DHT22
// Pins pour le module Bluetooth
SoftwareSerial BTSerial(2, 3); // RX, TX
// Pins pour le relais (verrou)
#define RELAY_PIN 7
// Initialisation du lecteur RFID
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Initialisation du capteur DHT22
DHT dht(DHT_PIN, DHT_TYPE);
// Initialisation de l'écran LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C pour un écran 16x2
// Variables pour l'ID RFID
String authorizedID = "1234567890"; // L'ID RFID autorisé (à remplacer par un vrai ID)
void setup() {
// Initialisation du port série pour le moniteur
[Link](9600);
// Initialisation du Bluetooth
[Link](9600);
// Initialisation du module RFID
[Link]();
mfrc522.PCD_Init();
// Initialisation du capteur DHT22
[Link]();
// Initialisation de l'écran LCD I2C
[Link](16, 2);
[Link](1);
[Link]();
// Initialisation du relais
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Verrouillé au début
// Afficher le message d'accueil sur l'écran LCD
[Link](0, 0);
[Link]("Systeme RFID");
[Link](0, 1);
[Link]("Prêt.");
delay(2000);
void loop() {
// Vérifie si une carte RFID est présente
if (mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
String rfidID = "";
for (byte i = 0; i < [Link]; i++) {
rfidID += String([Link][i], HEX);
[Link]();
[Link]("Carte détectée: " + rfidID);
// Vérifier si l'ID RFID est autorisé
if (rfidID == authorizedID) {
[Link]("Accès autorisé !");
[Link]();
[Link](0, 0);
[Link]("Accès autorisé!");
digitalWrite(RELAY_PIN, HIGH); // Déverrouiller le verrou
delay(5000); // Le verrou reste ouvert pendant 5 secondes
digitalWrite(RELAY_PIN, LOW); // Verrouiller à nouveau
[Link]();
[Link](0, 0);
[Link]("Verrouillage...");
} else {
[Link]("Accès refusé.");
[Link]();
[Link](0, 0);
[Link]("Accès refusé.");
delay(2000);
// Attend que la carte soit retirée
mfrc522.PICC_HaltA();
// Lire les données du capteur DHT22
float humidity = [Link]();
float temperature = [Link]();
// Si la lecture échoue, on ignore
if (isnan(humidity) || isnan(temperature)) {
[Link]("Erreur de lecture du DHT22");
[Link]();
[Link](0, 0);
[Link]("Erreur DHT22");
} else {
// Afficher les données sur l'écran LCD
[Link]();
[Link](0, 0);
[Link]("Temp: ");
[Link](temperature);
[Link](" C");
[Link](0, 1);
[Link]("Hum: ");
[Link](humidity);
[Link](" %");
// Envoi des données au smartphone via Bluetooth
[Link]("Temp: ");
[Link](temperature);
[Link](" C, Hum: ");
[Link](humidity);
[Link](" %");
// Ajout d'un délai pour éviter une surcharge du processeur
delay(1000);