Parçalar · 5 dk okuma

PIR Hareket Sensörü (HC-SR501): Arduino, ESP32 ve Pico ile Hareket Algılama

PIR hareket sensörü nasıl çalışır? HC-SR501 bağlantısı, hassasiyet ve süre ayarı, H/L tetikleme modu, Arduino, ESP32 ve Pico kodu, hareketle yanan ışık ve yanlış algılamayı önleme.

PIR (Passive InfraRed, pasif kızılötesi) sensör, bir insanın ya da hayvanın görüş alanında hareket ettiğini algılayan ucuz ve çok az enerji harcayan bir sensördür. Merdivenlerde kendiliğinden yanan lambalar, alarm sistemleri ve otomatik kapı zilleri çoğunlukla bir PIR ile çalışır. Adındaki "pasif" kelimesi, sensörün kendisinin hiçbir ışın yaymadığını anlatır: yalnızca etraftaki sıcak cisimlerin yaydığı kızılötesi ışınımı dinler. Arduino projelerinde en çok kullanılan model HC-SR501'dir.

HC-SR501 PIR hareket sensörü
HC-SR501 PIR sensörü: beyaz kubbe bir Fresnel lensidir; altındaki kartta iki ayar potu ve bir tetikleme jumper'ı bulunur.

PIR sensör nasıl çalışır?

Sıcaklığı mutlak sıfırın üzerinde olan her cisim kızılötesi ışınım yayar; insan vücudu en çok 9–10 mikrometre dalga boyunda ışınım yayar. Sensörün kalbinde bu ışınıma tepki veren piroelektrik bir eleman vardır ve bu eleman iki yarıdan oluşur. Ortamda hareket yokken iki yarı aynı miktarda ışınım görür, sinyalleri birbirini götürür ve çıkış sakin kalır. Biri görüş alanından geçtiğinde önce bir yarı, sonra diğer yarı daha fazla ışınım alır; aradaki bu fark modülün devresi tarafından yakalanır ve OUT pini HIGH olur.

Üstteki beyaz kubbe bir Fresnel lensidir. Görüş alanını onlarca küçük bölgeye ayırır ve her bölgeden gelen ışınımı elemana odaklar. Kişi bir bölgeden diğerine geçtikçe sinyal değişir; bu yüzden PIR sensör hareketi çok iyi algılar ama hiç kıpırdamadan duran bir insanı algılayamaz.

HC-SR501 teknik özellikleri

ÖzellikDeğer
Besleme gerilimi4,5–20 V (5 V önerilir)
Bekleme akımıYaklaşık 50 µA
ÇıkışDijital: hareket varken 3,3 V, yokken 0 V
Algılama mesafesi3–7 m (ayarlanabilir)
Algılama açısıYaklaşık 110°
Çıkış süresiYaklaşık 3 saniye – 5 dakika (ayarlanabilir)
Ölü zamanÇıkış kapandıktan sonra yaklaşık 2,5 saniye
Isınma süresiAçılışta 30–60 saniye

Modülün üzerindeki ayarlar

  • Sx (hassasiyet) potu: Algılama mesafesini ayarlar. Saat yönünde çevirdikçe mesafe yaklaşık 3 metreden 7 metreye çıkar.
  • Tx (süre) potu: Hareket algılandıktan sonra çıkışın ne kadar HIGH kalacağını ayarlar. Saat yönünde çevirdikçe süre uzar.
  • Tetikleme jumper'ı H (tekrarlı): Hareket sürdüğü sürece süre her seferinde yeniden başlar; ışık kontrolü için idealdir.
  • Tetikleme jumper'ı L (tek seferlik): Süre dolunca çıkış LOW olur, hareket sürse bile; ardından yeni bir tetikleme gerekir.
  • Ölü zaman: Çıkış LOW olduktan sonra yaklaşık 2,5 saniye boyunca yeni hareket algılanmaz; bu değer ayarlanamaz.
Denemelere başlarken iki potu da saat yönünün tersine sonuna kadar çevir (en kısa süre, en düşük hassasiyet) ve jumper'ı H konumuna al. Böylece her testten sonra dakikalarca beklemek zorunda kalmazsın; süreyi daha sonra kodda ayarlamak çok daha esnektir.

