Güvenlik, günlük hayatımızda önemli bir sorundur ve dijital kilitler bu güvenlik sistemlerinin önemli bir parçası haline gelmiştir. Bu projede böyle bir dijital kod kilidi, arduino kartı ve bir matris tuş takımı kullanılarak taklit edilir.
Bileşenler
- Arduino
- Tuş Takımı Modülü
- Buzzer
- 16x2 LCD
- BC547 Transistör
- Direnç (1k)
- Ekmek tahtası
- Güç
- Bağlantı telleri
Bu devrede, şifreyi sisteme girmek için tuş takımını arayüzlemek için çoklama tekniğini kullandık. Burada 16 tuş içeren 4x4 keypad kullanıyoruz. 16 anahtar kullanmak istiyorsak arduino'ya bağlantı için 16 pin'e ihtiyacımız var ancak çoklama tekniğinde 16 tuşa arayüz oluşturmak için sadece 8 pin kullanmamız gerekiyor. Böylece bir tuş takımı modülüyle arayüz oluşturmanın akıllı bir yolu.
Çoğullama Tekniği: Çoğullama tekniği, giriş veya parola veya sayılar sağlamak için mikrodenetleyiciyle birlikte kullanılan pin sayısını azaltmanın çok etkili bir yoludur. Temel olarak bu teknik iki şekilde kullanılır - biri satır taraması ve diğeri kolon taramasıdır. Fakat bu arduino tabanlı projede keypad kitaplığı kullandık, bu yüzden bu sistem için herhangi bir çoğullama kodu yapmamız gerekmiyor. Giriş sağlamak için sadece tuş takımı kitaplığını kullanmamız gerekiyor.
Devre Tanımı
Arduino, keypad modülü, buzzer ve LCD içeren bu projenin devresi çok basittir. Arduino, şifre formunda tuş takımı modülü alma, şifreleri karşılaştırma, sesli uyarıyı kullanma ve durumu LCD ekrana gönderme gibi tüm işlemleri kontrol eder. Şifre almak için tuş takımı kullanılır. Buzzer, göstergeler için kullanılır ve üzerindeki durum veya mesajları görüntülemek için LCD kullanılır. Buzzer, bir NPN transistörü kullanılarak çalıştırılır.
Keypad modülünün kolon pinleri direk olarak arduino uno'nun 4, 5, 6, 7 pinlerine ve Row pinleri 3, 2, 1, 0 pinlerine bağlıdır. 4 bit modunda arduino ile 16x2 LCD bağlanır. Kontrol pini RS, RW ve En doğrudan arduino pin 13, GND ve 12'ye bağlanır. Veri pini D4-D7 ise arduino'nun 11, 10, 9 ve 8 numaralı pinlerine bağlıdır. Ve BC547 NPN transistörü aracılığıyla arduino'nun 14 (A1) pinine bir zil bağlanır.
Çalışma
Şifreyi kaydetmek için dahili arduino'nun EEPROM'unu kullandık, bu yüzden bu devreyi ilk kez çalıştırdığımızda, programı dahili arduino'nun EEPROM'undan bir çöp verisini okuyup giriş şifresiyle karşılaştırıp LCD'de şifre eşleşmediğinden Erişim Reddedildi mesajını verdik. Bu sorunu çözmek için, aşağıda verilen programlamayı kullanarak ilk kez bir varsayılan şifre belirlememiz gerekir:
for (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Ur Geçiş Anahtarını Girin:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Bu, "1234" şifresini Arduino'nun EEPROM'una ayarlayacaktır.
İlk kez çalıştırdıktan sonra bunu programdan kaldırmamız ve kodu tekrar arduinoya yazıp çalıştırmamız gerekiyor. Şimdi sisteminiz iyi çalışacak. Ve ikinci kez kullandığınız şifreniz artık “1234”. Şimdi # düğmesine basarak değiştirebilir ve ardından mevcut şifrenizi girip ardından yeni şifrenizi girebilirsiniz.
Şifrenizi gireceğiniz zaman sistem girdiğiniz şifrenizi arduino'nun EEPROM'unda kayıtlı olan şifre ile karşılaştıracaktır. Eşleşme oluşursa, LCD "erişim izni verildi" mesajını gösterecek ve şifre yanlışsa, LCD "Erişim Reddedildi" ve bir süre sürekli olarak sesli uyarı verecektir. Ayrıca zil, kullanıcı tuş takımından herhangi bir düğmeye bastığında tek bir kez bip sesi çıkarır.
Programlama Açıklaması
Kodda, tuş takımını arduino ile arayüzlemek için tuş takımı kitaplığı kullandık.
#Dahil etmek
const bayt ROWS = 4; // dört satırlık sabit bayt COLS = 4; // dört sütun karakter hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; bayt rowPins = {3, 2, 1, 0}; // tuş takımı baytının satır bağlantılarına bağlan colPins = {4, 5, 6, 7}; // tuş takımının sütun pinout'larına bağlanın // NewKeypad Keypad sınıfının bir örneğini başlatın customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
LCD arabirimi için LCD kitaplığı ekledik ve EEPROM arabirimi için kitaplık EEPROM.h'yi ekledik ve ardından bileşenler için değişken ve tanımlanmış pinleri başlattık.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); char şifresi; karakter geçişi, geçiş1; int i = 0; char customKey = 0;
Sonra LCD'yi başlattık ve kurulum işlevinde pinlere yön verdik
geçersiz kurulum () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (buzzer, OUTPUT); pinMode (m11, ÇIKIŞ); pinMode (m12, ÇIKIŞ); lcd.print ("Elektronik"); lcd.setCursor (0,1); lcd.print ("Tuş Takımı Kilidi"); gecikme (2000); lcd.clear (); lcd.print ("Ur Geçiş Anahtarını Girin:"); lcd.setCursor (0,1);
Bundan sonra tuş takımını döngü işlevinde okuruz
customKey = customKeypad.getKey (); eğer (customKey == '#') değiştir (); if (customKey) {password = customKey; lcd.print (customKey); bip (); }
Ve sonra dize karşılaştırma yöntemini kullanarak şifreyi kaydetme şifresiyle karşılaştırın.
eğer (i == 4) {gecikme (200); for (int j = 0; j <4; j ++) pass = EEPROM.read (j); eğer (! (strncmp (şifre, geçiş, 4))) {digitalWrite (led, HIGH); bip (); lcd.clear (); lcd.print ("Geçiş Anahtarı Kabul Edildi"); gecikme (2000); lcd.setCursor (0,1); lcd.print ("#. Parolayı Değiştir"); gecikme (2000); lcd.clear (); lcd.print ("Parolayı Girin:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, DÜŞÜK); }
Bu, şifre değiştirme işlevi ve sesli uyarı işlevidir
geçersiz değişiklik () {int j = 0; lcd.clear (); lcd.print ("UR Akım Geçişi"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); eğer (anahtar) {pass1 = anahtar; lcd.print (anahtar); void beep () {digitalWrite (buzzer, HIGH); gecikme (20); digitalWrite (zil, DÜŞÜK); }