Spisu treści:

Automatyczny podajnik psa: 6 kroków
Automatyczny podajnik psa: 6 kroków

Wideo: Automatyczny podajnik psa: 6 kroków

Wideo: Automatyczny podajnik psa: 6 kroków
Wideo: Aqara Smart Pet Feeder - czyli automatyczny podajnik karmy dla psów i kotów. #aqarasmartpetfeederc1 2024, Listopad
Anonim
Automatyczny karmnik dla psów
Automatyczny karmnik dla psów

To jest mój projekt automatycznego karmnika dla zwierząt. Nazywam się Parker, jestem w klasie 11 i wykonałem ten projekt 11 listopada 2020 r. Jako CCA (Course Culminating Activity) w tym projekcie pokażę ci, jak zrobić automatyczny karmnik dla zwierząt z Arduino UNO. Możesz wybrać czas, który możesz zmienić. Pokarm będzie dozowany przez ślimak i nakarmi twoje zwierzęta!

Kieszonkowe dzieci

Elektronika:

  • Arduino UNO
  • L298N - 10$ - Steruje Nema 17
  • NEMA 17 - 10$ - Obraca ślimakiem, dzięki czemu jedzenie jest dozowane
  • RTC (DS1307) - 10$ - Daje czas
  • Zasilacz 12V - 5$ - Zasila wszystko
  • Mini tablica do krojenia chleba - dodatkowa przestrzeń na okablowanie
  • Przewody połączeniowe - Łączą wszystko
  • Przewody żeńskie-męskie - Łączy wszystko

Sprzęt komputerowy:

  • Filament do druku 3D - do drukarki 3d
  • 2 śruby M4 - przytrzymuj płytę podstawy na miejscu
  • 4 śruby Nema 17 - Przytrzymaj Nema w dół
  • PVC T 48mm wymiar wewnętrzny 66mm wymiar zewnętrzny - 3$

Narzędzia:

  • drukarka 3d
  • Wiertarka
  • Pistolet lutowniczy

Krok 1: Przegląd projektu

Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu
Przegląd projektu

Konstrukcja karmnika dla zwierząt jest bardzo prosta. Lej trafia na górę PVC T. Następnie pokrywa z tyłu PVC T (jak pokazano na rysunku) z przymocowanym do niej Nema 17. Następnie Nema 17 zostanie wepchnięta z tyłu świdra, który widać powyżej, a śruba wejdzie w bok, aby utrzymać go na miejscu, aby nie deformował otworu, który widać powyżej!

Wtedy świder po prostu wypchnie jedzenie z rury do miski!

Krok 2: Przegląd kodu

Przegląd kodu
Przegląd kodu
Przegląd kodu
Przegląd kodu
Przegląd kodu
Przegląd kodu

RTC i Stepper mają bibliotekę o nazwie RTClib.hi Stepper.h, która dodaje uproszczony kod dla RTC i Steppera. Stwierdzenia if są bardzo proste, ich powiedzenie, jeśli godzina i minuty są równe podanemu czasowi, spowoduje obrót nemy, która będzie dozować jedzenie. Reszta kodu jest bardzo łatwa do zrozumienia nawet dla kogoś, kto ma dzień doświadczenia.

Krok 3: Mocowanie Nema 17 do podstawy i świdra

Mocowanie Nema 17 do podstawy i ślimaka
Mocowanie Nema 17 do podstawy i ślimaka
Mocowanie Nema 17 do podstawy i ślimaka
Mocowanie Nema 17 do podstawy i ślimaka
Mocowanie Nema 17 do podstawy i ślimaka
Mocowanie Nema 17 do podstawy i ślimaka

Najpierw weź swoją płytę podstawową i przymocuj ją do Nemy 17, korzystając z gotowych otworów w płycie podstawy. Gdy to zrobisz, chcesz przymocować świder do Nemy za pomocą tylnego otworu na nim. Następnie połącz płytę podstawy ze ślimakiem i dołączoną Nema, a następnie wkręć śruby M2 z każdej strony.

Krok 4: Okablowanie L298N i RTC

Okablowanie L298N i RTC
Okablowanie L298N i RTC
Okablowanie L298N i RTC
Okablowanie L298N i RTC

W tym kroku dowiesz się, jak podłączyć L298N i RTC

Zaczniemy od pinów 8, 9, 10, 11 do L298N

  • Pin 8 (biały) do IN1
  • Pin 9 (fioletowy) do IN2
  • Pin 10 (różowy) do IN3
  • PIN 11 (żółty) do IN4

Następnie podłączymy Nema 17 do L298N

  • OUT1 do 1 na NEMA
  • OUT2 do 2 na NEMA
  • OUT3 do 3 na NEMA
  • OUT4 do 4 na NEMA

Podłączanie 12V i Arduino do L298N (Nie można znaleźć 12V, więc wyobraź sobie baterię 9V jako zasilanie)

  • V do 12V
  • Uziemienie do GND
  • 5V do 5V na płytce do krojenia chleba