HC-SR501 pin bağlantısı

PinGöreviArduino UnoESP32Raspberry Pi Pico
VCCBesleme5VVIN (5V)VBUS (5V)
OUTDijital çıkış (3,3 V)D2GPIO 27GP16
GNDToprakGNDGNDGND
Pin adları çoğu modülde kartın üst yüzünde, beyaz kubbenin altında yazar. Kubbeyi hafifçe çekerek çıkarıp etiketlere bakabilir, sonra yerine geri takabilirsin.

Arduino ile hareket algılama

Aşağıdaki kod sensörün ısınmasını bekler, ardından hareket başladığında ve bittiğinde Seri Monitör'e bir kez yazar ve Arduino'nun dahili LED'ini yakıp söndürür. Çıkışın sürekli okunup ekrana basılması yerine yalnızca durum değişimlerinin izlenmesi, gerçek projelerde de kullanacağın yöntemdir.

Arduino (C++)
1const int PIR_PIN = 2;
2const int LED_PIN = 13;        // dahili LED / built-in LED
3
4bool motion = false;
5
6void setup() {
7  pinMode(PIR_PIN, INPUT);
8  pinMode(LED_PIN, OUTPUT);
9  Serial.begin(9600);
10  Serial.println("Sensör ısınıyor / warming up...");
11  delay(30000);                  // ilk 30 sn kararsız / unstable for ~30 s
12  Serial.println("Hazır / ready");
13}
14
15void loop() {
16  bool now = digitalRead(PIR_PIN);
17  if (now && !motion) {
18    Serial.println("Hareket algılandı / motion detected");
19    digitalWrite(LED_PIN, HIGH);
20    motion = true;
21  } else if (!now && motion) {
22    Serial.println("Hareket bitti / motion ended");
23    digitalWrite(LED_PIN, LOW);
24    motion = false;
25  }
26}
Sensör ilk açıldığında 30–60 saniye boyunca ortamı "öğrenir" ve bu sürede kendiliğinden tetiklenebilir. Kodda bu süre kadar beklemek ya da ilk tetiklemeleri yok saymak, sistem her açıldığında çalan yanlış alarmları önler.

Hareketle yanan ışık: süreyi millis() ile kontrol etmek

Işığın ne kadar yanık kalacağını modülün Tx potu yerine kodda tutmak çok daha esnektir. Aşağıdaki kod her hareket algılandığında zamanı kaydeder ve son hareketten 20 saniye sonra ışığı kapatır; odada hareket sürdükçe ışık sönmez. LIGHT_PIN'e bir LED ya da 220 V'luk bir lamba için röle modülü bağlayabilirsin; aktif LOW bir röle kullanıyorsan son satırdaki HIGH ve LOW'u yer değiştir. Röle bağlantısının ayrıntıları Röle Modülü Nedir? yazısında.

Arduino (C++)
1const int PIR_PIN = 2;
2const int LIGHT_PIN = 7;               // LED ya da röle / LED or relay
3const unsigned long ON_TIME = 20000;   // son hareketten sonra 20 sn / 20 s after last motion
4
5unsigned long lastMotion = 0;
6
7void setup() {
8  pinMode(PIR_PIN, INPUT);
9  pinMode(LIGHT_PIN, OUTPUT);
10}
11
12void loop() {
13  if (digitalRead(PIR_PIN) == HIGH) {
14    lastMotion = millis();             // her harekette süreyi yenile / refresh on every motion
15  }
16  bool on = (lastMotion != 0) && (millis() - lastMotion < ON_TIME);
17  digitalWrite(LIGHT_PIN, on ? HIGH : LOW);
18}

ESP32 ve Raspberry Pi Pico ile PIR

