Arduino ile PIR sensörlü alarm devresi

bolubeyi

Profesyonel Üye
Katılım
27 Eyl 2008
Mesajlar
1,681
Puanları
421
Yaş
54
Konum
Trabzon
Bu dersimizde arduino ve PIR (hareket) sensörü kullanarak alarm devresi yapmayı öğreneceğiz. PIRsensörü hareket algıladığında isteğe bağlı olarak bir lambayı yakacağız ya da bir sirenin çalmasını sağlayacağız. Sistem aynı zamanda da programda belirlediğimiz bir telefon numarasını otomatik ararayarak daha önce kaydettiğimiz bir sesi dinletecektir.

ISIS Devre şeması


ARES Baskı devresi


Malzeme listesi:


Arduino kodları:
Kod:
int hareket_sensoru=A0;  // A0 GİRİŞİNE HAREKET SENSÖRÜ İSMİ VERİLDİ
int lamba_rolesi=0;  // D0 ÇIKIŞINA LAMBA RÖLESİ ADI VERİLDİ
int telefon_rolesi=1;  // D1 ÇIKIŞINA TELEFON RÖLESİ ADI VERİLDİ
int ses_rolesi=2;  // D2 ÇIKIŞINA SES RÖLESİ ADI VERİLDİ
int hareket_sensoru_durum=0;
void setup()
{
  pinMode(hareket_sensoru, INPUT);  // A0 PİNİ GİRİŞ YAPILDI
  pinMode(lamba_rolesi, OUTPUT);  // D0 PİNİ ÇIKIŞ YAPILDI
  pinMode(telefon_rolesi, OUTPUT);  // D1 PİNİ ÇIKIŞ YAPILDI  
  pinMode(ses_rolesi, OUTPUT);  // D2 PİNİ ÇIKIŞ YAPILDI
}

void loop()
{
// HAREKET ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(hareket_sensoru) == HIGH) // HAREKET ALGILANDI İSE ŞUNLARI YAP
  {
  hareket_sensoru_durum= digitalRead(A0);  // A0 GİRİŞİNDEKİ LOJİK SEVİYEYİ OKU
  digitalWrite(0, hareket_sensoru_durum);  // OKUNAN LOJİK SEVİYEYİ D0 ÇIKIŞINA AKTAR
  digitalWrite(1, HIGH);  // TELEFON AÇILDI
  delay(2000);
  // 0 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 0 ÇEVİR BİTTİ

  // 5 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 5 ÇEVİR BİTTİ   

  // 4 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);   
   
  // 4 ÇEVİR
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);   

  // 3 ÇEVİR
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 4 ÇEVİR BİTTİ   

  // 4 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 4 ÇEVİR BİTTİ

  // 2 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);  
  // 2 ÇEVİR BİTTİ
 
  // 0 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   
   
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 0 ÇEVİR BİTTİ   

  // 1 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 1 ÇEVİR BİTTİ   
  // 3 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 3 ÇEVİR BİTTİ   

  // 8 ÇEVİR BAŞLADI
  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);   

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(50);

  digitalWrite(1, LOW);
  delay(50);
  digitalWrite(1, HIGH);
  delay(500);
  // 8 ÇEVİR BİTTİ

  // SES GÖNDERİLİYOR
  digitalWrite(2, HIGH);
  delay(30000);
  digitalWrite(2, LOW);  // SES KAPATILDI
  digitalWrite(1, LOW);  // TELEFON KAPANDI
  digitalWrite(0, LOW);  // LAMBA SÖNDÜRÜLDÜ
  }   
// HAREKET ALGILANDI İSE ŞUNLARI YAP BİTTİ
   
}

Kaynak: temrinlerim.org
 
O değilde pır sensör aktif olursa mail atsın. Bununla ilgili bi çalışma paylaşır mısın.?
 
Kodlarla uğraşmayın ben hazır kod buldum sadece anlamadığım bazı terimler var.
AUTH PLAIN nasıl oluşturabilirim.
smtp nedir nasıl olur ne yapmalıyım.
bide smtp portu var .....?




