Mündəricat:

Auto Dog Feeder: 6 addım
Auto Dog Feeder: 6 addım

Video: Auto Dog Feeder: 6 addım

Video: Auto Dog Feeder: 6 addım
Video: ISSEI Skibidi Toilet 🚽😱 #4 2024, Noyabr
Anonim
Avtomatik İt Besleyicisi
Avtomatik İt Besleyicisi

Bu mənim Auto Pet Feeder layihəmdir. Mənim adım Parker, mən 11 -ci sinifdə oxuyuram və bu layihəni 11 Noyabr 2020 -ci ildə CCA (Kurs Sonlandırıcı Fəaliyyət) olaraq hazırladım və bu layihədə sizə Arduino UNO ilə Avtomatik Heyvan Besleyicisinin necə hazırlanacağını göstərəcəyəm. Dəyişdirə biləcəyiniz vaxtı seçə bilərsiniz. Yemək buruqdan paylanacaq və ev heyvanlarınızı qidalandıracaq!

Təchizat

Elektronika:

  • Arduino UNO
  • L298N - 10 $ - Nema 17 -ni idarə edir
  • NEMA 17 - 10 $ - Burgunu belə çevirir ki, yemək paylansın
  • RTC (DS1307) - 10 $ - Vaxt verir
  • 12V Güc Təchizatı - 5 $ - Hər şeyə güc verir
  • Mini Breadboard - Əlavə məftil üçün
  • Jumper Wires - Hər şeyi birləşdirir
  • Dişi -Kişi telləri - Hər şeyi birləşdirir

Avadanlıq:

  • 3D çap filamenti - 3d printer üçün
  • 2 M4 Bolt - Əsas plitəni yerində saxlayın
  • 4 Nema 17 bolt - Nemanı basıb saxlayın
  • PVC T 48mm daxili ölçü 66mm xarici ölçü - 3 dollar

Alətlər:

  • 3D printer
  • Qazma
  • Lehim silahı

Addım 1: Dizayn haqqında ümumi məlumat

Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat
Dizayn haqqında ümumi məlumat

Heyvan qidalanmasının dizaynı çox sadədir. PVC T -nin üstünə bir hopper gedir. Sonra PVC T -nin arxasında (şəkildə göstərildiyi kimi) Nema 17 ilə bağlı bir örtük gedir. Sonra Nema 17, yuxarıda görünə bilən burğunun arxasına itiləcək və yuxarıda görünə biləcək çuxuru deformasiya etməmək üçün onu tutmaq üçün bir bolt yan tərəfə girəcək!

Sonra buruq sadəcə yeməyi borudan və bir qaba itələyəcək!

Addım 2: Kod haqqında ümumi məlumat

Kod haqqında ümumi məlumat
Kod haqqında ümumi məlumat
Kod haqqında ümumi məlumat
Kod haqqında ümumi məlumat
Kod haqqında ümumi məlumat
Kod haqqında ümumi məlumat

RTC & Stepper, RTClib.h və Stepper.h adlı bir kitabxanaya malikdir, bu da RTC və Stepper üçün sadələşdirilmiş kod əlavə edir. If ifadələri çox sadədir, əgər saat və dəqiqələr deyilən vaxta bərabərdirsə, yeməyi paylayacaq nemanı döndərəcək. Kodun qalan hissəsini bir günlük təcrübəsi olan bir insan üçün belə başa düşmək çox asandır.

Addım 3: Nema 17 -ni Baza Plakasına və Burguya yapışdırın

Nema 17 -ni Baza Plakasına və Bürcünə bağlamaq
Nema 17 -ni Baza Plakasına və Bürcünə bağlamaq
Nema 17 -ni Baza Plakasına və Bürcünə bağlamaq
Nema 17 -ni Baza Plakasına və Bürcünə bağlamaq
Nema 17 -ni Baza Plaka və Burguya bağlamaq
Nema 17 -ni Baza Plaka və Burguya bağlamaq

Əvvəlcə lövhənizi götürüb Nema 17 -yə bərkitmək üçün baza plakasındakı əvvəlcədən hazırlanmış deliklərdən istifadə edin. Bunu etdikdən sonra burğunu arxa çuxurdan istifadə edərək Nemaya bağlamaq istəyirsiniz. Sonra əsas lövhəni burgu ilə bağlayın və Nemanı bağlayın, sonra M2 boltlarını hər tərəfə vidalayın.

Addım 4: L298N və RTC -nin naqilləri

L298N və RTC naqilləri
L298N və RTC naqilləri
L298N və RTC naqilləri
L298N və RTC naqilləri

Bu addım sizə L298N və RTC -ni necə bağlayacağınızı izah edəcək

L298N -ə 8, 9, 10, 11 sancaqlar ilə başlayacağıq

  • Pin 8 (Ağ) ilə IN1
  • Pin 9 (Bənövşəyi) ilə IN2
  • 10 -u (Çəhrayı) IN3 -ə bağlayın
  • PIN 4 (Sarı) ilə IN4

Sonra Nema 17 -ni L298N -ə bağlayacağıq

  • NEMA -da OUT1 -dən 1 -ə qədər
  • NEMA -da OUT2 - 2
  • NEMA -da OUT3 -dən 3 -ə qədər
  • NEMA -da OUT4 -dən 4 -ə qədər

12v və Arduino -nu L298N -ə bağlamaq (12V tapılmadı, buna görə 9V batareyanı güc kimi təsəvvür edin)

  • 12V -a qədər gərginlik
  • GND üçün əsas
  • Çörək lövhəsində 5V -dan 5V -a qədər