Podłączanie RTC do Arduino

  • GND do GND
  • 5V do 5V na płytce do krojenia chleba
  • SDA do A5
  • SCL do A4

Kołki do zworek

Wszystkie piny zworek powinny być na L298N

Krok 5: Kodowanie z komentarzami

Kodowanie z komentarzami
Kodowanie z komentarzami
Kodowanie z komentarzami
Kodowanie z komentarzami
Kodowanie z komentarzami
Kodowanie z komentarzami

Kod wyraźniejszy na zdjęciach powyżej

// Imię i nazwisko: Parker Frederick

// Nazwa projektu: Auto Pet Feeder // Data: wtorek, 10 listopada 2020 // Nauczyciel: M. Bonisteel // Opis: Nakarm swoje zwierzaki o określonej godzinie!

// Biblioteki dla rzeczy, których użyłem #include #include #include "RTClib.h"

RTC_DS1307 RTC; // Mówi, jakiego RTC używam

// Tutaj ustawiasz czas na jedzenie

// Godziny int mornFeedTime = 12; int nightFeedTime = 7; //Minuty int mornFeedTimeM = 29; int nightFeedTimeM = 00; //Sekundy int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7][12] = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"}; // Sprawia, że zwykłe dni zamieniają się w dni tygodnia

const int posuw = 200; // To są twoje kroki, więc ile razy chcesz się kręcić

Stepper myStepper(pasza, 8, 9, 10, 11); // Twoje szpilki do Nema 17 i większości innych stepperów

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

podczas (!Serial); // Jeśli zegar czasu rzeczywistego nie działa, wyświetli go na ekranie szeregowym if (! rtc.begin()) { Serial.println("Nie można znaleźć zegara czasu rzeczywistego"); natomiast (1); }

// To powie ci, czy zegar czasu rzeczywistego jest uruchomiony i wyświetli go na ekranie szeregowym if (! rtc.isrunning()) { Serial.println("RTC jest uruchomiony!");

rtc.adjust(DataCzas(F(_DATA_), F(_CZAS_))); // Zajmie to czas komputera i użyje go w RTC

// Jeśli chcesz mieć ustawiony czas zamiast czasu komputera, możesz to zrobić tutaj //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Rok/Miesiąc/Dzień/Godzina/Minuta/Sekunda } myStepper.setSpeed(200); // Prędkość, z jaką chcesz skręcić }

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

// To sprawi, że zmienna będzie tą godziną, która jest w tej chwili etc int hr = now.hour(); int mi = teraz.minuta(); int se = teraz.druga();

// Zakoduj tak, aby o ustawionej godzinie wydało jedzenie i obróciło się 5 razy, to jeśli na poranne karmienie

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) { Serial.println("Śniadanie!"); mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

}

// Zakoduj, aby o ustawionej godzinie wydało jedzenie i obróciło się 5 razy, to jest do karmienia na noc

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) { Serial.println("Obiad!"); mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700);

mójStepper.step(-feed); opóźnienie(700); }

// Spowoduje to wyświetlenie ROK, MIESIĄC, DZIEŃ, GODZINA, MINUTA, SEKUNDA w serialu

Serial.print(teraz.rok(), DEC); Serial.print('/'); Serial.print(teraz.miesiąc(), DEC); Serial.print('/'); Serial.print(teraz.day(), DEC); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print() "); Serial.print(teraz.godzina(), DEC); Serial.print(':'); Serial.print(teraz.minuta(), DEC); Serial.print(':'); Serial.print(teraz.second(), DEC); Serial.println(); }

Strona internetowa, której używałem dla RTC Usunąłem większość rzeczy innych niż stwierdzenia if, które mówią, czy RTC jest włączony, czy wyłączony. Używałem tej strony głównie do nauki programowania RTC

Strona internetowa, której użyłem do silnika krokowego, pomogła mi zrozumieć, jak zaprogramować silnik krokowy, aby działał, tak naprawdę niczego z niego nie zachowałem. To po prostu pomogło mi zrozumieć, jak to zakodować

Krok 6: Problemy i jak je naprawiłem

Problemy i jak je naprawiłem!
Problemy i jak je naprawiłem!

Kilka problemów, które miałem

  • Potrzebowałem zasilacza 12 V, miałem tylko baterię 9 V, znalazłem jeden i został szybko rozwiązany.
  • Podłączając L298N do NEMA 17 miałem złe przewody na A i A- co powodowało lekkie drgania. Po prostu naprawiłem to, zmieniając przewody w drugą stronę.
  • Próbowałem uprościć kod, ponieważ w instrukcji if myStepper.step(-feed); w kółko wyglądał na niechlujny. Więc musiałem to zmienić z powrotem.
  • Miałem niewłaściwy rozmiar płyty bazowej, jak widać na zdjęciu, więc musiałem wydrukować trochę nową w 3D i pasowała idealnie!
  • Mam problem z tym, że się zacina, ponieważ świder jest za mały, więc zacina się prostym sposobem, aby to naprawić, powiększając świder o niewielką ilość!

Zalecana: