15 Mayıs 2017 Pazartesi

Arduino - Şifreli Kapı Kilit Sistemi

Bu projede 4×3 tuş takımı ve LCD ekran kullanılarak bir şifreli kapı kilit sistemi gerçekleştireceğiz.Ayrıca buzzer kullanarak kapı açılıp kapandığında ve tuşlara basıldığında bir dıt sesi ekleyip yeşil ev kırmızı led de kapının durumuna göre yanıp sönme işlemini gerçekleştiriceğiz.Bu projemizi kapıya monte ettiğimizde artık sizinde bir şifreli kapı kilidiniz olacaktır.

Projenin çalışmasından kısa bahsetmek istiyorum. Projemiz 4×3 tuş takımı, lcd ekran, buzzer ve ledlerimizden oluşmakta.Şifrenin arduino EEPROM'unda kaydedilerek, girilen her tuşun buzzer tarafından bir ses veremesi ve bu işlemin görsel kısmını da LCD ekranımızda yasıtılmasıyla şifremiz girilecektir. Ayrıca şifrenin doğru girildiğinde yeşil ledin yanması, yanlış girildiğinde ise kırmızı ledin yanmasıyla birlikte buzzer dan ses verilecektir. Projemize ek olarak eklenecek servo motor kapının açılması için eklenebilir ve hoparlör yada alarm sistemi ile şifreyi yanlış girmeniz halinde alarmı çalıştırmayı sağlayabilirsiniz.


Bağlantı şeması aşağıdaki gibidir.





Sahip olmamız gereken yetenekler ;

·         Lehim yapabilme
·         Devre şeması okuyabilme
·         Arduino programlama

Malzemeler ;

·         Arduino ( Uno,Mega )
·         4x3 Membran Tuş takımı ( Keypad )
·         Yaklaşık 50 Adet Erkek-Erkek ve Erkek-Dişi Jumper Kablo
·         Arduino 16x2 LCD Display Ekran 
·         1 Adet Buzzer
·         1 Adet kırmızı 1 Adet yeşil Led
·         Havya
·         Lehim
·         1 adet 2.2K direnç (1/4 watt)
·         1 adet 10k ohm direnç (1/4 watt)
·         1 adet 1M ohm direnç (1/4 watt)
·         2 adet 560 ohm direnç



Projenin sonu;

·         Projenin sonunda elde edilecek sistem.




                                                   Kod Blogu; 


#include "Keypad.h"        // Tuş takımı için gerekli kütüphane indirmeniz gerekmektedir.
#include <Wire.h>           // Haaberleşme için gerekli kütüphane
#include<EEPROM.h>    // Girilen şifrenin arduino belleğinde tutulması için gerekli 
#include <LiquidCrystal_I2C.h>         //LCD ekran için gerekli kütüphane
#define buzzer 15                                 //Buzzerin bulunduğu pin değişkeni

int led=13;                                              //Yeşil Led 13. pine giricek
int led2=12;                                           //Kırmızı Led 12. pine giricek
LiquidCrystal_I2C lcd(0x27, 16, 2);     //LCD  ekranın pinleri   

char okunan=0;                                       //Kullanılan değişkenler
const byte satir = 4; //4 satir
const byte sutun = 3; //3 sutun
char password[4];
char pass[4],pass1[4];
int i=0;

