Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bu projenin temel amacı, bir hareket algılandığında lamba, led, motoru aktif hale getirmek ve hareket kesildikten belirli bir süre sonra otomatik olarak kapatmaktır. Böylece hem röle hem de hareket sensörünün yapısı anlaşılabilecektir.
ESP32’nin GPIO pinleri LED şeritlerin ihtiyaç duyduğu yüksek akımı (amper seviyesinde) sağlayamaz. Bu yüzden araya bir “anahtar” görevi gören Mosfet veya Röle konulmalıdır.
Bağlantı Tablosu:
| Bileşen | ESP32 Pini | Açıklama |
| PIR Sensör OUT | GPIO 13 | Hareket sinyali girişi |
| Mosfet GATE (G) | GPIO 12 | LED kontrol çıkışı |
| GND | GND | Tüm sistemin ortak toprağı |
HC-SR501 gibi popüler sensörlerin üzerinde iki adet potansiyometre bulunur:
Teknik İpucu: Eğer yazılımda hassas bir zamanlama yapacaksanız, sensör üzerindeki zaman ayarını en düşüğe getirip, gecikme mantığını ESP32 kodundaki millis() fonksiyonu ile yönetmek daha profesyonel bir yaklaşımdır.


LED şerit (LED tape veya LED ribbon olarak da bilinir), üzerine ışık yayan yüzey montajlı LED’lerin (SMD) yerleştirildiği esnek bir devre kartıdır. Bu şeritler çok yönlüdür ve çeşitli uygulamalarda yaygın olarak dekoratif aydınlatma amacıyla kullanılırlar. LED şeritler birçok farklı renk seçeneğiyle sunulur; genellikle ortam aydınlatması, vurgu aydınlatması veya dekoratif ışık efektleri sağlamak için tercih edilirler.
LED şeritler temelde iki ana türe ayrılır:

Adreslenemeyen tek renkli led şeritler genel olarak doğrudan 12 Volt bağlanarak sürülür. Bu durum maliyet açısından önemlidir. Aşağıdaki resimde ESP32, röle ve Led sürücü kullanılarak bir bağlantı yapılmıştır. Bu aşamada kod yazımı oldukça kolay olup sadece herhangi bir çıkış pinin ON/OFF yapılması ile LED şeritin ışık üretmesi sağlanabilir.

Projelerde röle kullanımı oldukça yaygındır. Eğer Led şeritlerimiz uzunsa muhakkak bir röle ile sürmemiz gerekmektedir. Aşağıdaki resimde rölelerin genel yapısı görülmektedir. Rölelerde NO ve NC konfigürasyonunu anlamak önemlidir. NO – normalde açık anlımına gelir. Giriş sinyali yokken lamba kapalı, giriş sinyali () olunca lamba ışık üretir. NC için durum tam tersidir.

Projelerde bir rölenin yüksek akım çeken bir yüke nasıl bağlandığını anlamak önemlidir. Rölenin düşük gerilim tarafına ESP32 bağlanırken, yüksek gerilim tarafındaki bağlantı aşağıdaki gibi yapılabilir.

Genel olarak bir röle ESP32’ye aşağıdaki gibi bağlanır. Çıkışta ise yüksek gerilim veya güçte yükler bağlamak mümkündür. Bu noktada röle akımının değerleri önemli olmaktadır.

Aşağıdaki bağlantıda PIR sensörü hareketi algıladığında bir röleyi çalıştırmaktadır. Röle çıkışına bir LED sürücü, Lamba, motor, fan vb. bağlamak mümkündür. Yükün değişse bile kodlarımız temel olarak hareketi algılayıp aç kapa yapmaktadır.

Aşağıdaki kod, hareket algılandığında LED’i yakar ve hareket bittikten sonra belirlediğiniz süre boyunca açık tutar.
#define MOTION_SENSOR_PIN 22 // Hareket sensörünün OUTPUT pinine bağlı ESP32 GPIO22 pini
#define RELAY_PIN 26 // Röle pinine bağlı ESP32 GPIO26 pini
int motionStateCurrent = LOW; // Hareket sensörü pininin güncel durumu
int motionStatePrevious = LOW; // Hareket sensörü pininin önceki durumu
void setup() {
Serial.begin(9600); // Seri haberleşmeyi başlat
pinMode(MOTION_SENSOR_PIN, INPUT); // ESP32 pinini giriş moduna ayarla
pinMode(RELAY_PIN, OUTPUT); // ESP32 pinini çıkış moduna ayarla
}
void loop() {
motionStatePrevious = motionStateCurrent; // Eski durumu sakla
motionStateCurrent = digitalRead(MOTION_SENSOR_PIN); // Yeni durumu oku
if (motionStatePrevious == LOW && motionStateCurrent == HIGH) { // Pin durumu değişimi: LOW -> HIGH
Serial.println("Hareket algilandi!, role ACILIYOR (ON)");
digitalWrite(RELAY_PIN, HIGH); // Röleyi aktif et
} else if (motionStatePrevious == HIGH && motionStateCurrent == LOW) { // Pin durumu değişimi: HIGH -> LOW
Serial.println("Hareket durdu!, role KAPATILIYOR (OFF)");
digitalWrite(RELAY_PIN, LOW); // Röleyi kapat
}
}
ledcWrite() fonksiyonunu kullanarak “soft-start” etkisi yaratabilirsin.if (hareket == HIGH && ortam_karanlik == HIGH) mantığını kurmanı öneririm.Light Sleep veya Deep Sleep modlarını kullanarak, sadece hareket olduğunda uyanmasını sağlayabilirsin. Ancak PIR sensörünün sürekli enerjiye ihtiyaç duyduğunu unutmamalısın (genelde 5V ile stabil çalışırlar).