Devices & Components
Arduino Uno Rev3
5 mm LED: Green
5 mm LED: Red
Breadboard (generic)
Buzzer
PIR Sensor
MFRC522 RFID/NFC Reader
SG90 Micro Servo
Jumper wires (generic)
9V Power Supply
Hardware & Tools
Soldering iron (generic)
Double sided tape
Silicon
Software & Tools
Arduino IDE
Project description
Code
Code
c
1/// This project was made by Mehmet Efe Peker. 2#include <RFID.h> 3#include <SPI.h> 4#include <Servo.h> 5 6#define SS_PIN 10 7#define RST_PIN 9 8#define SERVO_PIN 8 9#define red 2 10#define green 3 11#define buzzer 7 12#define pir 4 13 14int data; 15 16Servo servo; 17RFID rfid(SS_PIN, RST_PIN); 18 19boolean card = false; 20int rfid_id[5] = {227, 88, 145, 52, 30}; 21boolean lock = false; 22 23void lock_door() { /// Closes the door. 24 if (lock) { 25 servo.write(180); 26 Serial.println("Door closed."); 27 delay(100); 28 servo.write(0); 29 } 30} 31 32void setup() { 33 pinMode(red, OUTPUT); 34 pinMode(green, OUTPUT); 35 pinMode(buzzer, OUTPUT); 36 pinMode(pir, INPUT); 37 servo.attach(SERVO_PIN); 38 Serial.begin(9600); 39 SPI.begin(); 40 rfid.init(); 41} 42 43void loop() { 44 card = true; 45 data = digitalRead(pir); 46 Serial.print("Veri: "); 47 Serial.println(data); 48 servo.write(180); 49 if (rfid.isCard()) { 50 if (rfid.readCardSerial()) { 51 Serial.print("ID: "); 52 delay(100); 53 } 54 for (int i = 0; i < 5; i++) { 55 Serial.print(rfid.serNum[i]); 56 Serial.print(" "); 57 delay(100); 58 } 59 boolean trueid = true; 60 for (int i = 0; i < 5; i++) { 61 if (rfid_id[i] != rfid.serNum[i]) { 62 trueid = false; 63 break; 64 } 65 } 66 if (trueid) { 67 Serial.println(); 68 delay(1000); 69 Serial.println("Welcome to your room"); 70 delay(1000); 71 digitalWrite(green, HIGH); 72 delay(200); 73 digitalWrite(red, LOW); 74 tone(buzzer, 3); 75 delay(1000); 76 noTone(buzzer); 77 delay(100); 78 servo.write(0); 79 delay(2000); 80 Serial.println("Door opened."); 81 delay(1000); 82 digitalWrite(green, LOW); 83 delay(10000); 84 lock_door(); 85 delay(2000); 86 servo.write(180); 87 Serial.println("Door closed."); 88 while (true) { // Loop to check PIR sensor continuously 89 data = digitalRead(pir); 90 if (data == 1) { 91 Serial.println("Motion detected, opening door."); 92 servo.write(0); 93 delay(2000); // Door stays open for 2 seconds 94 Serial.println("Door opened."); 95 tone(buzzer, 3); 96 delay(1000); 97 noTone(buzzer); 98 delay(10000); // Wait for 10 seconds 99 servo.write(180); 100 Serial.println("Door closed."); 101 tone(buzzer, 3); 102 delay(2000); // Allow time for door to close 103 noTone(buzzer); 104 } 105 delay(500); // Check every 0.5 seconds 106 } 107 } else { 108 digitalWrite(red, HIGH); 109 tone(buzzer, 3); 110 delay(1000); 111 noTone(buzzer); 112 Serial.println("Wrong ID."); 113 delay(2000); 114 digitalWrite(red, LOW); 115 } 116 } 117}
Downloadable files
Schematics
Untitled Sketch_bb.png

Circuit Diagram
Untitled Sketch_şema.png

Comments
Only logged in users can leave comments