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