Table of Contents

Sistem de securitate PIN si RFID

Introducere

  • Autor: Diaconita Elisa-Maria
  • Grupa: 334CB

Proiectul este un sistem de acces inteligent care permite deblocarea unei încuietori prin două metode:

Scopul proiectului este să creeze un sistem de acces sigur, personalizabil și ușor de extins.

Descriere generală

Hardware Design

Componente
Nume Cantitate Link
Arduino Mega 1 Arduino Mega
Modul RFID RC522 1 Modul RFID RC522
Keypad 4×4 1 Keypad 4x4
Servo Motor 1 Servo Motor
LCD 16×2 + I2C 1 LCD 16x2 cu I2C
Breadboard 1 Breadboard
Conexiuni esențiale
Componentă Pin Arduino MEGA Motiv conectare
RFID-RC522 - SDA 53 Pin SPI pentru selecția dispozitivului RFID
RFID-RC522 - SCK 52 Pin SPI pentru semnalul de ceas (clock)
RFID-RC522 - MOSI 51 Pin SPI pentru transmisia datelor de la Arduino
RFID-RC522 - MISO 50 Pin SPI pentru recepția datelor spre Arduino
RFID-RC522 - RST 49 Reset hardware pentru modul RFID
RFID-RC522 - GND GND Împământare comună
RFID-RC522 - 3.3V 3.3V Alimentare modul RFID (funcționează la 3.3V)
Keypad - ROW1–4 33, 35, 37, 39 Citire rânduri de la tastatură
Keypad - COL1–4 31, 29, 27, 25 Citire coloane de la tastatură
LCD I2C - SDA 20 Comunicare I2C – date
LCD I2C - SCL 21 Comunicare I2C – ceas
LCD I2C - VCC 5V Alimentare pentru display
LCD I2C - GND GND Împământare comună
Servomotor - Signal 9 Semnal PWM pentru controlul poziției
Servomotor - VCC 5V Alimentare servo
Servomotor - GND GND Împământare comună

Software Design

Mediu de dezvoltare
Biblioteci folosite
Flow-ul programului

setup() Inițializare componente hardware și comunicații Configurare LCD pentru afișaj Setare poziție servo inițială (ușă închisă)

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();

  doorServo.attach(9);     
  doorServo.write(0);    

  lcd.begin(16, 2);
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Door Lock System");

  delay(2000);              
  lcd.clear();
  lcd.print("Scan Card or");
  lcd.setCursor(0, 1);
  lcd.print("Enter Password");
}

loop() Citire date de la RFID Verificare UID Citire taste de la keypad și verificare parolă

void loop() {
  if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
    String uid = "";
    for (byte i = 0; i < rfid.uid.size; i++) {
      uid += String(rfid.uid.uidByte[i], HEX);
    }
    uid.toUpperCase();
    Serial.print("Card UID: ");
    Serial.println(uid);

    if (uid == correctUID) {
      openDoor();
    } else {
      lcd.clear();
      lcd.print("Access Denied!");
      delay(2000);
      lcd.clear();
      lcd.print("Scan Card or");
      lcd.setCursor(0, 1);
      lcd.print("Enter Password");
    }
    rfid.PICC_HaltA();
  }

Funcția openDoor() Deschide ușa dacă accesul este permis După 2 secunde închide ușa Reafișează ecranul de start

void openDoor() {
  lcd.clear();
  lcd.print("Access Granted!");
  doorServo.write(90);     
  delay(2000);          
  doorServo.write(0);         
  lcd.clear();
  lcd.print("Door Locked");
  delay(1000);
  lcd.clear();
  lcd.print("Scan Card or");
  lcd.setCursor(0, 1);
  lcd.print("Enter Password");
}
 

Rezultate obținute

  • Sistemul permite autentificarea atât prin card RFID, cât și prin cod PIN introdus de la tastatură.
  • LCD-ul 16×2 cu interfață I2C afișează corect mesajele de status pentru utilizator (ex: „Access Granted”, „Incorrect Password” etc.).
  • Servomotorul reacționează rapid la autentificarea validă, simulând deschiderea unei uși.
  • Sistemul revine automat în starea inițială după fiecare acces.
  • Timpul de răspuns este mic (sub 1 secundă) pentru ambele metode de autentificare.
  • Sistemul este funcțional și poate fi folosit ca prototip pentru aplicații de control acces reale.

Concluzii

Mi-a placut acest proiect pentru că a fost pentru prima dată când am avut ocazia să implementez un proiect în Arduino. Pe parcursul dezvoltării proiectului:

Download

Arhiva contine: Codul sursă, schema electrică, imaginea proiectului proiect_pm_elisa.zip