HC-SR501'in çıkışı zaten 3,3 V olduğu için ESP32 ve Pico'ya doğrudan bağlanabilir; gerilim bölücüye gerek yoktur. Modülün kendisini ise 5 V'tan besle, çünkü kartındaki regülatör 4,5 V'un altında kararsız çalışır. ESP32'de aynı Arduino kodu çalışır; pil ile çalışan projelerde ESP32'yi derin uykuya alıp PIR çıkışıyla uyandırmak (ext0 wakeup) pil ömrünü haftalarca uzatır. Pico'da MicroPython ile kesme (interrupt) kullanarak hareketi kaçırmadan yakalayabilirsin:

MicroPython
1from machine import Pin
2import time
3
4pir = Pin(16, Pin.IN)            # GP16
5led = Pin(25, Pin.OUT)           # dahili LED; Pico W'de Pin("LED") / onboard LED; Pin("LED") on Pico W
6
7def on_motion(pin):
8    led.value(pin.value())       # hareket varken yanar / on while there is motion
9    print("Hareket / motion" if pin.value() else "Bitti / ended")
10
11pir.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=on_motion)
12
13while True:
14    time.sleep(1)

Yanlış algılamayı önlemek

  • Isı kaynaklarına çevirme: Kalorifer, klima üflemesi, güneş alan pencere ve sıcak lambalar ani sıcaklık değişimiyle sensörü tetikler.
  • Sallanan nesnelerden uzak tut: Rüzgârda sallanan perde, bitki ya da ağaç dalları güneşte ısınmışsa hareket gibi görünür.
  • Beslemeyi temizle: Röle ve Wi-Fi modülleri beslemede gürültü yaratır; sensörün VCC ile GND'si arasına 100 µF'lık bir kondansatör ekle.
  • ESP32'den biraz uzaklaştır: Wi-Fi anteninin çok yakınında duran HC-SR501 ara sıra kendiliğinden tetiklenebilir; birkaç santimetre mesafe ve kısa bir kablo genelde sorunu çözer.
  • Evcil hayvanlar için: Hassasiyeti düşür ve sensörü yerden yüksekte, hafif aşağı bakacak şekilde monte et.
  • Cam arkasına koyma: Normal cam kızılötesi ışınımı geçirmez; pencerenin arkasındaki sensör dışarıdaki hareketi göremez.

PIR mi, mikrodalga radar mı, ultrasonik mi?

ÖzellikPIR (HC-SR501)Mikrodalga radar (RCWL-0516)Ultrasonik (HC-SR04)
Neyi algılar?Isı yayan, hareket eden cisimHer türlü hareketÖnündeki cismin mesafesi
İnce duvar ya da kutu arkasındanAlgılamazAlgılarAlgılamaz
Kıpırdamadan duran insanAlgılamazAlgılamazMesafe olarak ölçer
Güç tüketimiÇok düşük (~50 µA)Düşük (~3 mA)Orta (~15 mA)
Tipik kullanımIşık, alarmGizli sensör, kapı açıcıEngel algılama, seviye ölçümü

Odada birinin olup olmadığını değil, birinin hareket edip etmediğini bilmek istiyorsan PIR en ekonomik çözümdür. Bir nesnenin ne kadar uzakta olduğunu ölçmen gerekiyorsa HC-SR04 Mesafe Sensörü yazısına göz at.

PIR sensör ile proje fikirleri

  • Otomatik koridor ışığı: Hareket algılanınca röleyle lambayı yak, 30 saniye hareketsizlikten sonra söndür.
  • Hırsız alarmı: Gece modunda hareket algılanırsa bir buzzer öttür; ses kısmı için Buzzer Nedir?
  • Akıllı gece lambası: Hem karanlık hem hareket varsa yanan bir lamba için PIR'ı LDR Işık Sensörü ile birleştir.
  • Telefona bildirim: ESP32 ile hareket algılanınca Telegram üzerinden mesaj gönder.
  • Enerji tasarruflu ekran: Yanına biri geldiğinde LCD'nin arka ışığını aç, gidince kapat.
  • Ziyaretçi sayacı: Kapıdan geçen her hareketi sayıp ekranda göster.

