Arduino Türkiye ProtoShield ile Lazerli Alarm Sistemi

Elektroniğe yeni başlayanlar genellikle led yakıp söndürerek bu hobiye başlarlar. İlk başta bir led yanıp söner ama yetmez, bir adım ileri gidip iki led yanıp söner, o da yetmeyince bir kaç led daha eklenip karaşimşek devresi yapılır. Herkes bu şekilde başlamasa da genellikle bu şekilde başlar ve hep daha ilginç birşeyler yapma hevesiyle devam eder.

Bu yazıda anlatacağım proje de ledlerle birşeyler yapıp daha ilginç bir projeye adım atmak isteyenlerin dikkatini çekecektir diye düşünüyorum. Üstelik Arduino sayesinde bu projeyi yapmak o ilk günkü led yakıp söndürmek kadar kolay. Bu kadar laf yeter. Şimdi işimize dönelim.

 

Bu videoda projemizin çalışan halini görebilirsiniz

 

Projemizi özetlersek;

Filmlerde gördüğünüz lazerli alarm sistemlerinin en basit mantıkla yapılmış hali diyebiliriz. Yani bir kapıya yerleştirilmiş olan lazer ışını kesildiği an(önünden biri geçtiği zaman veya bir engelle karşılaştığı an) led, buzzer veya farklı şekillerde alarm veren bir devre.

Projemiz için gerekli malzemeler;

1 x Arduino Uno (ben Uno kullandım fakat diğer Arduino çeşitleri de neredeyse hiçbir değişiklik yapmadan kullanılabilir)

1 x Arduino Türkiye ProtoShield (veya herhangi bir breadboard)

1 x Karakter LCD

1 x Potansiyometre (ayarlı direnç)

1 x LDR (ışığa duyarlı direnç)

1 x 10K Direnç

1 x Mantar Led

1 x Buzzer

1 x Lazer Pointer (oyuncakçılarda satılan bildiğimiz lazer)

 

Projenin gerçekleştirilmesi için öncelikle breadboarda devrenin kurulması gerekmektedir. Bunun için Fritzing ile oluşturduğum görsel yardımcı olabilir.

lazerli alarm

Görselde de görüldüğü üzere devremizde buzzer yok. Bir engelle karşılaştığı zaman led yakarak haber veriyor. İstendiği takdirde led yerine buzzer veya başka bir dijital pine de buzzer bağlanabilir. Bunun için yazılımımızda led için yaptıklarımızın aynısını buzzer için de yapmanız gerekmektedir.

LCD kullanımına şu adreste Kaan Ceyhan arkadaşımız anlattığı için değinmeyeceğim.

 

Devremizi kurduktan sonra sıra geldi programımızı(sketch) yazmaya.

 

#include <LiquidCrystal.h> // LCD kütüphane kodu ekleniyor
#define LED     13  // Uyarı ledinin bağlı olduğu dijital pin
#define BUZZER  2  // Uyarı buzzerının bağlı olduğu dijital pin
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // LCD bağlantılarının Arduinomuzda bağlı olduğu pinler
const int analogInPin = A5;  // LDR'nin bağlı olduğu analog pin

int sensorValue = 0; // LDR'den aldığımız değeri tutacak olan değişkenimizin değerini sıfırlıyoruz

void setup() {

  lcd.begin(16, 2); // LCD'nin satır ve sütun sayısı
  pinMode(13, OUTPUT); //LED'in pinini çıkış olarak ayarlıyoruz
  pinMode(8,OUTPUT); //Buzzer'ın pinini çıkış olarak ayarlıyoruz

}

void loop() {

  lcd.clear(); //LCD'deki karakterleri temizliyoruz
  sensorValue = analogRead(analogInPin);  // Analog pinimizden gelen LDR değerini okuyup değişkenimizi atıyoruz

  lcd.setCursor(0,0);
  lcd.print("Sensor:");
  lcd.setCursor(8, 0);
  lcd.print(sensorValue);
  lcd.setCursor(0,1);
  lcd.print("LED & BUZZER:");
  if (sensorValue <= 840){
    digitalWrite(LED,LOW);
    digitalWrite(BUZZER,LOW);
    lcd.setCursor(13,1);
    lcd.print("OFF");
  }
  else{
    digitalWrite(LED,HIGH);
    digitalWrite(BUZZER,HIGH);
    lcd.setCursor(13,1);
    lcd.print("ON");
  }
  delay(100);
}

 

Sketchimizin yaptığı iş kısaca şu;

LDR ışığa duyarlı bir direnç olduğundan ışık şiddetiyle ters orantılı olarak bize bir direnç gösterir. Yani ışık şiddeti arttıkça direnç azalır, ışık şiddeti azaldıkça direnç artar.

