RFID RC522 ve Arduino Kullanan Kapı Güvenlik Sistemi
Bu tür bir güvenlik sistemi Askeri, Araştırma Merkezleri, Bankalar, Sunucu odaları, Hapishaneler, Devlet daireleri ve Nükleer Santrallerde çok kullanışlıdır. Bu sistem büyük bir yıkımı ve kaybı önler. Proje RFID RC522 modülüne dayanmaktadır; RFID RC522 modülünü bilmiyorum daha sonra açıklayacağım. Arduino Uno, bu projenin beynidir. LCD , mesajları görüntülemek için kullanılır. Servo motor , kapının açıldığını veya kapandığını belirtmek için kullanılır.
RFID RC522 Kullanan Kapı Güvenlik Sisteminin Blok Şeması
RFID RC522 Kullanan Kapı Güvenlik Sistemi için Gerekli Bileşenler
- Arduino Uno: Projemde Arduino Uno kullanıyorum çünkü kullanımı kolay ve fiyatı çok ucuz. RFID modülü için 12 dijital pin ve 3.3v'ye ihtiyacım olduğu için projeme de uyuyor.
- Servo Motor: Bu projede servo motor kapının açılıp kapandığını belirtmek için kullanılmaktadır. Kullanımı ve programlanması kolaydır ve ayrıca hassas hareket sağlar. Arduino ile servo motor arayüzünde servo hakkında daha fazla bilgi edinin
- 16 × 2 LCD: LCD, Metin ve özel karakterleri göstermek için kullanılır. Toplam 16 pimi vardır. LCD'nin kontrastını ayarlamak için üçüncü pim ile bir 10K ohm potansiyometre bağlanır. Ayrıca bir arka ışık LED'i içerir. Kullandığımız bu projede LCD , iki satırda 16 karakter görüntüleyebilmektedir. Bu projede, mesajların gösterilmesi için LCD kullanılmıştır.
- RFID RC522: Bu modül, temassız iletişimde kullanılan MFRC522 IC'ye dayanmaktadır. Hem okuyucu hem de yazar olarak kullanılır. Bu modül sekiz pim içerir. Pim açıklaması aşağıdaki gibidir:
Pinler Açıklama RFID RC522
- SDA: I2C-bus seri veri hattı girişi / çıkışı.
- SCK: SPI seri saat girişi.
- MOSI: SPI master çıkışı, bir slave girişi.
- MISO: SPI master girişi, slave çıkışı.
- IRQ: Kesme isteği çıkışı, bir kesme olayını gösterir.
- GND: Toprak.
- RST: sıfırlama ve güç kapatma girişi.
- 3V: 3.3 voltluk güç kaynağı.
Bu modül fiyat olarak ucuz ve kullanımı çok kolay bir projedir. Çalışma voltajları 3,3v'dir ve 40mA'ya kadar akım çeker.
- LCD için uygun dirençler (benim durumumda 10K ohm) ve bağlantılar için jumper kablolar
RFID RC522 ve Arduino Kullanan Kapı Güvenlik Sisteminin Devre Şeması
RFID RC522 ve Arduino Kullanan Kapı Güvenlik Sistemi Bağlantıları
Arduino bağlantılarına RFID RC522 modülü
- SDA - D10
- SCK - D13
- MOSI - D11
- MISO - D12
- IRQ kullanılmıyor
- GND için GND
- RST - D9
- 3.3V ila 3.3V
16 × 2 LCD'den Arduino bağlantılarına:
- RS veya D7
- D6'ya etkinleştir
- D4 - D5
- D5 - D4
- D6 - D3
- D7 - D2
- R / W toprağa
- VSS toprağa
- 5V'a VCC pini
Servo - Arduino Bağlantısı
- Soldan başlayarak
- 1'i toprağa sabitleyin.
- Pin 2 - 5V.
- Pin 3 - D8.
RFID RC522 Kullanılarak Kapı Güvenlik Sisteminin Çalışması
Kullanıcı jetonu modülün yanına getirdiğinde jetonu algılar ve değerini okur. Değer kodda tanımlananla aynı ise LCD'de Erişim İzni Verildi mesajı görüntülenir ve kullanıcıya kapıyı açar. Kodda da tanımlanan bazı gecikmelerden sonra kapı otomatik olarak kapanır. Bu işlem, kullanıcı her erişmek istediğinde gerçekleşir. Birden fazla kullanıcı olabilir, ancak her kullanıcının benzersiz bir simgesi vardır.
Code
#include <deprecated.h> #include <MFRC522.h> #include <MFRC522Debug.h> #include <MFRC522Extended.h> #include <MFRC522Hack.h> #include <require_cpp11.h> #include<RFID.h> #include <SPI.h> #include <Servo.h> #include <LiquidCrystal.h> LiquidCrystal lcd(7, 6, 5, 4, 3, 2); Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards #define val0 117 // chnage the value according to token no #define val1 134 int pos = 0; /* Define the DIO used for the SDA (SS) and RST (reset) pins. */ #define SDA_DIO 10 #define RESET_DIO 9 RFID RC522(SDA_DIO, RESET_DIO); void setup() { myservo.attach(8); Serial.begin(9600); /* Enable the SPI interface */ SPI.begin(); /* Initialise the RFID reader */ RC522.init(); lcd.begin(16, 2); } void loop() { byte i=0; int ID; if (RC522.isCard()) { RC522.readCardSerial(); Serial.println(RC522.serNum[i],DEC); Serial.println("Card detected:"); ID=RC522.serNum[0];} delay(500); if( val0 == ID) { lcd.clear(); lcd.print("Access Granted"); lcd.setCursor(0, 1); lcd.print("Welcome Haris"); delay(1800); lcd.clear(); lcd.print("Door Opening"); delay(1500); for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(5000); lcd.clear(); lcd.print("Door Closing"); delay(1500); for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } } else { lcd.clear(); lcd.print("Door Security "); lcd.setCursor(0, 1); lcd.print("System "); } if( val1 == ID) { lcd.clear(); lcd.print("Access Granted"); lcd.setCursor(0, 1); lcd.print("Welcome Bilal"); delay(1800); lcd.clear(); lcd.print("Door Opening"); delay(1500); for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(5000); lcd.clear(); lcd.print("Door Closing"); delay(1500); for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } } else { lcd.clear(); lcd.print("Door Security "); lcd.setCursor(0, 1); lcd.print("System "); } }
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever... If you want, let's learn together...https://roboticcode2020.blogspot.com/bahadirozgen1975@gmail.com