Sık yapılan hatalar ve çözümleri

  • Çıkış sürekli HIGH kalıyor: Tx süresi çok uzun ya da H modunda ortamda sürekli hareket var; potu azalt ve sensörün bir ısı kaynağına bakmadığından emin ol.
  • Hiç tetiklenmiyor: VCC 5 V değil, sensör hâlâ ısınma süresinde ya da OUT kablosu koddaki pinden farklı bir pinde olabilir.
  • Birkaç saniyede bir kendiliğinden tetikleniyor: Besleme gürültülü; kondansatör ekle, röle ve Wi-Fi modülünden uzaklaştır.
  • Hareket bitince hemen yeniden algılamıyor: Yaklaşık 2,5 saniyelik ölü zaman normaldir, sensör bozuk değildir.
  • Sensörü ters yöne monte etmek: PIR en iyi, hareket görüş alanını yandan yana kestiğinde algılar; sensöre doğru düz yürüyen birini daha geç fark eder.

PIR sensör, ilk akıllı ev projen için en güzel başlangıçlardan biridir: üç kabloyla bağlanır ve sonucu hemen görürsün. BlueGrays uygulamasında hareket sensörlü ışık, kapı zili ve alarm projelerini devre şemaları ve kodlarıyla adım adım bulabilirsin.

Sıkça sorulan sorular

PIR sensör kaç metreden algılar?

HC-SR501 yaklaşık 110 derecelik bir açıyla 3 ile 7 metre arasında algılar. Mesafeyi modülün üzerindeki Sx (hassasiyet) potuyla ayarlarsın; saat yönünde çevirdikçe mesafe artar.

PIR sensör hareketsiz duran insanı algılar mı?

Hayır. PIR yalnızca kızılötesi ışınımdaki değişimi, yani hareketi algılar. Kıpırdamadan oturan birini fark etmez. Odada birinin bulunup bulunmadığını anlamak için LD2410 gibi mmWave varlık radarları kullanılır.

PIR sensör camın arkasından çalışır mı?

Hayır. Normal pencere camı insan vücudunun yaydığı kızılötesi ışınımı geçirmez, bu yüzden camın arkasındaki sensör dışarıdaki hareketi göremez. Dış ortam için sensörü dışarıya, yağmurdan korunan bir yere monte etmelisin.

HC-SR501 3,3 V ile çalışır mı?

Modülün regülatörü 4,5 V'un altında kararsız çalıştığı için 5 V ile beslemek gerekir. Çıkış zaten 3,3 V olduğundan ESP32 ve Pico'ya doğrudan bağlanabilir. Tamamen 3,3 V bir sistem istiyorsan 2,7–12 V ile çalışan küçük AM312 PIR modülünü kullanabilirsin.

PIR sensör neden kendi kendine tetikleniyor?

En sık sebepler ısınma süresi, sensörün baktığı ısı kaynakları (kalorifer, güneş, klima) ve beslemedeki gürültüdür. İlk 60 saniyeyi yok say, sensörü ısı kaynaklarından çevir, VCC ile GND arasına kondansatör ekle ve Wi-Fi modülünden uzaklaştır.

HC-SR501'de H ve L modu arasındaki fark nedir?

H (tekrarlı) modunda hareket sürdükçe çıkış süresi her algılamada yeniden başlar, böylece ışık hareket olduğu sürece yanık kalır. L (tek seferlik) modunda çıkış ayarlanan süre dolunca kapanır, hareket sürse bile; yeni bir tetikleme ölü zamandan sonra gelir.

Tüm projeleri gör
Hareket Sensörü İle Hareket Algılayıcı
#24Başlangıç
Premium

Hareket Sensörü İle Hareket Algılayıcı

PIR hareket sensörü ile ortamdaki hareketi algılayarak LED yakan temel proje. Dijital sensör okuma ve hareket algılama mantığını öğretir.

4.6(47)
66
Hareket Sensörü İle Kapı Zili ve Işık
#25Orta
Premium

Hareket Sensörü İle Kapı Zili ve Işık

PIR sensörü hareket algıladığında LED'i yakıp buzzer ile kapı zili melodisi çalan proje. Hareket algılama ile ses ve ışık bildirimini birleştirir.

