Mundarija:

Itlarni avtomatik oziqlantirish: 6 qadam
Itlarni avtomatik oziqlantirish: 6 qadam

Video: Itlarni avtomatik oziqlantirish: 6 qadam

Video: Itlarni avtomatik oziqlantirish: 6 qadam
Video: Trinary Time Capsule 2024, Iyul
Anonim
Itlarni avtomatik oziqlantiruvchi
Itlarni avtomatik oziqlantiruvchi

Bu mening uy hayvonlarini oziqlantiruvchi loyiham. Mening ismim Parker, men 11 -sinfda o'qiyman va men ushbu loyihani 2020 yil 11 -noyabrda CCA (Course Culminating Activity) sifatida yaratdim, bu loyihada men sizga Arduino UNO bilan uy hayvonlarini avtomatik oziqlantirishni ko'rsataman. Siz o'zgartirishingiz mumkin bo'lgan vaqtni tanlashingiz mumkin. Oziq -ovqat burgutdan o'tadi va uy hayvonlarini boqadi!

Ta'minotlar

Elektronika:

  • Arduino UNO
  • L298N - 10 $ - Nema 17 ni boshqaradi
  • NEMA 17 - 10 $ - burgutni aylantiradi, shuning uchun oziq -ovqat tarqatiladi
  • RTC (DS1307) - 10 $ - Vaqt beradi
  • 12V quvvat manbai - 5 $ - hamma narsaga qodir
  • Mini Breadboard - qo'shimcha simlar uchun joy
  • Jumper simlari - hamma narsani bog'laydi
  • Ayol -erkak simlari - hamma narsani bog'laydi

Uskuna:

  • 3D bosma filament - 3d printer uchun
  • 2 M4 murvat - taglik plitasini joyida ushlab turing
  • 4 ta Nema 17 murvat - Nemani ushlab turing
  • PVX T 48 mm ichki o'lchami 66 mm tashqi o'lchami - 3 dollar

Asboblar:

  • 3D printer
  • Matkap
  • Lehimlash quroli

1 -qadam: Dizaynga umumiy nuqtai

Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai
Dizaynga umumiy nuqtai

Uy hayvonlarini oziqlantirishning dizayni juda oddiy. PVX T -ning tepasiga bir bunker kiradi. Keyin PVX T -ning orqa tomonida (rasmda ko'rsatilgandek), unga Nema 17 o'rnatilgan. Keyin Nema 17 yuqoridan ko'rinadigan burg'uni orqasiga suriladi va uni ushlab turish uchun yon tomonga bolt tushadi, shunda u tuynuk deformatsiyalanmaydi!

Shunda burgut ovqatni trubadan chiqarib, idishga solib qo'yadi!

2 -qadam: Kodni ko'rib chiqish

Kod haqida umumiy ma'lumot
Kod haqida umumiy ma'lumot
Kod haqida umumiy ma'lumot
Kod haqida umumiy ma'lumot
Kod haqida umumiy ma'lumot
Kod haqida umumiy ma'lumot

RTC & Stepper -da RTClib.h va Stepper.h deb nomlangan kutubxona mavjud bo'lib, u RTC & Stepper uchun soddalashtirilgan kodni qo'shadi. If iboralari juda oddiy, agar soat va daqiqa aytilgan vaqtga teng bo'lsa, u ovqatni tarqatadigan shishani aylantiradi. Kodning qolgan qismini hatto bir kunlik tajribaga ega bo'lgan kishi uchun ham tushunish juda oson.

3 -qadam: Nema 17 -ni asosiy plastinka va burg'iga ulash

Nema 17 -ni asosiy plastinka va burg'iga ulash
Nema 17 -ni asosiy plastinka va burg'iga ulash
Nema 17 -ni asosiy plastinka va burg'iga ulash
Nema 17 -ni asosiy plastinka va burg'iga ulash
Nema 17 -ni asosiy plastinka va burg'iga ulash
Nema 17 -ni asosiy plastinka va burg'iga ulash

Avval siz tayanch plastinangizni olib, Nema 17 -ga tayanch plastinkadagi oldindan tayyorlangan teshiklar yordamida biriktirmoqchisiz. Buni amalga oshirgandan so'ng, burg'uni Nema -ga orqa teshik yordamida biriktirmoqchisiz. Keyin taglik plitasini burgut bilan ulang va Nema biriktirilgan, keyin M2 murvatlarini har ikki tomonga burab qo'ying.

4 -qadam: L298N va RTC simlarini ulash

L298N va RTC simlari
L298N va RTC simlari
L298N va RTC simlari
L298N va RTC simlari

Bu qadam sizga L298N va RTC -ni qanday ulash kerakligini aytadi

Biz L298N 8, 9, 10, 11 -pinlardan boshlaymiz

  • 8 -pin (oq) IN1 ga
  • PIN -kod 9 (binafsha rang) IN2 ga
  • 10 -raqamli (pushti) IN3 -ga ulang
  • PIN 11 (sariq) - IN4

Keyin biz Nema 17 ni L298N ga ulaymiz

  • NEMAda OUT1dan 1gacha
  • NEMAda OUT2 dan 2 gacha
  • NEMAda OUT3 dan 3 gacha
  • NEMAda OUT4 dan 4 gacha

12v va Arduino -ni L298N -ga ulash (12V topilmadi, shuning uchun 9V batareyani quvvat deb tasavvur qiling)

  • Volt 12 V gacha
  • GND uchun asos
  • Non panelida 5V dan 5V gacha

RTC -ni Arduino -ga ulash

  • GND dan GNDgacha
  • Non panelida 5V dan 5V gacha
  • SDA dan A5 gacha
  • SCL - A4

Jumper pinlari

Barcha o'tish pimi L298N -da bo'lishi kerak

5 -qadam: Sharhlar bilan kodlash

Fikrlar bilan kodlash
Fikrlar bilan kodlash
Fikrlar bilan kodlash
Fikrlar bilan kodlash
Fikrlar bilan kodlash
Fikrlar bilan kodlash

Yuqoridagi rasmlarda kod aniqroq

// Ism: Parker Frederik

// Loyihaning nomi: Avtomatik oziqlantiruvchi // Sana: 2020 yil 10 -noyabr, seshanba // O'qituvchi: M. Bonisteel // Desc: Uy hayvonlaringizni belgilangan vaqtda boqing!

// Men foydalangan narsalar uchun kutubxonachilar #include #include #include "RTClib.h"

RTC_DS1307 rtc; // RTC nima ishlatishini aytadi

// Bu erda siz ovqatlanish vaqtini belgilaysiz

// Ish vaqti mornFeedTime = 12; int nightFeedTime = 7; // daqiqa m mornFeedTimeM = 29; int nightFeedTimeM = 00; // soniyalar int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7] [12] = {"Yakshanba", "Dushanba", "Seshanba", "Wedsneday", "Payshanba", "Juma", "Shanba"}; // Oddiy kunlarni haftaning kunlariga aylantiradi

const int feed = 200; // Bu sizning qadamlaringiz, shuning uchun siz uni necha marta aylantirishni xohlaysiz

StepStepper (yem, 8, 9, 10, 11); // Nema 17 va boshqa qadamlarning pinlari

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

while (! Seriyali); // Agar RTC ishlamayotgan bo'lsa, uni ketma -ket ekranda ko'rsatadi, agar (! Rtc.begin ()) {Serial.println ("RTC topilmadi"); vaqt (1); }

// Bu sizga Real vaqt soati ishlayaptimi yoki yo'qligini aytib beradi va agar u (! Rtc.isrunning ()) {Serial.println ("RTC ishlayapti!") Bo'lsa, uni ketma -ket ekranda ko'rsatadi;

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Bu sizning kompyuteringizga vaqt ajratadi va uni RTCda ishlatadi

// Agar siz kompyuter vaqtining o'rniga belgilangan vaqtga ega bo'lishni xohlasangiz, buni bu erda qilishingiz mumkin //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Yil/Oy/Kun/soat/daqiqa/soniya} myStepper.setSpeed (200); // Siz xohlagan tezlik}

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

// Bu o'zgarmaydiganni hozirgi vaqtda va hokazo qiladi int hr = now.hour (); int mi = hozir.minute (); int se = hozir.sekund ();

// Belgilangan vaqtda u ovqatni tarqatadi va 5 marta aylanadi, agar ertalabki ovqat uchun bo'lsa.

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Nonushta!"); myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

}

