Servo Motor etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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

```

Arduino ile Şifreli Kapı Kilidi (Keypad ve Servo Motor Kullanarak)

Arduino ile Şifreli Kapı Kilidi (Keypad ve Servo Motor Kullanarak)

Arduino ile Şifreli Kapı Kilidi (Keypad ve Servo Motor Kullanarak)

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino kullanarak basit ama etkili bir şifreli kapı kilidi projesi geliştireceğiz. Projemizde bir tuş takımı (keypad) ve bir servo motor kullanacağız. Bu proje, hem Arduino'nun temel prensiplerini anlamanıza yardımcı olacak hem de elektronik ve programlama becerilerinizi geliştirmenizi sağlayacak.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • 4x4 Tuş Takımı (Keypad)
  • Servo Motor (SG90 gibi küçük bir servo yeterli olacaktır)
  • Breadboard
  • Jumper Kablolar
  • Güç Kaynağı (Arduino için)

Devre Şeması ve Bağlantılar

Şimdi de devremizi nasıl kuracağımıza göz atalım. Aşağıdaki bağlantıları dikkatlice uygulayın:

Tuş Takımı (Keypad) Bağlantısı

Tuş takımı bağlantıları Arduino pinlerine aşağıdaki gibi yapılmalıdır:

  • Tuş takımının 1. pini -> Arduino Dijital Pin 2
  • Tuş takımının 2. pini -> Arduino Dijital Pin 3
  • Tuş takımının 3. pini -> Arduino Dijital Pin 4
  • Tuş takımının 4. pini -> Arduino Dijital Pin 5
  • Tuş takımının 5. pini -> Arduino Dijital Pin 6
  • Tuş takımının 6. pini -> Arduino Dijital Pin 7
  • Tuş takımının 7. pini -> Arduino Dijital Pin 8
  • Tuş takımının 8. pini -> Arduino Dijital Pin 9

Servo Motor Bağlantısı

Servo motorun bağlantıları ise şu şekilde olmalıdır:

  • Servo Motor Sinyal pini (genellikle sarı veya turuncu) -> Arduino Dijital Pin 10
  • Servo Motor VCC pini (genellikle kırmızı) -> Arduino 5V
  • Servo Motor GND pini (genellikle kahverengi veya siyah) -> Arduino GND

Arduino Kodu

Aşağıdaki Arduino kodunu Arduino IDE'sine kopyalayın ve kartınıza yükleyin. Kodu açıklayarak anlamanızı kolaylaştıracağım:


 #include <Keypad.h>
 #include <Servo.h>

 const byte ROWS = 4; //dört satır
 const byte COLS = 4; //dört sütun

 char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
 };

 byte rowPins[ROWS] = {2, 3, 4, 5}; //Satır pinleri
 byte colPins[COLS] = {6, 7, 8, 9}; //Sütun pinleri

 Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

 Servo myservo;  // Servo nesnesi oluştur

 const int servoPin = 10;
 String password = "1234"; // Şifremiz
 String enteredPassword = "";

 void setup() {
  Serial.begin(9600);
  myservo.attach(servoPin);  // Servoyu pin 10'a bağla
  myservo.write(0); // Başlangıç pozisyonu (kilitli)
 }

 void loop() {
  char key = keypad.getKey();

  if (key){
   Serial.println(key);
   enteredPassword += key;

   if(enteredPassword.length() == password.length()){
     if(enteredPassword == password){
       Serial.println("Şifre doğru!");
       // Kilidi aç
       myservo.write(90); // Servoyu 90 dereceye getir (kilidi aç)
       delay(3000); // 3 saniye açık tut
       myservo.write(0); // Servoyu geri getir (kilidi kapat)
       enteredPassword = ""; // Şifreyi sıfırla
     } else {
       Serial.println("Şifre yanlış!");
       enteredPassword = ""; // Şifreyi sıfırla
     }
   }
  }
 }
 

Kod Açıklaması:

  • #include <Keypad.h> ve #include <Servo.h>: Gerekli kütüphaneleri ekliyoruz.
  • const byte ROWS = 4; const byte COLS = 4;: Tuş takımımızın boyutlarını tanımlıyoruz.
  • char keys[ROWS][COLS] = {...};: Tuş takımındaki tuşların dizilimini belirtiyoruz.
  • byte rowPins[ROWS] = {2, 3, 4, 5}; byte colPins[COLS] = {6, 7, 8, 9};: Satır ve sütun pinlerini tanımlıyoruz.
  • Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );: Keypad nesnesini oluşturuyoruz.
  • Servo myservo;: Servo motor için bir nesne oluşturuyoruz.
  • const int servoPin = 10;: Servo motorun bağlı olduğu pini belirtiyoruz.
  • String password = "1234";: Doğru şifreyi tanımlıyoruz. Bu kısmı istediğiniz gibi değiştirebilirsiniz.
  • String enteredPassword = "";: Girilen şifreyi tutacak değişkeni tanımlıyoruz.
  • setup() fonksiyonu: Seri haberleşmeyi başlatıyor, servo motoru bağlıyor ve başlangıç pozisyonuna getiriyoruz.
  • loop() fonksiyonu: Sürekli olarak tuş takımından giriş bekliyor, girilen şifreyi kontrol ediyor ve doğruysa kilidi açıyor.

Projenin Çalışması

Devreyi kurduktan ve kodu yükledikten sonra, seri monitörü açarak tuş takımından şifreyi girmeye başlayabilirsiniz. Doğru şifreyi girdiğinizde, servo motor harekete geçerek kilidi açacaktır. Yanlış şifre girdiğinizde ise, "Şifre yanlış!" mesajını göreceksiniz.

Geliştirme İmkanları

Bu proje oldukça basit bir başlangıç noktası. Projeyi daha da geliştirmek için şunları yapabilirsiniz:

  • Farklı bir servo motor kullanarak daha güçlü bir kilit mekanizması oluşturabilirsiniz.
  • LCD ekran ekleyerek girilen şifreyi ve diğer bilgileri görüntüleyebilirsiniz.
  • RFID okuyucu ekleyerek şifre yerine kartla da kilidi açma özelliği ekleyebilirsiniz.
  • Alarm sistemi entegre ederek yetkisiz giriş denemelerinde alarm çalmasını sağlayabilirsiniz.

Umarım bu proje size Arduino ile ilgili yeni şeyler öğretmiştir. İyi eğlenceler!

Etiketler: Arduino, Şifreli Kapı Kilidi, Keypad, Servo Motor, Proje, Elektronik, Kodlama, Hobi

```