Kod:
#include <SPI.h>;
#include <Ethernet.h>;
// Arduino network information
byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
EthernetClient client;
char smtpServer[] = "smtpcorp.com";
void setup()
{
  Serial.begin(9600);  // for debug mode
  setupComm();
}
void loop()
{
  email("hallo");
  delay(1000);
}
//  ethernet shield connection init
void setupComm()
{
  Serial.println("Trying to connect");
  if (!Ethernet.begin(mac)){
    Serial.println("Failed to DHCP");
    // verifyng connection
    while(true);
  }
  delay(10000);
  // IP address is:
  Serial.print("IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
}
// now I send email
bool email(char* text)
{
  bool success = false;
  Serial.println("Sending email...");
  if (client.connect(smtpServer, 2525)){            //2525 is SMTP Server port
    Serial.println("connected");
    delay(100);
    client.println("EHLO arduino");
    for(int i=0; i<999; ++i){
      if(client.read() > 0)
        break;
    }
    Serial.println("responded");
    client.println("AUTH LOGIN");                     //see "http://base64-encoder-online.waraxe.us/"
    client.println("xxxxxxxxxx");                    //Type your username  and encode it
    client.println("yyyyyyyyyy");                   //Type your password  and encode it</p>
    // Put your "from" email address here
    client.println("MAIL FROM:<dumm@gmail.com>"); //Seems you can write what you want here...
    for(int i=0; i<999; ++i){
      if(client.read() > 0)
        break;
    }
    client.println("RCPT TO:<mail@mail.com>");
    for(int i=0; i<999; ++i){
      if(client.read() > 0)
        break;
    }
    client.println("DATA");
    for(int i=0; i<999; ++i){
      if(client.read() > 0)
        break;
    }
    //Sender
    client.println("from: mail@mail.com"); //Sender address
    client.println("to: mail@mail.com");  //Receiver address
    client.println("SUBJECT: From your arduino");
    client.println("");
    client.println(text);
    client.println(".");
    client.println("QUIT");
    for (int i = 0; i<999; ++i){
      if(i > 998){
        Serial.println("error: No response");
      }
      if(client.read() > 0)
        break;
    }
    success = true;
    client.println();
    Serial.println("end");
  }
  else {
    Serial.println("Failed");
    client.println("QUIT"); //Disconnection
  }
  client.stop();
  return success;
}
 
Bildiğim kadarıyla bir localhost oluşturmak gerekiyor. İçinde de smtp denilen mail gönderme prokolü olması gerek. Direk olarak elektronikle ilgili olmadığı için araştırmam gerek. Ezberden cevap verebilecek bilgim yok. Hosting hakkında bilgisi iyi olan arkadaşlar bu konuda benden daha fazla yardımcı olabilir.
 
Evet arduino nun mail ile haberleşmesi için smtp, mail adresi ve base64 ile şifrelenmiş kullanıcı adı ve şifre gerekiyor sanırım.Bakalım araştırmaya devam...
 
Veysel Bey, kodu bulduğunuz linki de atar mısınız..
 
smtp mail gönderme protokolüdür. örnek olarak gmail smtp ayarları ;

Host: smtp.gmail.com
Port: 587
Kullanıcı: Kendi Gmail adresin
Şifre: Kendi Gmail şifren

cihaz smtp protokolü sayesinde sunucuda bilgilerinle oturum açarak mail gönderimini saglayacaktır.


@bolubeyi hocam sizi SMF forumlarından hatırlıyorum. Yoksa yanılıyormuyum ?

Ek olarak bende benzer proje üzerinde araştırma yapıyorum, fakat benim amacım boyutu ve maliyeti küçültmek ve kablosuz olarak alarmın başka bir cihazda çalmasını saglamak.

https://www.kontrolkalemi.com/forum/konu/kablosuz-led-yakma.103182/

destek olmak isteyen arkadaşları beklerim.
 
Evet harun16. smf forumlarla epey ilgilenmiştim zamanında. artık ilgilenmiyorum bıraktım. diğer açtığınızz konuya link bıraktım. işinizi görecektir.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…