Arduino ile Evcil Hayvan Mama Otomatiği: Zamanlayıcılı ve Manuel Kontrol Destekli

Arduino ile Evcil Hayvan Mama Otomatiği: Zamanlayıcılı ve Manuel Kontrol Destekli

Arduino ile Evcil Hayvan Mama Otomatiği: Zamanlayıcılı ve Manuel Kontrol Destekli

Merhaba sevgili Arduino severler ve evcil hayvan dostları!

Bugün sizlerle hem Arduino projelerine yeni başlayanlar, hem de minik dostlarımızın beslenmesini kolaylaştırmak isteyenler için harika bir proje paylaşacağım: Arduino ile evcil hayvan mama otomatiği! Bu proje sayesinde, evcil hayvanınızın beslenme saatlerini otomatik olarak ayarlayabilir, dilerseniz manuel olarak da mama verebilirsiniz. Hem pratik, hem de eğlenceli!

Neden Bu Proje?

  • Zaman Tasarrufu: Yoğun bir gününüzde mama verme derdinden kurtulun.
  • Düzenli Beslenme: Evcil hayvanınızın düzenli saatlerde beslenmesini sağlayın.
  • Eğlenceli Proje: Arduino ile temel elektronik ve programlama becerilerinizi geliştirin.
  • Uygun Maliyet: İhtiyacınız olan malzemeler genellikle uygun fiyatlıdır.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • Servo Motor (SG90 tavsiye edilir)
  • RTC Modülü (DS3231 gerçek zaman saati modülü)
  • Buton (Manuel kontrol için)
  • Jumper Kablolar
  • Mama Kabı ve Haznesi (Uygun bir kap ve hazne tasarlayabilirsiniz veya hazır bir ürün kullanabilirsiniz)
  • 5V Güç Kaynağı
  • Breadboard (isteğe bağlı)
  • Direnç (Buton için 10k ohm)

Proje Şeması ve Bağlantılar

Projemizin temelinde, RTC modülü sayesinde zamanı takip edip, belirlenen saatlerde servo motoru çalıştırarak mamayı dökmesini sağlamak yatıyor. Buton ise manuel mama verme işlemine olanak tanıyacak.

Bağlantıları aşağıdaki gibi yapabilirsiniz:

  • Servo Motor:
    • Sinyal Kablosu -> Arduino Dijital Pin 9
    • VCC Kablosu -> Arduino 5V
    • GND Kablosu -> Arduino GND
  • RTC Modülü (DS3231):
    • SDA -> Arduino A4
    • SCL -> Arduino A5
    • VCC -> Arduino 5V
    • GND -> Arduino GND
  • Buton:
    • Bir bacak -> Arduino Dijital Pin 2
    • Diğer bacak -> 5V (10k ohm direnç ile GND'ye bağlayın)

Arduino Kodu

Aşağıdaki kod, projenin temel işlevselliğini sağlamaktadır. Kodu Arduino IDE'sine kopyalayıp, kendi ihtiyaçlarınıza göre düzenleyebilirsiniz.


 #include <Servo.h>
 #include <RTClib.h>

 Servo servoMotor;
 RTC_DS3231 rtc;

 const int buttonPin = 2;
 int buttonState = 0;

 // Beslenme Saatleri (Saat, Dakika)
 int beslenmeSaati[] = {8, 0, 18, 0}; // Sabah 8 ve Akşam 6

 int servoAcikPozisyon = 90; // Servonun mamayı dökeceği pozisyon
 int servoKapaliPozisyon = 0; // Servonun kapalı pozisyonu

 void setup() {
  Serial.begin(9600);

  if (! rtc.begin()) {
   Serial.println("RTC Modülü Bulunamadı!");
   while (1);
  }

  //RTC ilk defa kullanılıyorsa saati ayarlayın
  //rtc.adjust(DateTime(2024, 10, 27, 12, 0, 0)); // Yıl, Ay, Gün, Saat, Dakika, Saniye

  servoMotor.attach(9);
  pinMode(buttonPin, INPUT_PULLUP); // Dahili pull-up direnci kullanılıyor
  servoMotor.write(servoKapaliPozisyon); //Başlangıçta kapalı pozisyonda
 }

 void loop() {
  DateTime now = rtc.now();
  buttonState = digitalRead(buttonPin);

  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

  // Otomatik Besleme
  for (int i = 0; i < sizeof(beslenmeSaati) / sizeof(beslenmeSaati[0]); i += 2) {
   if (now.hour() == beslenmeSaati[i] && now.minute() == beslenmeSaati[i + 1] && now.second() == 0) {
    Serial.println("Otomatik Besleme Zamanı!");
    mamaVer();
   }
  }

  // Manuel Besleme (Butona Basıldığında)
  if (buttonState == LOW) {
   Serial.println("Manuel Besleme!");
   mamaVer();
   delay(3000); // Butona basılı tutulduğunda sürekli mama vermeyi engellemek için bir gecikme
  }

  delay(1000);
 }

 void mamaVer() {
  servoMotor.write(servoAcikPozisyon); // Servoyu aç
  delay(2000); // Mamanın dökülmesi için bekle
  servoMotor.write(servoKapaliPozisyon); // Servoyu kapat
  delay(5000); // Bir sonraki beslemeye kadar bekle
 }
 

Kod Açıklaması

  • Kütüphaneler: Servo motor ve RTC modülü için gerekli kütüphaneler ekleniyor.
  • Pin Tanımları: Motorun ve düğmenin bağlı olduğu pinler tanımlanıyor.
  • Beslenme Saatleri: Evcil hayvanınızın beslenme saatleri tanımlanıyor.
  • `setup()` Fonksiyonu: Seri haberleşme başlatılıyor, RTC modülü ve servo motor ayarlanıyor.
  • `loop()` Fonksiyonu: Sürekli olarak saati kontrol ediyor, belirlenen saatlerde veya buton basıldığında `mamaVer()` fonksiyonunu çağırıyor.
  • `mamaVer()` Fonksiyonu: Servo motoru belirli bir süre hareket ettirerek mama verme işlemini gerçekleştiriyor.

İpuçları ve Öneriler

  • Mama haznesini ve mekanizmasını evcil hayvanınızın boyutuna ve mama türüne göre uyarlayın.
  • RTC modülünün pilini takmayı unutmayın, aksi takdirde saat bilgisi kaybolabilir.
  • Servo motorun hareket hızını ve açısını, mama miktarını kontrol edecek şekilde ayarlayın.
  • Kodu kendi ihtiyaçlarınıza göre özelleştirmekten çekinmeyin!

Sonuç

Bu proje ile evcil hayvanınızın beslenmesini kolaylaştırırken, Arduino ile de keyifli bir deneyim yaşayacaksınız. Unutmayın, güvenlik her zaman öncelikli olmalı. Evcil hayvanınızın sağlığı için güvenilir bir sistem kurduğunuzdan emin olun. Şimdiden kolay gelsin!

Etiketler: arduino, evcil hayvan, mama otomatiği, zamanlayıcı, servo motor, rtc, ds3231, proje, diy, elektronik

```

0 yorum: