Мазмуну:

Auto Dog Feeder: 6 кадам
Auto Dog Feeder: 6 кадам

Video: Auto Dog Feeder: 6 кадам

Video: Auto Dog Feeder: 6 кадам
Video: Six-year-old girl is a skateboarding prodigy 2024, Ноябрь
Anonim
Авто ит багуучу
Авто ит багуучу

Бул менин Auto Pet Feeder долбоорум. Менин атым Паркер, мен 11 -класста окуйм жана бул долбоорду 2020 -жылдын 11 -ноябрында CCA (Course Culminating Activity) катары түздүм, бул долбоордо мен сизге Arduino UNO менен үй жаныбарларын автоматтык түрдө кантип азыктандырууну көрсөтөм. Сиз өзгөртө турган убакытты тандай аласыз. Тамак шнек аркылуу берилип, үй жаныбарларыңызды азыктандырат!

Жабдуулар

Электроника:

  • Arduino UNO
  • L298N - 10 $ - Nema 17ди башкарат
  • NEMA 17 - 10 $ - Шнек бурулат, ошондо тамак -аш тарайт
  • RTC (DS1307) - 10 $ - Убакыт берет
  • 12V Электр энергиясы менен камсыздоо - 5 $ - Баарын кубаттайт
  • Mini Breadboard - кошумча зымдар үчүн
  • Jumper Wires - Баарын бириктирет
  • Аялдан Эркекке зым - Баарын туташтырат

Аппараттык:

  • 3D принтер жип - 3d принтер үчүн
  • 2 M4 болт - Негизги плитаны кармаңыз
  • 4 Nema 17 болт - Неманы кармап туруңуз
  • ПВХ Т 48мм ички өлчөм 66мм сырткы өлчөм - 3 $

Куралдар:

  • 3D принтер
  • Бургулоо
  • Пистолет

1 -кадам: Дизайнды карап чыгуу

Дизайнды карап чыгуу
Дизайнды карап чыгуу
Дизайнды карап чыгуу
Дизайнды карап чыгуу
Дизайнды карап чыгуу
Дизайнды карап чыгуу
Дизайнды карап чыгуу
Дизайнды карап чыгуу

Үй жаныбарларын багуунун дизайны абдан жөнөкөй. Поливинилхлорид Т -нын үстүнө бункер барат. Андан кийин ПВХ Тнын арт жагында (сүрөттө көрсөтүлгөндөй) Nema 17 тиркелет. Андан кийин Nema 17 жогоруда көрүнүшү мүмкүн болгон бургучтун арткы жагына түртүлөт жана болт капталга кирип кетет, ошондуктан ал тешикти бузбайт!

Ошондо шнек тамакты түтүктөн чыгарып, идишке салып коёт!

2 -кадам: Кодду карап чыгуу

Кодду карап чыгуу
Кодду карап чыгуу
Кодду карап чыгуу
Кодду карап чыгуу
Кодду карап чыгуу
Кодду карап чыгуу

RTC & Stepperде RTClib.h жана Stepper.h деп аталган китепкана бар, ал RTC & Stepper үчүн жөнөкөйлөтүлгөн кодду кошот. If билдирүүлөрү өтө жөнөкөй, эгерде саат жана мүнөт айтылган убакытка барабар болсо, анда ал тамакты таратуучу неманы айлантат. Коддун калганын бир күндүк тажрыйбасы бар адам үчүн да түшүнүү абдан оңой.

3 -кадам: Nema 17'ди Base Plate & Augerге тиркөө

Nema 17'ди Base Plate & Augerге тиркөө
Nema 17'ди Base Plate & Augerге тиркөө
Nema 17'ди Base Plate & Augerге тиркөө
Nema 17'ди Base Plate & Augerге тиркөө
Nema 17'ди Base Plate & Augerге тиркөө
Nema 17'ди Base Plate & Augerге тиркөө

Биринчиден, сиз өзүңүздүн базалык табакчаңызды алып, Nema 17ге базалык плитанын алдын ала даярдалган тешиктерин колдонуп бекиңиз. Муну жасагандан кийин, шнекти арткы тешикти колдонуп, Немага бекиткиңиз келет. Андан кийин базалык плитаны шнек менен туташтырыңыз жана Нема тиркелди, андан кийин M2 болтторун ар бир тарапка бурап коюңуз.

4 -кадам: W2 L298N & RTC

L298N & RTC зымдары
L298N & RTC зымдары
L298N & RTC зымдары
L298N & RTC зымдары

Бул кадам L298N & RTCге кантип зым салуу керектигин айтып берет

Биз L298Nге 8, 9, 10, 11 төөнөгүчтөрдөн баштайбыз

  • PIN 8 (Ак) IN1ге
  • Pin 2 (Purple) IN2ге
  • PIN 10 (кызгылт) IN3кө
  • PIN 11 (Сары) IN4ке

Андан кийин биз Nema 17ди L298N менен туташтырабыз

  • NEMAда OUT1ден 1ге чейин
  • NEMAда OUT2ден 2ге чейин
  • NEMAда OUT3төн 3кө чейин
  • NEMAда OUT4төн 4кө чейин

12v менен Arduino'ду L298N менен туташтыруу (12В табылган жок, андыктан 9В батареяны кубат катары элестетип көрүңүз)

  • Вольт 12 В чейин
  • GND үчүн негиз
  • Нан тактасында 5Втан 5Вга чейин

RTC Arduino менен туташууда

  • GNDден GNDге
  • Нан тактасында 5Втан 5Вга чейин
  • SDAдан A5ке чейин
  • SCLден A4кө чейин

Jumper Pins