// Belgilangan vaqtda u ovqatni tarqatadi va 5 marta aylanadi, bu tunda ovqatlanish uchun.

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Kechki ovqat!"); myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700);

myStepper.step (-Feed); kechikish (700); }

// Bunda serialda YIL, OY, KUN, HOUR, MINUTE, SECOND ko'rsatiladi

Serial.print (hozir.yil (), DEC); Serial.print ('/'); Serial.print (hozir. Oy (), DEC); Serial.print ('/'); Serial.print (now.day (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [now.dayOfTheWeek ()])); Serial.print (")"); Serial.print (hozir.soat (), DEC); Serial.print (':'); Serial.print (now.minute (), DEC); Serial.print (':'); Serial.print (hozir.sekund (), DEC); Serial.println (); }

Men RTC uchun ishlatgan veb -sayt, agar RTC yoqilgan yoki o'chirilganligi haqidagi iboralardan boshqa ko'p narsalarni o'chirib tashladim. Men asosan ushbu veb -saytdan RTC dasturini o'rganish uchun foydalanardim

Men Stepper dvigateli uchun foydalangan veb -sayt, bu menga stepperni ishga tushirishni qanday dasturlashni tushunishga yordam berdi, lekin men undan hech narsa saqlamadim. Bu menga uni qanday kodlashni tushunishga yordam berdi

6 -qadam: Muammolar va ularni qanday hal qildim

Muammolar va ularni qanday hal qildim!
Muammolar va ularni qanday hal qildim!

Menda bir nechta muammolar bor edi

  • Menga 12V quvvat manbai kerak edi, menda faqat 9v batareya bor edi, men uni topdim va u tezda hal qilindi.
  • L298N ni NEMA 17 bilan ulashda men A va A- da simlar noto'g'ri edi, bu esa uni biroz chayqaltirdi. Men simlarni boshqa tomonga o'zgartirish orqali tuzatdim.
  • Kodni soddalashtirishga harakat qildim, chunki if ifodasida myStepper.step (-feed); qayta -qayta tartibsiz ko'rinardi. Shuning uchun men uni qaytadan o'zgartirishim kerak edi.
  • Rasmda ko'rinib turganidek, menda noto'g'ri o'lchamdagi taglik plitasi bor edi, shuning uchun men 3D -ni biroz bosib chiqarishga majbur bo'ldim va u juda mos edi!
  • Menda muammo bor - bu burgut kichik bo'lgani uchun tiqilib qoladi, shuning uchun uni tuzatishning oddiy usuli - burgutni ozgina kattalashtirish!

Tavsiya: