Arduino Projeleri
#30Orta

Akıllı Kapı Zili (Lokal Bildirim)

~1 saatYok

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 PiniBağ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

arduino-30-akilli-kapi-zili-lokal-bildirim.ino
1#include <Wire.h>
2#include <Adafruit_SSD1306.h>
3#define EKRAN_GENISLIK 128
4#define EKRAN_YUKSEKLIK 64
5Adafruit_SSD1306 ekran(EKRAN_GENISLIK, EKRAN_YUKSEKLIK, &Wire, -1);
6const int pir=7, buzzer=8;
7
8void 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
20void 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).

Bu projenin kodunu AI ile özelleştir

Farklı pin, ek özellik ya da başka bir sensör mü istiyorsun?