4.7(54)
70
ESP32 PIR Hareket Sensörü ile Otomatik Aydınlatma
#121Orta
Premium

ESP32 PIR Hareket Sensörü ile Otomatik Aydınlatma

Bu projede HC-SR501 PIR hareket sensörü ile odaya giren kişiyi algılayıp LED'i otomatik olarak yakacağız. Hareket algılandığında LED belirli bir süre yanacak ve `millis()` fonksiyonu ile sayaç sayesinde `delay()` kullanmadan zamanı yöneteceğiz. Bu sayede ESP32 bloklanmadan, başka işler de yapabilen bir hareket sensörlü aydınlatma sistemi elde edeceğiz. Gerçek hayatta merdiven, koridor, banyo veya dolap içi aydınlatmalarda kullanılabilir.

4.4(24)
38
ESP32 Hareket Algılama Alarmı
#140Orta
Premium

ESP32 Hareket Algılama Alarmı

ESP32 ve PIR sensörü kullanılarak hazırlanan bu projede hareket algılandığında buzzer devreye girerek sesli alarm verir. Basit ve düşük maliyetli bir güvenlik sistemi uygulamasıdır. (Görseller temsilidir yazılara göre bağlayınız)

4.4(10)
15
ESP32 Akıllı Aydınlatma (PIR + LDR + Röle + OLED)
#141İleri
Premium

ESP32 Akıllı Aydınlatma (PIR + LDR + Röle + OLED)

ESP32, PIR hareket sensörü, LDR ışık sensörü ve röle modülü ile evinin koridorunu, tuvaletini veya kilerini akıllı aydınlatmaya dönüştürüyoruz. Klasik "karanlıkta hareket algılanınca ışık yansın" senaryosunu inşa ediyoruz — ortam aydınlıksa hareket olsa bile ışık yanmaz, böylece gündüz gereksiz yere yanmaz ve enerji tasarrufu sağlanır. Işık 30 saniye yanık kalır; hareket devam ederse timer otomatik sıfırlanır ve süre uzar. SSD1306 OLED ekranda büyük fontlarla durum (AÇIK / GÜNDÜZ / BEKLE), geri

4.3(6)
11
ESP32 Hareket Alarm Sistemi (PIR + Buzzer + LED + Telegram)
#145İleri
Premium

ESP32 Hareket Alarm Sistemi (PIR + Buzzer + LED + Telegram)

PIR sensörü hareket algıladığında buzzer ve LED'i aktif eden, aynı anda Telegram üzerinden sahibine anlık bildirim gönderen akıllı bir güvenlik alarm sistemidir. Yanlış alarmları önlemek için 30 saniyelik cooldown (bekleme süresi) mekanizması vardır. Ev güvenliği, garaj izleme, depo veya çalışma odası gibi alanlarda kullanılabilir. Telegram entegrasyonu sayesinde nerede olursanız olun anında haberdar olursunuz. ESP32-CAM kullanılırsa fotoğraflı bildirim eklenebilir, klasik ESP32 DevKit V1 ile me

0.0(0)
8
Lazerli Uyarı Sistemi
#22Orta
Premium

Lazerli Uyarı Sistemi

Lazer ışını kesildiğinde LDR üzerinden algılayarak buzzer ve LED ile uyarı veren güvenlik projesi. Lazer-LDR çifti ile ışık kesintisi algılama mantığını öğretir.

4.8(64)
82
Lazerli Güvenlik Sistemi
#23İleri
Premium

Lazerli Güvenlik Sistemi

Lazer ışını kesildiğinde alarmı aktifleyen, buton veya IR kumanda ile sıfırlayabilen gelişmiş güvenlik sistemi. Çoklu giriş kaynağı ve durum yönetimini öğretir.

4.8(60)
77

PIR sensörün insan hareketini nasıl algıladığını, HC-SR501'in ayarlarını, Arduino'ya bağlamayı, hareketle yanan ışık yapmayı ve yanlış alarmları önlemeyi öğren.

PIR Hareket Sensörü (HC-SR501): Arduino, ESP32 ve Pico ile Hareket Algılama | BlueGrays