if (sensorValue <= 840){ ” satırında gördüğünüz 840 değeri benim devreyi test ettiğim ortamdaki ışık şiddetine göre optimize edilmiş bir değerdir. Normalde LDR’ye lazer tutulduğunda sensör değerimiz 900 civarında görünmektedir, minimum okuduğum değer 840 olduğundan ben bu değerin altına düştüğünde sistemin alarm vermesini istediğimden bu değeri seçtim. Siz ortama göre bu değeri kalibre edebilirsiniz.

Sistemin kurulabilmesi için lazeri harici bir pil veya Arduinonun besleme pinlerinden besleyebilirsiniz.

 

Hepinize kolay gelsin !!!

 

 

 

 

 

23 comments

  1. Emrah dedi ki:

    Merhabalar bu proje’nin çizilmiş devresi var mı ? varsa eğer benimle iletişime geçebilirmisiniz. okulda proje olarak bunu yapmayı planlıyordum, bunun devresi çok karışık. yardımlarınız için şimdiden teşekkürler

  2. ekrem dedi ki:

    Merhabalar
    Bu devreyi yapmak istedim fakat şekildeki gibi kurduğum halde bir sonuç alamadım.Nasıl kurabilirim bu devreyi?

  3. Ömer Koman dedi ki:

    lcd nin model kodu ile datsheetini bir karşılaştırın bazı malzemelerin kodunda bir harf değişimi bile farklı bacak bağlantılarını ifade edebilir.

  4. Fatih GÖÇMEN dedi ki:

    Merhaba sitelerde verilen LCD devreleri genelde 16*2 LCD ler Elimde 20*4 LCD var devreleri bunun uzerinde denıyorum fakat 16*2 gibi calısıyor 4 satırı tam anlamıyla kullanamıyorum bunun ıcın lcd.begin(16, 2); kodunu 20, 4 yaptıgımdada hıcbır sonuc alamıyorum yardımcı olurmusunız

  5. Fatih GÖÇMEN dedi ki:

    Ben Size bı vıdeo cekıp porgramla beraber gonderıyım hocam

  6. Fatih GÖÇMEN dedi ki:

    LCD nin Uzerinde Dogru Dürüst Birsey Yazmıyor Resmini Atıyorum
    Bunlar Resim Linki
    http://i.hizliresim.com/w1vgpY.jpg
    http://i.hizliresim.com/K6PXNE.jpg
    ve kitaptaki LCDye yazı Yazdırmayı yaptım

    [code]
    #include
    char gelenKarakter;
    int gelenKarakterSayisi;
    int i;
    String yazi = “”;
    String kaydirilacakYazi = “”;
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    void setup()
    {
    Serial.begin(9600);
    lcd.begin(20, 4);
    lcd.home();
    }
    void loop()
    {
    gelenKarakterSayisi = Serial.available();
    if(gelenKarakterSayisi > 0 )
    {
    while(Serial.available()>0)
    {
    gelenKarakter = Serial.read();
    if(gelenKarakter !=’\n’)
    {
    yazi +=gelenKarakter;
    }
    else
    {
    kaydirilacakYazi = yazi;
    lcd.clear();
    lcd.print(yazi);
    yazi = “”;
    }
    }
    }
    YaziKaydir(kaydirilacakYazi);
    }
    void YaziKaydir(String yazi)
    {
    int sayac;
    for (sayac = 0; sayac < 13; sayac++){
    lcd.scrollDisplayRight();
    delay(250);
    }
    }[/code]

    Buda Videosu gerci telde Normalde Youtubede yan cıkmıs 🙂

    http://www.youtube.com/watch?v=iLHQMNp8l2E&feature=youtu.be

    • Ömer Koman dedi ki:

      şu komutları bi denesene
      lcd.setCursor(0,2);
      lcd.print(“Row 3”);
      lcd.setCursor(0,3);
      lcd.print(“Row 4”);

  7. ÖZAY YILMAZ dedi ki:

    elinize sağlık çok güzel bir örnek olmuş
    bugün ARDUİNO Kitabının siparişini verdim
    sabırsızlıkla bekliyorum
    teşekkürler

  8. osman varol dedi ki:

    Merhaba,
    Yazdığınız örnek programlar ile biz amatörlere çok faydalı oluyorsunuz. Program kısmında anlamadığım bir kısım var ” #define BUZZER 2″ olarak tanımlanmış iken neden “pinMode(8,OUTPUT);” yapılmış?

    Teşekkürler.

  9. emre seyran dedi ki:

    Bu projenin areste baskı devre semasini paylasabilirmisiniz

    • Ömer Koman dedi ki:

      yukarıdaki breadboardlı resim (fritzing.org) ile yapıldı, programı bilgisayarına yukle yukarıdaki resme bakarak aynısını oluştur daha sonra programda pcb moduna geçince otomatik hem şema hem pcb yi görürsün.

  10. Oğuzhan dedi ki:

    Ömer Koman abi bizim bi ödevimiz var arduino ile bişeyler yapmamız gerekıyor bizde istiyoruz ki şöyle değişik cok fazla gorulmedık birşey olsun istiyoruz yardım edebilirmisin bize ?

    • Ömer Koman dedi ki:

      foruma gelin sorun. herkes orada. arduinoyu hem ogrenelim hemde proje yapalım derdındeysenız o iş pek olmuyo baştan diyeyim. arduino program yapısı, kutuphaneler, seri iletişim, bt modul, lcd, motor surme, servo kontrol, adc okuma, buton okuma, led yakma projelerini kopyala yapıştır olmadan anlayarak hakkıyla ornekleri yapın projeniz daha hızlı ve kolay biter. verilen odevlerin amacı size bırseyler ogretmek zaten. benımı zamanım olmadığı için kişisel yardım yapmam imkansız. foruma gelin. çizgi izleyen bir arac sanki guzel olur gibime geliyor herkes yapıyor ama siz guzelını yapın mesela duraklı yol seçimli filan bişe olursa degısık olabilir…

  11. ömer dedi ki:

    merhabalar aynısını uzaktan kumanda ile yapmak istiyorum proje için yani sistem kumanda ile açılıp kapanacak nasıl yapacağımı bilmiyorum yardımcı olurmusunuz kodlar nelerdir?

    • Ömer Koman dedi ki:

      garaj kumandaları 433mhz rf modullerle çalılır. rf433 modulleri araştırın. foruma gelin.

  12. ömer dedi ki:

    bu devrede potansiyometre kaç ohm veya kohm?

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar