Akıllı Kapı Zili (Lokal Bildirim)
Proje Amacı
PIR sensörle kapı önündeki hareketi algılayıp hem buzzer ile ses hem de küçük bir OLED ekranda 'Ziyaretçi Var' mesajı göstererek yerel (internetsiz) bir akıllı kapı zili sistemi kurmak.
Gerekli Malzemeler
- Arduino Uno
- PIR Hareket Sensörü
- Pasif Buzzer
- 0.96" I2C OLED Ekran (SSD1306)
- Breadboard
Gerekli Kütüphaneler
Adafruit SSD1306 + Adafruit GFX Library — ikisi de Kütüphane Yöneticisi'nden kurulmalı (SSD1306 kurulurken GFX'i bağımlılık olarak otomatik önerir). Wire.h yerleşiktir.
Pin Bağlantıları
| Bileşen Pini | Bağlantı |
|---|---|
| PIR VCC | 5V |
| PIR GND | GND |
| PIR OUT | D7 |
| Buzzer + | D8 |
| OLED VCC | 5V |
| OLED GND | GND |
| OLED SDA | A4 |
| OLED SCL | A5 |
Devre Şeması
Arduino Kodu
| 1 | #include <Wire.h> |
| 2 | #include <Adafruit_SSD1306.h> |
| 3 | #define EKRAN_GENISLIK 128 |
| 4 | #define EKRAN_YUKSEKLIK 64 |
| 5 | Adafruit_SSD1306 ekran(EKRAN_GENISLIK, EKRAN_YUKSEKLIK, &Wire, -1); |
| 6 | const int pir=7, buzzer=8; |
| 7 | |
| 8 | void setup(){ |
| 9 | pinMode(pir, INPUT); |
| 10 | pinMode(buzzer, OUTPUT); |
| 11 | ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C); |
| 12 | ekran.clearDisplay(); |
| 13 | ekran.setTextSize(1); |
| 14 | ekran.setTextColor(SSD1306_WHITE); |
| 15 | ekran.setCursor(0,0); |
| 16 | ekran.println("Sistem hazir"); |
| 17 | ekran.display(); |
| 18 | } |
| 19 | |
| 20 | void loop(){ |
| 21 | bool hareketVar = digitalRead(pir); |
| 22 | |
| 23 | if(hareketVar){ |
| 24 | tone(buzzer, 1500, 300); |
| 25 | ekran.clearDisplay(); |
| 26 | ekran.setCursor(0,20); |
| 27 | ekran.setTextSize(2); |
| 28 | ekran.println("Ziyaretci"); |
| 29 | ekran.println("Var!"); |
| 30 | ekran.display(); |
| 31 | delay(3000); |
| 32 | } else { |
| 33 | ekran.clearDisplay(); |
| 34 | ekran.setCursor(0,20); |
| 35 | ekran.setTextSize(1); |
| 36 | ekran.println("Bekleniyor..."); |
| 37 | ekran.display(); |
| 38 | } |
| 39 | |
| 40 | delay(200); |
| 41 | } |
Çalışma Açıklaması
OLED ekranın I2C adresi genelde 0x3C'dir, çalışmazsa 0x3D deneyin. WiFi eklenip telefon bildirimi gönderilmesi ESP32'ye geçişle mümkündür (bu proje bilinçli olarak lokal/internetsiz tutulmuştur).
Test Bilgisi
Adafruit SSD1306 ve Adafruit GFX kütüphanelerini kurun. Devreyi kurun, kodu yükleyin. Sensörün önünde hareket edin; buzzer'ın çaldığını ve ekranda 'Ziyaretçi Var!' mesajının belirdiğini doğrulayın.
Olası Sorunlar ve Çözümleri
OLED hiç görüntü göstermiyorsa: I2C adresinin (0x3C/0x3D) doğru olduğunu bir I2C tarayıcı ile teyit edin. Hareket algılanıyor ama ekran güncellemiyor gibiyse: ekran.display() çağrısının her clearDisplay()'den sonra yapıldığından emin olun. Buzzer ile OLED aynı anda çalışmıyorsa: her ikisinin de aynı GND hattını paylaştığından emin olun.
Alternatif Çözümler
OLED yerine daha büyük bir I2C LCD (proje #08'deki gibi) kullanılabilir. ESP32'ye geçilerek WiFi üzerinden telefon bildirim (push notification) gönderimi eklenebilir — bu proje bilinçli olarak Arduino Uno ile lokal/internetsiz tutulmuştur. Küçük bir kamera modülü (ESP32-CAM ile) eklenerek ziyaretçinin fotoğrafı da kaydedilebilir (ileri seviye, ESP32 gerektirir).
Benzer Projeler
Akıllı Ayna Sistemi
Kişi yaklaştığında (PIR) VE ortam karanlıksa (LDR) aynanın etrafındaki LED aydınlatmayı otomatik açar — iki sensörün AND mantığıyla birleştirilmesi, akıllı ev otomasyonunda yanlış tetiklenmeyi azaltmanın en temel tekniğidir.
MQ-2 Gaz Alarmı
Ortamdaki yanıcı gaz/duman yoğunluğunu ölçüp tehlikeli seviyede LED ve buzzer ile alarm verir — ama bir uyarı: bu bir eğitim projesidir, sertifikalı bir ev tipi gaz alarmının yerini tutmaz (bkz. Çalışma Açıklaması).
Servo Kontrollü Kilit
Potansiyometreyi çevirerek servo motorun açısını 0-180° arasında kontrol eder; aynı mantık gerçek bir kilit mekanizmasına bağlandığında servo tabanlı bir erişim sistemine dönüşür.