Hareket Alarmı
Başlangıç25 dkOdaya biri girince öten küçük bir ev alarmı: HC-SR501 PIR sensörü insan vücudunun yaydığı ısıdaki değişimi algılar, buzzer iki tonlu bir siren çalar ve kırmızı LED yanıp söner; her alarm Seri Monitöre sayılarak yazılır. Bir sensörün dijital çıkışını okumayı, yalnızca hareketin başladığı anı yakalamayı, millis() ile bir sesi belli bir süre çalmayı ve işi kendi fonksiyonuna toplamayı öğretir. Ek kütüphane gerekmez.
Uygulamada adım adım yapGerekli malzemeler
1 × Arduino Uno R3
1 × Breadboard 830 Pin (MB-102)
1 × HC-SR501 PIR Hareket Sensörü
1 × Pasif Buzzer (Piezo)
1 × LED - Kırmızı (5mm)
1 × Direnç 220 Ω (1/4W)
5 × Jumper Kablo - Erkek/Erkek
3 × Jumper Kablo - Erkek/Dişi
Bağlantı adımları
- 1
Güç sıralarını bağla (5V ve GND)

Siyah erkek-erkek jumper kabloyu Arduino'nun güç başlığındaki GND pinlerinden birine tak, diğer ucunu breadboard'un üstteki mavi çizgili (−) güç sırasına bağla. Kırmızı kabloyu aynı başlıktaki 5V pinine tak, diğer ucunu üstteki kırmızı çizgili (+) güç sırasına bağla. PIR sensörü bu iki sıradan beslenecek; LED'in direnci ve buzzer da toprağını (−) sıradan alacak.
- Arduino GND → üstteki mavi çizgili (−) sıra (siyah kablo)
- Arduino 5V → üstteki kırmızı çizgili (+) sıra (kırmızı kablo)
- 2
Uyarı LED'ini ve direncini tak

Kırmızı LED'in uzun bacağını (+) breadboard'un üst yarısında 15. sütuna, kısa bacağını (−) 16. sütuna tak. 220 Ω direncin bir ucunu 16. sütuna, öbür ucunu üstteki (−) güç sırasına tak. Sonra mavi jumper kabloyla Arduino'nun 12 numaralı pinini 15. sütuna bağla (LED_PIN 12). Direnç LED'den geçen akımı sınırlar.
- kırmızı LED uzun bacak (+) → 15. sütun, üst yarı
- kırmızı LED kısa bacak (−) → 16. sütun, üst yarı
- 220 Ω direnç (1. bacak) → 16. sütun, üst yarı
- 220 Ω direnç (2. bacak) → üstteki mavi çizgili (−) sıra
- Arduino pin 12 → 15. sütun, üst yarı (mavi kablo)
- 3
Buzzer'ı tak ve bağla

Pasif buzzer'ın + bacağını üst yarıda 8. sütuna, öbür bacağını 9. sütuna tak; + bacak genelde daha uzundur ve gövdesinde + işareti vardır. Turuncu jumper kabloyla Arduino'nun 8 numaralı pinini 8. sütuna bağla (BUZZER_PIN 8). Kısa siyah bir kabloyla 9. sütunu üstteki (−) güç sırasına bağla.
- buzzer + bacak → 8. sütun, üst yarı
- buzzer − bacak → 9. sütun, üst yarı
- Arduino pin 8 → 8. sütun, üst yarı (turuncu kablo)
- 9. sütun, üst yarı → üstteki mavi çizgili (−) sıra (siyah kablo)
- 4
PIR sensörünü bağla

HC-SR501'in üç pinine erkek-dişi jumper kabloların dişi uçlarını tak (beyaz kubbeyi çıkarırsan pinlerin adları kartın üzerinde yazar). VCC'yi kırmızı kabloyla üstteki (+) güç sırasına, GND'yi siyah kabloyla üstteki (−) güç sırasına, OUT'u sarı kabloyla doğrudan Arduino'nun 2 numaralı pinine bağla (PIR_PIN 2). Kartın üzerindeki iki küçük vidadan biri algılama mesafesini, öbürü çıkışın ne kadar HIGH kalacağını ayarlar: başlarken süre vidasını saat yönünün tersine sonuna kadar çevir. Köşedeki jumper H konumundaysa hareket sürdükçe çıkış HIGH kalır.
- PIR sensörü VCC → üstteki kırmızı çizgili (+) sıra (kırmızı kablo)
- PIR sensörü GND → üstteki mavi çizgili (−) sıra (siyah kablo)
- Arduino pin 2 → PIR sensörü OUT (sarı kablo)
Arduino kodu
// PIR, buzzer ve LED'in pinleri
const int PIR_PIN = 2;
const int BUZZER_PIN = 8;
const int LED_PIN = 12;
// PIR'ın ısınma süresi (ms): bu sürede
// çevresini öğrenir, kıpırdama
const unsigned long WARM_UP = 30000;
// Bir alarmın ne kadar çalacağı (ms)
const unsigned long ALARM_TIME = 3000;
int lastState = LOW;
int alarms = 0;
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("PIR ısınıyor, 30 sn bekle...");
delay(WARM_UP);
Serial.println("Alarm kuruldu.");
}
// Siren: iki ton sırayla, LED yanıp söner
void soundAlarm() {
unsigned long start = millis();
bool high = true;
while (millis() - start < ALARM_TIME) {
tone(BUZZER_PIN, high ? 880 : 660);
digitalWrite(LED_PIN, high ? HIGH : LOW);
high = !high;
delay(250);
}
noTone(BUZZER_PIN);
digitalWrite(LED_PIN, LOW);
}
void loop() {
int state = digitalRead(PIR_PIN);
// Yalnızca hareketin başladığı anda
if (state == HIGH && lastState == LOW) {
alarms++;
Serial.print("Hareket algılandı! Alarm: ");
Serial.println(alarms);
soundAlarm();
}
lastState = state;
}
Seri Monitörde göreceğin
PIR ısınıyor, 30 sn bekle... Alarm kuruldu. Hareket algılandı! Alarm: 1 Hareket algılandı! Alarm: 2
Sonuç
Açılışta Seri Monitörde "PIR ısınıyor" yazar; 30 saniye kıpırdamadan bekle. "Alarm kuruldu." yazınca sensörün önünden geç: buzzer iki tonlu bir sirenle 3 saniye öter, kırmızı LED yanıp söner ve alarm sayısı yazılır. Hareket sürdükçe alarm yeniden çalmaz; sensör sakinleşip yeniden hareket görünce çalar. Alarm hiç çalmıyorsa sarı kablonun pin 2'de, VCC'nin (+) sırada olduğuna bak ve sensörün önünde gerçekten hareket et (PIR ısıyı görür, camın arkasından göremez). Alarm durmadan çalıyorsa ya da çok geç susuyorsa karttaki süre vidasını saat yönünün tersine çevir.
Uygulamada her bağlantıyı tek tek işaretle, envanterindeki parçalarla eşleştir ve kaldığın yerden devam et.
Uygulamada adım adım yap