Herkese merhabalar ! Blog sayfamızda Arduino ile pek çok proje yaptık ve yapmaya devam ediyoruz. Bu projelerle ilgili sorularınızı yazının hemen altındaki Yorum Yap kısmından bizimle paylaşabilirsiniz. Bu yazımızda hareket (PIR) sensörü kullanarak Arduino ile basit hırsız alarmı uygulaması yapacağız. Bu sayede hareket sensörünün kullanımını öğrenceğiz ve Arduino ile birçok farklı proje yapabileceğimizi göreceğiz. Hadi öyleyse çalışmaya başlayalım !
PIR Sensörü ile Raspberry Pi derslerimizde de uygulama yapmıştık >>> Raspberry Pi 3 PIR Sensör ile Hareket Algılama
Arduino İle Hareket Sensörü Diğer Adıyla PIR (Passive Infrared Sensör) Kullanımı
PIR ismi Passive Infra-Red kelimelerinin baş harflerinden gelmektedir. Bu da bu sensörün kızılötesi dalgalarla çalıştığı anlamına gelir. Hareket sensörü ortamdaki sıcaklık ve kızılötesi dalga değişimlerini algılamaya yarayan sensörlerdir. Yapılarında bir fresnel lens bulunur. Bu lens sayesinde ortamdaki nesnelerden gelen ışınlar sensörün odaklanmasını sağlar. Ortamda bir dalga değişimi olduğunda sensör algılama işlemi gerçekleştirir.
Arduino ile PIR sensörünün kullanımı dersimizde devrede yalnızca bir servo motor kullanmıştık. Hareket sensörü ile daha önce hiç çalışmadıysanız kanalımızdaki videomuzu takip ederek hazırlanabilirsiniz. PIR sensörü ile ilk uygulamamızı yapmak için aşağıdaki devreyi kurarak Arduino kodunu yüklememiz yeterli olacaktır.
#include <Servo.h> //Servo kütüphanemizi ekliyoruz. int pirPin = 8; //Sensörü takacağımız pin int servoPin = 9; //Servoyu takacağımız pin int hareket; //Sensörden aldığımız veri Servo motor; //Servo motor değişkeni void setup() { motor.attach(servoPin); //Servomuzu 9. pin ile ilişkilendiriyoruz. pinMode(pirPin, INPUT); //Sensör pinimizi giriş olarak ayarlyoruz. } void loop() { hareket = digitalRead(pirPin); //Sensörden okuma yapıyoruz. if (hareket == HIGH) { //Hareketlilik var ise içerideki komutlar uygulanır. motor.write(150); delay(250); motor.write(30); delay(250); motor.write(150); delay(250); motor.write(30); delay(250); motor.write(150); delay(250); motor.write(30); delay(250); motor.write(90); } else { //Hareketlilik yok ise içerideki komutlar uygulanır. motor.write(90); } }
Şimdi İse Arduino ve Hareket Sensörünü Kullanarak Hırsız Alarmı Yapalım
Şimdi ise PIR sensörü kullanarak gerçek bir proje yapmaya hazırız ! Hareket sensörü, buzzer ve LED kullanarak basit bir hırsız alarmı uygulaması yapacağız. Kuracağımız devrede hareket sensörümüz bir hareket algıladığında bu bilgiyi Arduino’ya aktaracak ve Arduino’nun çıkışına bağlı olan LED ve buzzerı tetikleyecektir. Aynı zamanda hareket algılama işlemini seri port ekranından da takip edebileceğiz. Hadi öyleyse projemize başlayalım !
Gerekli Malzemeler:
Devre Şeması
Basit hırsız alarmı yapımı için gerekli devreyi aşağıdaki gibi kuralım:
Basit Hırsız Alarmı Arduino Kodu
int sensor = 2;
int led = 13;
int buzzer = 10;
int sensordurum = LOW;
int deger = 0;
int it = 0;
void setup() {
pinMode(sensor, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
deger = digitalRead(sensor);
if (deger == HIGH) {
digitalWrite(led, HIGH);
playTone(300, 160);
delay(150);
if (sensordurum == LOW) {
Serial.println("Hareket Tespit Edildi!");
sensordurum = HIGH;
}
} else {
digitalWrite(led, LOW);
playTone(0, 0);
delay(300);
if (sensordurum == HIGH) {
Serial.println("Hareket Sonlandi!");
sensordurum = LOW;
}
}
}
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time & it, duration) {
digitalWrite(buzzer, HIGH);
delayMicroseconds(period / 2);
digitalWrite(buzzer, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}
İyi günler. Hırsız alarm sistemini yaptığımda hareket olmadığında bile led ve buzzer sürekli belli aralıklarla yanıp ses çıkartıyor. Aynı kodları yazıp aynı devreyi kurduğum ve hassasiyetleriyle oynadığım halde bu sorun gitmedi. Bu sorunu çözmek için ne yapabilirim ?
Merhaba Kübra hanım,
Yukarıdaki kod eksik. Yanlış diyemeyeceğim çünkü ben birşey anlamadım. Ama kendi yazdığım basit kod aşağıda. Denedim çalışıyor. Pinleri koda göre değiştirmeyi unutmayın!
int sensor=8;
int led=11;
int buzzer=10;
int sensordurum=LOW;
int deger=0;
void setup() {
// put your setup code here, to run once:
pinMode(sensor,INPUT);
pinMode(led,OUTPUT);
pinMode(buzzer,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
sensordurum=digitalRead(sensor);
if(sensordurum==HIGH){
Serial.println(“hareket var”);
digitalWrite(led,HIGH);
tone(buzzer,440);
delay(3000);
noTone(buzzer);
}
else
{
Serial.println(“hareket yok”);
digitalWrite(led,LOW);
noTone(buzzer);
delay(300);
}
}
sizin kodunuzu denedim özgür bey fakat hareket yok demiyor aslında internette bu proje için her kodu denedim ama hareket algılıyor hep anlamadım gitti
dostum senin yazdiğin kodu denedim hem ardunyo belli aralıklarla kendisi yanıp söryo hemde Serial.println(“hareket var”); ve Serial.println(“hareket yok”); kodlarını ardunyoda kontrol et dediğimde sildiriyo bunun için yapabileceğin bir şey varsa yardim edersen evinirim
“hareket var”
“hareket yok”
birde böyle deneyin çalışıyor
klavyedeki esc tusunun altındaki tustan deneyin
Bendede aynı sorun var rica etsem sorunu çözersen bana yanıt verirmisiniz
Devreyi çalıştırdığımda buzzer hareket algılamadan ses çıkarıyor rica etsem bana yardımcı olabilecek biri varmı.
int sensor = 2;
int led = 13;
int buzzer = 10;
int sensordurum = LOW;
int deger = 0;
void setup() {
pinMode(sensor, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
deger = digitalRead(sensor);
if (deger == HIGH) {
digitalWrite(led, HIGH);
playTone(300, 160);
delay(150);
if (sensordurum == LOW) {
Serial.println(“Hareket Tespit Edildi!”);
sensordurum = HIGH;
}
} else {
digitalWrite(led, LOW);
playTone(0, 0);
delay(300);
if (sensordurum == HIGH) {
Serial.println(“Hareket Sonlandi!”);
sensordurum = LOW;
}
}
}
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(buzzer, HIGH);
delayMicroseconds(period / 2);
digitalWrite(buzzer, LOW);
elapsed_time += (period);
}
}
Ardunio uno ya kamara bağlantısı yapabilirmisin.Sensör ile etkilişimi yapabilirmisin ?
hayır
merhaba, hareket sensörüm kendi kendine değerler oluşturuyor, mesela ortamda hareket yokken buzzer çalıyor ve ya bir kez hareket gördüğünde durmuyor. öneriniz nedir?
acaba bunu hcsr04 ile yapabilir miyiz???
yapılabilir amma o elema mesafe ölçmek için
Pır sensörünü aktif edemiyoruz belli araliklarda buzzer ses çıkartıyor kodda hata var mı acaba
kütüphane nasıl ekleniyor ya veya kütüphaneyi hazır yükleyemiyomuyuz
Merhaba Efe Bey,
Yalnızca Arduino İle Hareket Sensörü Diğer Adıyla PIR (Passive Infrared Sensör) Kullanımı kodunda yer alan servo motorun kütüphanesini kurmak gerekmiyor. Sadece kodu yazmak yeterli. Servo kütüphanesi Arduino kütüphaneleri içinde mevcut. Ama haklısınız, yukarıda yer alan kodda bir eksiklik var “#include” dan sonrası yazılmamış. Kod şöyle olmalı:”#include ”
Aslında “#include”u silip arduino programının üzerindeki bölümlerden taslak>library ekle>Arduino Kütüphaneler başlığı altındaki Servo’ya tıkladığında otomatik eklenecektir.
İyi çalışmalar…
Hırsız alarmında arduino kodunun sonuna bakın. Kod tamamlanmamış. Bilginize…
tamamlayacak kadar bilgiye sahipseniz tamamlarsanız çok sevinirim şimdiden teşşekür ederim
PIR kablolalma Şeması çok yanıltıcı. GND ile 5V un yerleri ters gösteriyor. Bunların yerlerini değiştiresiniz proje çalışır.
Merhaba,
Pır hareket sensöründe her seyi eksiksiz yapmama rağmen
‘servoPin’ was not declared in this scope hatası aldım. Bunu düzeltmek için ne yapabilirim? İlk ardunio denemem oldukca çaylak durumdayım.
Pır sensörü ile servo motor kontrolü devre şeması ile kodu nedir ve örnekleri nelerdir
bende hata veriyor kodu eksik yazmış
Hocam merhabalar. Photecelli sokak lambası yapmak istiyorum. içinde bir adet ışık sensörü, bir adet hareket sensörü ve bir adet led bulunacak.
mantık şu ; gece hareket var ise lambayı yak, gece hareket yok ise lambayı yakma
gündüz hareket var ise lambayı yakma, gündüz hareket yok ise lambayı yakma gibi
Bu blogu okuduktan ve mantığını anladıktan sonra yapabileceğinizi düşünüyoruz.