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: