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.
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 |
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ă |
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"); }
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:
Arhiva contine: Codul sursă, schema electrică, imaginea proiectului proiect_pm_elisa.zip