char rakamlar[satir][sutun] = {                // Keypadin tuşlarını tanımlama
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte satirpin[satir] = {8, 7, 6, 5};     // Tanımlanan tuşlar için satır pinleri
byte sutunpin[sutun] = {4, 3, 2};     // Tanımlanan tuşlar için sutun pinleri

Keypad butonlar = Keypad(makeKeymap(rakamlar), satirpin, sutunpin, satir, sutun);                     // Çağırma


void setup()  // Arduino ilk çalıştığında yapılması gereken işlemler ve bulundukları pinler
{

lcd.begin();          
lcd.backlight();
pinMode(led, OUTPUT);           // Yeşil ledin arduinonun 13 pindeki çıkısı
pinMode(led2, OUTPUT);         // Kırmızı ledin arduinonun 13 pindeki çıkısı
pinMode(buzzer, OUTPUT);     //Buzzerin yukarıdaki degiskende belirtiği 15 pin yeri
lcd.print(" Elektronik ");             //2 bölümden oluşan ledin üst kısmında yazan yazı
lcd.setCursor(0,1);                      //LCD nin alt kısmına geçiş 
lcd.print(" Sifreli Kilit ");           //2 bölümden oluşan ledin alt kısmında yazan yazı 
delay(2000);                               //2   bekleme süresi
lcd.clear();                                  //LCD ekranın temizlenmesi
lcd.print("Sifreyi Girin: ");        
/*
bu kod ilk şifre belirleniken aktif edilecektir.
 for(int j=0;j<4;j++)
 EEPROM.write(j, j+49);
 for(int j=0;j<4;j++)
 pass[j]=EEPROM.read(j);

*/




}

void loop()     // Ana Fonksiyon
{
 okunan = butonlar.getKey();  // Girilen tuşların okunması 
 if(okunan=='#')
 sifredegisim(); // # basıldığında şifre değiştirmesi için aşağıda bulunan fonksiyonu çağırması
 if (okunan)
 {
 password[i++]=okunan;  
 lcd.print(okunan);
 tussesi();
 }
 if(i==4)
 {
 delay(200);                                   // bekleme süresi
 for(int j=0;j<4;j++)
 pass[j]=EEPROM.read(j);           // şifrenin eeproma kaydedilmesi
 if(!(strncmp(password, pass,4))) // karsılastırma 2 string ifadeyi
 {
 digitalWrite(led, HIGH);             // Yeşil ledin yanması
 tussesi();                                               // tışa basılırken buzzer sesi
 lcd.clear();                                   //  lcd ekranını sıfırlayıp
 lcd.print("Sifre onaylandi!");      // Ekrana yazını yazılması
 delay(2000); 
 lcd.setCursor(0,1);                       // lcd ekranın alt kızmı
 lcd.clear();
 lcd.print("Sifreyi Girin:");
 lcd.setCursor(0,1);
 i=0;
 digitalWrite(led, LOW);               // ledin sönmesi
 }

 else
 {
 digitalWrite(buzzer, HIGH);        // buzzer sesi
 lcd.clear(); 
 lcd.print("Tekrar deneyin...");
 digitalWrite(led2, HIGH);            // Kırmızı ledin yanması 
 lcd.setCursor(0,1); 
 delay(1000);
 digitalWrite(led2, LOW);              // Kırmızı ledin sönmesi 
 lcd.clear();
 lcd.print("Sifreyi girin:");
 lcd.setCursor(0,1);
 i=0;
 digitalWrite(buzzer, LOW);          // buzzerin susması
 }
 }
}
void sifredegisim()                        // Şifre değişim Fonksiyonu
{
 int j=0;
 lcd.clear();
 lcd.print("Gecerli Parola Girin ");  //Mevcut şifreyi girmemizi istiyor
 lcd.setCursor(0,1);
 while(j<4)
 {
 char key=butonlar.getKey();
 if(key)
 {
 pass1[j++]=key;
 lcd.print(key);
 tussesi();
 }
 key=0;
 }
 delay(500);

 if((strncmp(pass1, pass, 4)))           // karşılaştırma aynıysa mesaj veriyor
 {
 lcd.clear();
 lcd.print("Hatali...");
 digitalWrite(led2, HIGH);
 lcd.setCursor(0,1);
 lcd.print("Tekrar deneyin");
 delay(1000);
 digitalWrite(led2, LOW);
 }
 else
 {
 j=0;

 lcd.clear();
 lcd.print("Yeni Parola Girin:");        //Yeni parola giriyoruz
 lcd.setCursor(0,1);
 while(j<4)
 {
 char key=butonlar.getKey();
 if(key)
 {
 pass[j]=key;
 lcd.print(key);
 EEPROM.write(j,key);
 j++;
 tussesi();
 }
 }
 lcd.print(" Basarili......");   
 delay(1000);
 }
 lcd.clear();
 lcd.print("Sifreyi Girin:");
 lcd.setCursor(0,1);
 okunan=0;
}
void tussesi()                      // tusa basıldığında buzzerin ses çıkarma fonksiyonu
{
 digitalWrite(buzzer, HIGH);
 delay(30);
 digitalWrite(buzzer, LOW);
}




6 yorum:

  1. Ben bu devreyi arduino uno ile yapcam yazılım da ne gibi değişiklikler yapmalıyım

    YanıtlaSil
  2. Ben bu devreyi arduino uno ile yapcam yazılım da ne gibi değişiklikler yapmalıyım

    YanıtlaSil
  3. Sir..not showing onaylandi..?

    YanıtlaSil
  4. Hocam değişken aradım şifre yi girdik 1 ettim sifreden sonra cihaz çalıştırmak için içiçe if yada while da iki yada üç lu şifre yada iki tuş çıkış versin istiyorum yapamadım yardımcı olur musunuz

    YanıtlaSil
  5. Hocam keypad tuş epromda ayrı ayrı nasıl tutulur eproma nasıl kaydedilir

    YanıtlaSil
  6. hocam Şifre Eski Haline Dönüyor Sifre Kısmını Aktif Etmeden Yüklersemde Sifre Belirsiz Oluyor Sorun Ne olabilir.
    Şifreyi En Bata 4628 Yapabilir miyim

    YanıtlaSil