Mundarija:
- Ta'minotlar
- 1 -qadam: Dizaynga umumiy nuqtai
- 2 -qadam: Kodni ko'rib chiqish
- 3 -qadam: Nema 17 -ni asosiy plastinka va burg'iga ulash
- 4 -qadam: L298N va RTC simlarini ulash
- 5 -qadam: Sharhlar bilan kodlash
- 6 -qadam: Muammolar va ularni qanday hal qildim
Video: Itlarni avtomatik oziqlantirish: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
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
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
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
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
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
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
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:
Mushuklarni oziqlantirish uchun avtomatik dispenser: 7 qadam (rasmlar bilan)
Mushuklar uchun avtomatik oziqlantiruvchi dispenser: Agar siz mushuk iste'mol qiladigan ovqat miqdorini nazorat qilmasangiz, bu ortiqcha ovqatlanish va ortiqcha vazn bilan bog'liq muammolarga olib kelishi mumkin. Bu, ayniqsa, agar siz uydan uzoqda bo'lsangiz va mushukingiz o'z jadvaliga ko'ra qo'shimcha ovqat qoldirsa. Boshqa paytlarda siz
Mushuklarni avtomatik oziqlantirish: 4 qadam
Mushuklarni avtomatik oziqlantiruvchi: Hammaga salom, men bir necha kun uydan chiqsam, mushukni boqish har doim katta qiyinchilik tug'diradi. Men do'stlarim yoki qarindoshlarimdan mushukimga g'amxo'rlik qilishni so'rashim kerak. Men echimni Internetdan izladim va uy hayvonlari uchun juda ko'p oziq -ovqat mahsulotlarini topdim, lekin men
Eski raqamli soat yordamida uy hayvonlarini avtomatik oziqlantirish: 10 qadam (rasmlar bilan)
Eski raqamli soatdan foydalangan holda uy hayvonlarini avtomatik oziqlantiruvchi: Salom, men sizga ko'rsatma beraman, men eski raqamli soatdan foydalanib, uy hayvonlarini avtomatik oziqlantirishni qanday yaratganimni ko'rsataman. Men bu oziqlantirgichni qanday yasaganim haqidagi videoni ham joylashtirdim. Bu ko'rsatma PCB tanloviga kiritiladi va men buni iltimos qilaman
Itlarni avtomatik oziqlantirish: 5 qadam
Itlarni avtomatik oziqlantiruvchi: Bu Arduino yordamida itlarni avtomatik oziqlantirishni yaratish bo'yicha bosqichma -bosqich ko'rsatma. Agar siz kun bo'yi uydan tashqarida bo'lsangiz, bu juda mos keladi. Sizning itingiz kun bo'yi ovqatni kutib o'tirishi yoki uni boqish uchun uyingizga o'rgimchashning o'rniga, bu qurilma
Raspberry Pi itlarni avtomatik oziqlantirish va jonli video uzatuvchi: 3 qadam
Itlar uchun avtomatik oziqlantiruvchi va jonli video uzatuvchi Raspberry Pi: bu mening Raspberry PI bilan ishlaydigan itlarni avtomatik oziqlantiruvchi. Men ertalab soat 11 dan kechki 9gacha ishlaganman. Agar o'z vaqtida ovqatlantirmasam, itim aqldan ozadi. Avtomatik oziqlantiruvchilarni sotib olish uchun Google -ni to'kib tashlang, ular Hindistonda mavjud emas va import qilish qimmat