Бардык секирүүчү казыктар L298Nде болушу керек

5 -кадам: Комментарийлер менен коддоо

Комментарийлер менен коддоо
Комментарийлер менен коддоо
Комментарийлер менен коддоо
Комментарийлер менен коддоо
Комментарийлер менен коддоо
Комментарийлер менен коддоо

Жогорудагы сүрөттөрдөгү код ачык

// Аты -жөнү: Паркер Фредерик

// Долбоордун аталышы: Үй жаныбарларын багуучу // Дата: Шейшемби, 10 -ноябрь, 2020 -жыл // Мугалим: M. Bonisteel // Desc: Үй жаныбарларыңызды белгиленген убакта азыктандырыңыз!

// Мен колдонгон нерселер үчүн китепканачылар #include #include #include "RTClib.h"

RTC_DS1307 rtc; // RTC эмнени колдонуп жатканын айтат

// Бул жерде тамак үчүн убакытты белгилейсиз

// Сааттар int mornFeedTime = 12; int nightFeedTime = 7; // мүнөттөр mornFeedTimeM = 29; int nightFeedTimeM = 00; // mornFeedTimeS = 20 секунд; int nightFeedTimeS = 00;

char daysOfTheWeek [7] [12] = {"Жекшемби", "Дүйшөмбү", "Шейшемби", "Шаршемби", "Бейшемби", "Жума", "Ишемби"}; // Кадимки күндөрдү жуманын күндөрүнө айландырат

const int feed = 200; // Бул сиздин кадамыңыз, ошондуктан аны канча жолу айландыргыңыз келет

StepStepper (тоют, 8, 9, 10, 11); // Сиздин Nema 17 үчүн казыктарыңыз жана башка көптөгөн кадамдар

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

while (! Сериялык); // Эгерде RTC иштебесе, ал аны сериялык экранда көрсөтөт, эгерде (! Rtc.begin ()) {Serial.println ("RTC табылган жок"); while (1); }

// Бул реалдуу убакыт сааты иштеп жатабы же жокпу, айтып берет жана аны сериялык экранда көрсөтөт, эгерде (! Rtc.isrunning ()) {Serial.println ("RTC иштеп жатат!");

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Бул сиздин компьютериңиздин убактысын алат жана аны RTCде колдонот

// Эгерде сиз компьютер убактысынын ордуна белгиленген убакытка ээ болгуңуз келсе, анда бул жерде кыла аласыз //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Жыл/Ай/Күн/Саат/Мүнөт/Секунд} myStepper.setSpeed (200); // Каалаган ылдамдык}

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

// Бул өзгөрмөлөрдү учурда турган убакка айландырат ж.б. int hr = now.hour (); int mi = now.minute (); int se = now.second ();

// Ошентип кодду белгиленген убакта ал тамак -ашты таратат жана ал 5 жолу айланат, эгер бул эртең мененки тамак үчүн болсо

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Breakfast!"); myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

}

// Кодду белгиленген убакта ал тамакты таратат жана 5 жолу айланат, бул түнкү тамак үчүн

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Кечки тамак!"); myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700);

myStepper.step (-feed); кечигүү (700); }

// Бул серияда ЖЫЛ, АЙ, КҮН, СААТ, МИНУТ, ЭКИНЧИНИ көрсөтөт

Serial.print (now.year (), DEC); Serial.print ('/'); Serial.print (now.month (), DEC); Serial.print ('/'); Serial.print (now.day (), DEC); Serial.print ("("); Serial.print (daysOfTheWeek [now.dayOfTheWeek ()])); Serial.print (")"); Serial.print (now.hour (), DEC); Serial.print (':'); Serial.print (now.minute (), DEC); Serial.print (':'); Serial.print (now.second (), DEC); Serial.println (); }

Мен РТК үчүн колдонгон веб -сайт, эгерде РТКнын күйүк же өчүк экенин билдирүүчү билдирүүлөрдөн башка нерселердин көбүн өчүрдүм. Мен негизинен бул веб -сайтты RTC программасын үйрөнүү үчүн колдондум

Мен Stepper мотору үчүн колдонгон веб -сайт бул кадамды кантип иштетүүнү түшүнүүгө жардам берди, мен андан эч нерсе кармаган жокмун. Бул жөн эле мага аны кантип коддоо керектигин түшүнүүгө жардам берди

6 -кадам: Көйгөйлөр жана аларды кантип чечтим

Көйгөйлөр жана аларды кантип чечтим!
Көйгөйлөр жана аларды кантип чечтим!

Менде болгон бир нече көйгөйлөр

  • Мага 12в электр энергиясы керек болчу, менде 9в батарейка бар болчу, мен аны таптым жана ал тез чечилди.
  • L298Nди NEMA 17 менен туташтырууда менде зымдар А жана Ада туура эмес болчу, бул аны бир аз чайпалткан. Мен жөн эле зымдарды башка жакка алмаштырып оңдоп койдум.
  • Кодду жөнөкөй кылууга аракет кылдым, анткени if операторунда myStepper.step (-feed); кайра -кайра башаламан көрүндү. Ошентип, мен аны кайра өзгөртүүгө туура келди.
  • Менде сүрөттө көрүнгөндөй туура эмес өлчөмдөгү базалык табак бар болчу, андыктан жаңысын бир аз 3D басып чыгарууга туура келди жана ал эң сонун дал келди!
  • Мендеги көйгөй - бул бургу кичинекей болгондуктан, тыгылып калат, ошондуктан аны оңдоонун жөнөкөй жолу - бургу кичинекей өлчөмдө чоңойтуу!

Сунушталууда: