Raspberry Pi Pico 2 W ile Akıllı Çöp Kovası

Sistem Geliştirme Yaşam Döngüsü (SDLC) ile tasarlanmış otonom, temassız ve hijyenik IoT projesi.

Akıllı Çöp Kovası Projesi Kapak Görseli

Proje İnceleme Videosu

Projenin donanımsal kurulumunu, karşılaşılan teknik zorlukların (servo cızırtısı, akım yetersizliği) nasıl çözüldüğünü ve sistemin çalışma anını aşağıdaki YouTube videomuzdan detaylıca izleyebilirsiniz:

Proje Hakkında

Toplu yaşam alanlarında ve kişisel çalışma ortamlarında hijyen standartlarının artırılması, temas yoluyla bulaşan hastalıkların önlenmesi açısından kritiktir. Bu projenin temel amacı, fiziksel teması tamamen ortadan kaldıran otonom bir "Akıllı Çöp Kovası" tasarlamaktır.

Sistem, yeni nesil RP2350 mikrodenetleyici çipine sahip olan Raspberry Pi Pico 2 W kartı kullanılarak hayata geçirilmiştir. El yaklaşmasını algılamak için ultrasonik sensör, kapağı hareket ettirmek için ise yüksek torklu bir servo motor kullanılmıştır.

Kullanılan Malzemeler

Devre Şeması ve Pin Bağlantıları

Devre Şeması ve Pinout
Bileşen Pin / Uç Pico 2 W Bağlantısı
HC-SR04 Sensör VCC Harici 5V Güç Kaynağı
GND Ortak Şase (Pico Pin 3 - GND)
Trig GP15 (Pin 20)
Echo GP14 (Pin 19)
MG995 Servo Motor VCC (Kırmızı) Harici 5V Güç Kaynağı
GND (Kahverengi) Ortak Şase (Pico Pin 3 - GND)
Sinyal (Turuncu/Sarı) GP13 (Pin 17)

Adım Adım Yapılışı

  1. Güç Altyapısının Kurulması: MG995 servo motor yüksek akım çektiği için Pico'nun kendi USB çıkışı yetersiz kalacaktır. Eski bir USB kablosunu kesin, içindeki Kırmızı (5V) ve Siyah (GND) kabloları breadboard'un güç hatlarına bağlayın.
  2. Ortak Şase (Common Ground): Sistemin istikrarlı çalışması için Pico 2 W'nun GND pinlerinden birini (örn. 3. Pin), breadboard'daki harici güç kaynağının eksi (-) hattına fiziksel olarak bağlayın.
  3. Bileşenlerin Bağlanması: Yukarıdaki pin tablosuna ve devre şemasına sadık kalarak HC-SR04 mesafe sensörünü ve MG995 servo motoru jumper kablolar yardımıyla bağlayın.
  4. Mekanik Montaj ve Kalibrasyon: Servo motoru çöp kovasının menteşe mekanizmasına yerleştirin. Kodu çalıştırmadan önce servo motorun kolunu sökün, sisteme güç verip motorun "0" konumuna gelmesini bekleyin. Ardından çöp kovasının kapağı tam kapalıyken kolu takın.
  5. Yazılımın Yüklenmesi: Thonny IDE'yi bilgisayarınıza indirin. Pico'yu bağlayıp MicroPython Firmware'ini kurun. Aşağıdaki kodları kopyalayıp main.py adıyla cihazınıza kaydedin.

MicroPython Kodları

from machine import Pin, PWM, time_pulse_us
import time

# Pin Tanımlamaları
trig = Pin(15, Pin.OUT)  # GP15 (Pin 20)
echo = Pin(14, Pin.IN)   # GP14 (Pin 19)
servo = PWM(Pin(13))     # GP13 (Pin 17)
servo.freq(50)           # Servo motorlar 50Hz frekans ile çalışır

# Servo Açı Ayarları (Kendi kovanıza göre kalibre edebilirsiniz)
KAPALI_POZISYON = 2100  # Çöp kovasının kapalı olduğu açı
ACIK_POZISYON = 4500    # Çöp kovasının açık olduğu açı

# Başlangıç durumu
servo.duty_u16(KAPALI_POZISYON)
print("Akıllı Çöp Kovası Başlatıldı. Kapak Kapalı.")
time.sleep(1)

# Başlangıçta motoru boşa alarak cızırtıyı kes
servo.duty_u16(0)

def mesafe_olc():
    # Sensöre tetikleme sinyali gönder
    trig.value(0)
    time.sleep_us(2)
    trig.value(1)
    time.sleep_us(10)
    trig.value(0)
    
    # Yankı süresini ölç (Zaman aşımı: 30000 us)
    sure = time_pulse_us(echo, 1, 30000)
    
    # Eğer sinyal gelmezse veya hata olursa
    if sure < 0:
        return 999
        
    # Süreyi santimetreye (cm) çevir
    mesafe = (sure * 0.0343) / 2
    return mesafe

while True:
    try:
        olculen_mesafe = mesafe_olc()
        
        # Eğer okunan mesafe 2 ile 20 cm arasındaysa (el yaklaştıysa)
        if 2 < olculen_mesafe < 20:
            print(f"El Algılandı! Mesafe: {olculen_mesafe:.1f} cm -> Kapak AÇILIYOR...")
            servo.duty_u16(ACIK_POZISYON)  # Kapağı aç
            
            # Kapağın açık kalma süresi (3 Saniye)
            time.sleep(3)
            
            print("Kapak KAPATILIYOR...")
            servo.duty_u16(KAPALI_POZISYON) # Kapağı kapat
            time.sleep(1) # Kapanması için bekle
            
            # Kapanma sonrası motoru boşa alarak cızırtıyı kes (Stall önleme)
            servo.duty_u16(0)
            
        time.sleep(0.1) # Hızlı döngüden kaçınmak için
        
    except Exception as e:
        print("Sistem Hatası:", e)
        time.sleep(1)

⚠️ Dikkat Edilmesi Gereken Kritik Noktalar

1. Servo Motor Cızırtısı (Stall Akımı): Yüksek torklu motorlar mekanik sınıra dayandıklarında sürekli akım çekerek cızırtı yaparlar. Kodda yer alan servo.duty_u16(0) komutu, kapak kapandıktan sonra motoru uyutarak bu sinir bozucu sesi keser ve enerji tasarrufu sağlar. Bu kodu silmeyin.
2. Güç Yetmezliği ve Resetlenme: MG995 motor yüke bindiğinde 1 Amperden fazla güç çekebilir. Pico'nun 3.3V veya USB (VBUS) pinleri bu gücü sağlayamaz. Cihazınızın çökmemesi/resetlenmemesi için motoru mutlaka harici bir 5V (telefon adaptörü vb.) ile besleyin.
3. Ortak Şase (Common Ground): Harici güç kaynağının GND'si ile Pico'nun GND'sini birleştirmezseniz, sistem çalışmaz ve sensörden veri alamazsınız.

🛠️ Eksikler ve İyileştirilmesi Gereken Noktalar

Voltaj Bölücü (Voltage Divider) İhtiyacı: Projenin bu sürümünde HC-SR04 mesafe sensörü doğrudan Pico'ya bağlanmıştır. Ancak sensör 5V ile çalışır ve Pico'ya (Echo pini üzerinden) 5V geri dönüş yapar. Pico 2 W'nun GPIO pinleri maksimum 3.3V tolere edebilir. Kısa vadeli projelerde bu çalışsa da uzun vadede işlemciyi yakabilir. Gelecek sürümlerde araya 1KΩ ve 2KΩ dirençlerden oluşan bir voltaj bölücü devre eklenmelidir.
Mekanik Yorgunluk: Motorun hareket alanı (açılar) zamanla fiziksel mekanizmayı esnetebilir. İlerleyen süreçlerde, açılarda sapma yaşanırsa KAPALI_POZISYON ve ACIK_POZISYON değerlerinde ufak oynamalar yapılarak kalibrasyon yenilenmelidir.
```