RTC -ni Arduino -ya bağlayın

  • GND - GND
  • Çörək lövhəsində 5V -dan 5V -a qədər
  • SDA -dan A5 -ə qədər
  • SC4 -dən A4 -ə qədər

Jumper pinləri

Bütün tullanan sancaqların L298N üzərində olması ehtimal olunur

Addım 5: Şərhlərlə Kodlaşdırma

Şərhlərlə Kodlaşdırma
Şərhlərlə Kodlaşdırma
Şərhlərlə Kodlaşdırma
Şərhlərlə Kodlaşdırma
Şərhlərlə Kodlaşdırma
Şərhlərlə Kodlaşdırma

Kod yuxarıdakı şəkillərdə daha aydındır

// Adı: Parker Frederick

// Layihənin Adı: Auto Pet Feeder // Tarix: 10 Noyabr 2020 Çərşənbə // Müəllim: M. Bonisteel // Desc: Ev heyvanlarınızı qeyd olunan vaxtda bəsləyin!

// İstifadə etdiyim şeylər üçün kitabxanalar #include #include #include "RTClib.h"

RTC_DS1307 rtc; // RTC -nin nə istifadə etdiyini söyləyir

// Yemək üçün vaxt təyin etdiyiniz yer budur

// mornFeedTime saatı = 12; int nightFeedTime = 7; // dəqiqə mornFeedTimeM = 29; int nightFeedTimeM = 00; // Saniyə int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7] [12] = {"Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"}; // Normal günləri həftənin günlərinə çevirir

const int feed = 200; // Bu sənin addımlarındır, buna görə neçə dəfə dönməsini istəyirsən

Stepper myStepper (feed, 8, 9, 10, 11); // Nema 17 üçün pinləriniz və digər stepperlər

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

while (! Serial); // RTC işləmirsə, onu serial ekranda göstərəcək, əgər (! Rtc.begin ()) {Serial.println ("RTC tapıla bilmədi"); isə (1); }

// Bu, Real Time Clock -un işləyib -işləmədiyini sizə xəbər verəcək və əgər (! Rtc.isrunning ()) {Serial.println ("RTC çalışır!");

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Bu, kompüterinizə vaxt ayıracaq və RTC -də istifadə edəcək

// Kompüter vaxtı yerinə müəyyən bir vaxta sahib olmaq istəyirsinizsə burda edə bilərsiniz //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // İl/Ay/Gün/Saat/Dəqiqə/Saniyə} myStepper.setSpeed (200); // Dönməsini istədiyiniz sürət}

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

// Bu, bu dəyişənləri indiki saatda edəcək və s. İnt hr = now.hour (); int mi = indi.minute (); int se = indi.second ();

// Kodlaşdırın ki, təyin olunmuş vaxt yeməyi paylayacaq və 5 dəfə fırlanacaq, bu səhər yeməyi üçün

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Breakfast!"); myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

}

// Kodlaşdırın ki, təyin olunmuş vaxt yeməyi paylayacaq və 5 dəfə fırlayacaq, bu gecə yeməyi üçündür

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Dinner!"); myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700);

myStepper.step (-yem); gecikmə (700); }

// Bu serialda İL, AY, GÜN, SAAT, DƏQİQƏ, İKİNCİ göstərəcək

Serial.print (indi.yıl (), DEC); Serial.print ('/'); Serial. çap (indi.ay (), DEC); Serial.print ('/'); Serial.print (indi.day (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [now.dayOfTheWeek ()]); Serial.print (")"); Serial.print (indi.hour (), DEC); Serial.print (':'); Serial.print (indi.minute (), DEC); Serial.print (':'); Serial.print (indi.second (), DEC); Serial.println (); }

RTC üçün istifadə etdiyim veb sayt, RTC -nin açıq olub -olmadığını bildirən ifadələrdən başqa bir çox şeyi sildim. Əsasən bu veb saytdan RTC -nin proqramlaşdırılmasını öyrənmək üçün istifadə etdim

Stepper motoru üçün istifadə etdiyim veb sayt, stepperi necə proqramlaşdıracağımı başa düşməyimə kömək etdi, heç bir şey saxlamadım. Kodlaşdırmağı başa düşməyimə kömək etdi

Addım 6: Problemlər və Onları Necə Düzəltdim

Problemlər və Onları Necə Düzəltdim!
Problemlər və Onları Necə Düzəltdim!

Yaşadığım bir neçə problem

  • 12v enerji təchizatına ehtiyacım var idi, yalnız 9v batareya tapdım və tez həll olundu.
  • L298N-i NEMA 17 ilə bağlayanda A və A-da telləri səhv saldım ki, bu da onu bir az sarsıtdı. Sadəcə telləri başqa bir şəkildə dəyişdirərək düzəltdim.
  • Kodu daha sadə etməyə çalışdım, çünki if ifadəsində myStepper.step (-feed); təkrar -təkrar qarışıq görünürdü. Buna görə də onu dəyişdirməli oldum.
  • Şəkildə gördüyüm kimi səhv ölçüdə bir lövhə aldım, buna görə bir az yenisini 3D çap etməli oldum və mükəmməl uyğun gəlir!
  • Mənim problemim buruqların kiçik olması səbəbindən tıxacların olmasıdır, buna görə də buruqları az miqdarda böyütməklə düzəldə bilərəm.

Tövsiyə: