İçindekiler:

Otomatik Köpek Besleyici: 6 Adım
Otomatik Köpek Besleyici: 6 Adım

Video: Otomatik Köpek Besleyici: 6 Adım

Video: Otomatik Köpek Besleyici: 6 Adım
Video: Otomatik Köpek Mama ve Su Makinesi - Kendin Yap 2024, Kasım
Anonim
Otomatik Köpek Besleyici
Otomatik Köpek Besleyici

Bu benim Otomatik Evcil Hayvan Besleyici projem. Adım Parker 11. Sınıftayım ve bu projeyi 11 Kasım 2020'de CCA (Kurs Bitirme Etkinliği) olarak yaptım bu projede sizlere Arduino UNO ile Otomatik Evcil Hayvan Besleyici yapmayı göstereceğim. Değiştirebileceğiniz bir zaman seçebilirsiniz. Yiyecekler bir burgu aracılığıyla dağıtılacak ve evcil hayvanlarınızı besleyecektir!

Gereçler

Elektronik:

  • Arduino UNO'su
  • L298N - 10$ - Nema 17'yi kontrol eder
  • NEMA 17 - 10$ - Yiyeceklerin dağıtılması için burguyu döndürür
  • RTC (DS1307) - 10$ - Zaman kazandırır
  • 12V Güç Kaynağı - 5$ - Her şeye güç sağlar
  • Mini Breadboard - Ekstra kablolama alanı için
  • Jumper Wires - Her şeyi birbirine bağlar
  • Dişi - Erkek kablolar - Her şeyi bağlar

Donanım:

  • 3D baskı filamanı - 3d yazıcı için
  • 2 M4 Cıvata - Taban plakasını yerinde tutun
  • 4 Nema 17 cıvata - Nema'yı basılı tutun
  • PVC T 48mm iç ölçü 66mm dış ölçü - 3$

Aletler:

  • 3 boyutlu yazıcı
  • Delmek
  • Lehim tabancası

Adım 1: Tasarıma Genel Bakış

Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış

Evcil hayvan besleyicinin tasarımı çok basittir. PVC T'nin üstüne bir huni girer. Daha sonra PVC T'nin arkasına (resimde gösterildiği gibi) Nema 17 takılı olan bir kapak gider. Daha sonra Nema 17, yukarıda görülebilen Burgu'nun arkasına itilecek ve yukarıda görülen deliği deforme etmeyecek şekilde yerinde tutmak için bir cıvata yan tarafa gidecektir!

Ardından burgu, yiyecekleri borudan dışarı ve bir kaseye itecektir!

2. Adım: Koda Genel Bakış

Kod Genel Bakış
Kod Genel Bakış
Kod Genel Bakış
Kod Genel Bakış
Kod Genel Bakış
Kod Genel Bakış

RTC & Stepper, RTC ve Stepper için basitleştirilmiş kod ekleyen RTClib.h ve Stepper.h adlı bir kitaplığa sahiptir. İf ifadeleri çok basittir, eğer saat ve dakika belirtilen süreye eşitse, yiyeceği dağıtacak nema'yı döndürür. Kodun geri kalanı, bir günlük deneyime sahip biri için bile anlaşılması çok kolaydır.

Adım 3: Nema 17'nin Taban Plakasına ve Burguya Takılması

Nema 17'nin Taban Plakasına ve Burguya Takılması
Nema 17'nin Taban Plakasına ve Burguya Takılması
Nema 17'nin Taban Plakasına ve Burguya Takılması
Nema 17'nin Taban Plakasına ve Burguya Takılması
Nema 17'nin Taban Plakasına ve Burguya Takılması
Nema 17'nin Taban Plakasına ve Burguya Takılması

Öncelikle taban plakanızı alıp, taban plakasındaki önceden hazırlanmış deliklerden Nema 17'nize takmak istiyorsunuz. Bunu yaptıktan sonra, üzerindeki arka deliği kullanarak burguyu Nema'ya takmak istiyorsunuz. Ardından Taban plakasını burgu ve Nema takılıyken bağlayın, ardından M2 cıvatalarını her iki tarafa vidalayın.

Adım 4: L298N ve RTC'yi Kablolama

Kablolama L298N ve RTC
Kablolama L298N ve RTC
Kablolama L298N ve RTC
Kablolama L298N ve RTC

Bu adım size L298N ve RTC'yi nasıl bağlayacağınızı söyleyecektir.

L298N'ye 8, 9, 10, 11 pinleriyle başlayacağız.

  • Pin 8'i (Beyaz) IN1'e
  • Pin 9 (Mor) - IN2
  • Pin 10 (Pembe) - IN3
  • PIN 11 (Sarı) - IN4

Daha sonra Nema 17'yi L298N'ye bağlayacağız

  • NEMA'da OUT1'den 1'e
  • NEMA'da OUT2'den 2'ye
  • NEMA'da OUT3'ten 3'e
  • NEMA'da OUT4 ila 4

12v ve Arduino'yu L298N'ye bağlama (12V bulunamadı, bu yüzden 9V pili güç olarak hayal edin)

  • Volt - 12V
  • GND'ye toprak
  • Breadboard'da 5V - 5V

