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:

  • Introducerea unui cod PIN pe un keypad
  • Scanarea unui card RFID valid

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
  • Arduino IDE
Biblioteci folosite
  • Wire.h – pentru comunicarea I2C între Arduino și LCD
  • LiquidCrystal_I2C.h – pentru controlul afișajului LCD 16×2 cu interfață I2C
  • MFRC522.h – pentru interacțiunea cu modulul RFID RC522
  • Servo.h – pentru controlul servomotorului
  • Keypad.h – pentru gestionarea tastaturii 4×4
Flow-ul programului
  • Verificare UID RFID: cardurile sunt identificate pe baza unui cod unic (UID), care este comparat cu un UID predefinit.
  • Introducere parolă: utilizatorul poate introduce un cod PIN de la tastatură. Caracterele introduse sunt mascate pe ecranul LCD.
  • Verificare și autentificare: dacă UID-ul sau parola este corectă, accesul este permis, iar servomotorul deschide ușa.
  • Afișare mesaje LCD: sistemul oferă feedback vizual pe LCD (e.g. „Access Granted”, „Incorrect Pass”, „Scan Card or Enter Password”).

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:

  • am folosit protocoale de comunicație precum SPI (pentru RFID) și I2C (pentru LCD),
  • am folosit tehnici de citire și validare a datelor de intrare (UID RFID, cod tastatură),
  • am exersat generarea semnalelor PWM pentru controlul servomotorului.

Download

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

pm/prj2025/atoader/elisa.diaconita.txt · Last modified: 2025/05/28 02:15 by elisa.diaconita
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0