RTC'yi Arduino'ya Bağlama

  • GND'den GND'ye dönüştürücü
  • Breadboard'da 5V - 5V
  • SDA'dan A5'e
  • SCL'den A4'e

Jumper Pimleri

Tüm jumper pinlerinin L298N'de olması gerekiyor

Adım 5: Yorumlarla Kodlama

Yorumlarla Kodlama
Yorumlarla Kodlama
Yorumlarla Kodlama
Yorumlarla Kodlama
Yorumlarla Kodlama
Yorumlarla Kodlama

Yukarıdaki resimlerde kod daha net

// İsim: Parker Frederick

// Proje Adı: Otomatik Evcil Hayvan Besleyici // Tarih: 10 Kasım 2020 Salı // Öğretmen: M. Bonisteel // Açıklama: Evcil hayvanlarınızı belirtilen saatte besleyin!

// Kullandığım şeyler için kütüphaneler #include #include #include "RTClib.h"

RTC_DS1307 rtc; // Hangi RTC'yi kullandığımı söylüyor

// Bu, yemeğin zamanını belirlediğiniz yerdir.

// Saat int mornFeedTime = 12; int nightFeedTime = 7; //Dakika int mornFeedTimeM = 29; int nightFeedTimeM = 00; //Saniye int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7][12] = {"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"}; // Normal günleri haftanın günlerine çevirir

const int besleme = 200; // Bu senin adımların, yani kaç kez dönmesini istiyorsun

Step myStepper(besleme, 8, 9, 10, 11); // Nema 17 ve diğer birçok stepper için pinleriniz

geçersiz kurulum() { Serial.begin(9600);

while (!Seri); // RTC çalışmıyorsa, seri ekranda gösterir if (! rtc.begin()) { Serial.println("RTC bulunamadı"); iken (1); }

// Bu size Gerçek Zamanlı Saat'in çalışıp çalışmadığını söyleyecek ve seri ekranda if (! rtc.isrunning()) { Serial.println("RTC çalışıyor!");

rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Bu, bilgisayarınızın zamanını alacak ve RTC'de kullanacaktır.

// Bilgisayar saati yerine saat ayarı yapmak istiyorsanız buradan yapabilirsiniz //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Yıl/Ay/Gün/Saat/Dakika/Saniye } myStepper.setSpeed(200); // Dönmesini istediğiniz hız }

void loop() { DateTime şimdi = rtc.now();

// Bu, bu değişkenleri şu anda olduğu saat yapacaktır vb. int hr = şimdi.hour(); int mi = şimdi.dakika(); int se = şimdi.saniye();

// Ayarlanan zamanda mamayı dağıtacak ve 5 kez dönecek şekilde kodlayın, bu sabah yemi içinse

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) { Serial.println("Kahvaltı!"); myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

}

// Ayarlanan zamanda mamayı dağıtacak ve 5 kez dönecek şekilde kodlayın, bu gece beslemesi içindir

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) { Serial.println("Akşam Yemeği!"); myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700);

myStepper.step(-feed); gecikme(700); }

// Bu, seride YIL, AY, GÜN, SAAT, DAKİKA, İKİNCİ görüntüleyecektir.

Seri.print(şimdi.yıl(), Aralık); Seri.print('/'); Seri.print(şimdi.ay(), Aralık); Seri.print('/'); Serial.print(şimdi.gün(), Aralık); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Seri.print(şimdi.saat(), Aralık); Seri.print(':'); Seri.print(şimdi.dakika(), Aralık); Seri.print(':'); Seri.print(şimdi.ikinci(), Aralık); Seri.println(); }

RTC için kullandığım web sitesi RTC'nin açık veya kapalı olduğunu söyleyen if ifadeleri dışındaki çoğu şeyi sildim. Bu web sitesini esas olarak RTC'nin nasıl programlanacağını öğrenmek için kullandım

Step motor için kullandığım web sitesi bu, step motoru çalışacak şekilde nasıl programlayacağımı anlamama yardımcı oldu, ondan gerçekten hiçbir şey saklamadım. Sadece nasıl kodlayacağımı anlamama yardımcı oldu

Adım 6: Sorunlar ve Onları Nasıl Düzelttim

Sorunlar ve Onları Nasıl Düzelttim!
Sorunlar ve Onları Nasıl Düzelttim!

yaşadığım birkaç sorun

  • 12v güç kaynağına ihtiyacım vardı, sadece 9v pilim vardı ve bir tane buldum ve çabucak çözüldü.
  • L298N'yi NEMA 17 ile bağlarken, A ve A'daki kabloları yanlış yaptım ve bu da biraz titremesine neden oldu. Sadece kabloları başka bir şekilde değiştirerek düzelttim.
  • Kodu daha basit hale getirmeye çalıştım çünkü if ifadesinde myStepper.step(-feed); tekrar tekrar dağınık görünüyordu. Bu yüzden geri değiştirmek zorunda kaldım.
  • Resimde görüldüğü gibi yanlış boyutta taban plakasına sahiptim, bu yüzden biraz yeni bir tane 3D yazdırmak zorunda kaldım ve mükemmel oldu!
  • Sorunum, burgu küçük olduğu için sıkışması, bu nedenle sıkışması, düzeltebileceğim basit bir yol, burguyu az miktarda büyütmek!

Önerilen: