Inhaltsverzeichnis:

Automatischer Hundefutterautomat - Gunook
Automatischer Hundefutterautomat - Gunook

Video: Automatischer Hundefutterautomat - Gunook

Video: Automatischer Hundefutterautomat - Gunook
Video: Der TRIXIE Futterautomat TX8 Smart 2.0 - Füttere deinen Hund einfach per App 2024, Juli
Anonim
Automatischer Hundefutterautomat
Automatischer Hundefutterautomat

Dies ist mein Projekt eines Auto Pet Feeder. Mein Name ist Parker, ich bin in der 11. Klasse und habe dieses Projekt am 11. November 2020 als CCA (Course Culminating Activity) durchgeführt. Sie können eine Zeit auswählen, die Sie ändern können. Das Futter wird durch eine Schnecke ausgegeben und füttert Ihre Haustiere!

Lieferungen

Elektronik:

  • Arduino UNO
  • L298N - 10$ - Steuert die Nema 17
  • NEMA 17 - 10$ - Dreht die Schnecke, damit das Essen ausgegeben wird
  • RTC (DS1307) - 10$ - Gibt die Zeit an
  • 12V Netzteil - 5$ - Versorgt alles
  • Mini-Breadboard - Für zusätzlichen Platz für die Verkabelung
  • Überbrückungsdrähte - Verbindet alles
  • Kabel von Buchse zu Stecker - Verbindet alles

Hardware:

  • 3D-Druck-Filament - für 3D-Drucker
  • 2 M4-Schrauben - Halten Sie die Grundplatte fest
  • 4 Nema 17-Schrauben - Nema nach unten halten
  • PVC T 48mm Innenmaß 66mm Außenmaß - 3$

Werkzeuge:

  • 3D Drucker
  • Bohren
  • Lötpistole

Schritt 1: Überblick über das Design

Designübersicht
Designübersicht
Designübersicht
Designübersicht
Designübersicht
Designübersicht
Designübersicht
Designübersicht

Das Design des Futterautomaten ist sehr einfach. Ein Trichter kommt auf die Oberseite des PVC T. Dann kommt eine Abdeckung auf die Rückseite des PVC T (wie im Bild gezeigt) mit der daran befestigten Nema 17. Dann wird die Nema 17 in die oben zu sehende Rückseite der Schnecke geschoben und eine Schraube wird in die Seite eingeführt, um sie zu fixieren, damit sie das oben zu sehende Loch nicht verformt!

Dann schiebt die Schnecke das Futter einfach aus dem Rohr und in eine Schüssel!

Schritt 2: Übersicht über den Code

Übersicht über den Code
Übersicht über den Code
Übersicht über den Code
Übersicht über den Code
Übersicht über den Code
Übersicht über den Code

Der RTC und der Stepper haben eine Bibliothek namens RTClib.h und Stepper.h, die vereinfachten Code für den RTC und den Stepper hinzufügt. Die if-Anweisungen sind sehr einfach. Wenn die Stunde und die Minuten der genannten Zeit entsprechen, wird die Nema gedreht, die das Essen ausgibt. Der Rest des Codes ist auch für jemanden mit einem Tag Erfahrung sehr einfach zu verstehen.

Schritt 3: Anbringen von Nema 17 an Grundplatte und Schnecke

Anbringen von Nema 17 an Grundplatte und Schnecke
Anbringen von Nema 17 an Grundplatte und Schnecke
Anbringen von Nema 17 an Grundplatte und Schnecke
Anbringen von Nema 17 an Grundplatte und Schnecke
Anbringen von Nema 17 an Grundplatte und Schnecke
Anbringen von Nema 17 an Grundplatte und Schnecke

Zuerst möchten Sie Ihre Grundplatte nehmen und mit den vorgefertigten Löchern auf der Grundplatte an Ihrem Nema 17 befestigen. Sobald dies erledigt ist, möchten Sie die Schnecke mit dem hinteren Loch an der Nema befestigen. Verbinden Sie dann die Grundplatte mit der Schnecke und dem befestigten Nema und schrauben Sie die M2-Schrauben in jede Seite.

Schritt 4: Verdrahtung von L298N & RTC

Verkabelung L298N & RTC
Verkabelung L298N & RTC
Verkabelung L298N & RTC
Verkabelung L298N & RTC

In diesem Schritt erfahren Sie, wie Sie den L298N & RTC verkabeln

Wir beginnen mit den Pins 8, 9, 10, 11 bis zum L298N

  • Pin 8 (weiß) an IN1
  • Pin 9 (Lila) an IN2
  • Pin 10 (Rosa) an IN3
  • PIN 11 (Gelb) an IN4

Als nächstes werden wir den Nema 17 mit dem L298N verbinden

  • OUT1 zu 1 auf NEMA
  • OUT2 bis 2 auf NEMA
  • OUT3 bis 3 auf NEMA
  • OUT4 bis 4 auf NEMA

Anschließen von 12 V und Arduino an L298N (Konnte 12 V nicht finden, also stellen Sie sich eine 9-V-Batterie als Strom vor)

  • Volt bis 12V
  • Masse zu GND
  • 5V bis 5V auf Steckbrett

RTC mit Arduino verbinden

  • GND zu GND
  • 5V bis 5V auf Steckbrett
  • SDA auf A5
  • SCL auf A4

Stecknadeln

Alle Jumper-Pins sollen sich auf dem L298N befinden

Schritt 5: Codieren mit Kommentaren

Mit Kommentaren codieren
Mit Kommentaren codieren
Mit Kommentaren codieren
Mit Kommentaren codieren
Mit Kommentaren codieren
Mit Kommentaren codieren

Der Code klarer in den Bildern oben

// Name: Parker Frederick

// Projektname: Auto Pet Feeder // Datum: Dienstag, 10. November 2020 // Lehrer: M. Bonisteel // Beschreibung: Füttere deine Haustiere zu einer bestimmten Zeit!

// Bibliotheken für die Dinge, die ich verwendet habe #include #include #include "RTClib.h"

RTC_DS1307 rtc; // Sagt, was RTC ich verwende

// Hier stellen Sie die Zeit für das Essen ein

// Stunden int mornFeedTime = 12; int nightFeedTime = 7; //Minuten int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Sekunden int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7][12] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}; // Macht normale Tage zu Wochentagen

const int feed = 200; // Dies sind Ihre Schritte, also wie oft möchten Sie, dass es sich dreht?

Stepper myStepper(Feed, 8, 9, 10, 11); // Deine Pins für den Nema 17 und die meisten anderen Stepper

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

while (!Seriell); // Wenn die RTC nicht funktioniert, wird sie auf dem seriellen Bildschirm angezeigt if (! rtc.begin ()) { Serial.println (" RTC konnte nicht gefunden werden "); während (1); }

// Dies sagt Ihnen, ob die Echtzeituhr läuft oder nicht und zeigt sie auf dem seriellen Bildschirm an if (! rtc.isrunning ()) { Serial.println ("RTC läuft!");

rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Dies nimmt Ihrem Computer Zeit und verwendet ihn auf der RTC

// Wenn Sie anstelle der Computerzeit eine festgelegte Zeit haben möchten, können Sie dies hier tun //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Jahr/Monat/Tag/Stunde/Minute/Sekunde } myStepper.setSpeed(200); // Geschwindigkeit, mit der es sich drehen soll }

Void Schleife () { DateTime now = rtc.now ();

// Dies macht diese Variable zu der Stunde, die sie gerade ist etc int hr = now.hour(); int mi = now.minute(); int se = now.second();

// Codieren Sie so, dass zur eingestellten Zeit das Futter ausgegeben und 5 Mal geschleudert wird, dies für die Morgenfütterung

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Frühstück!"); myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

}

// Codieren Sie so, dass zur eingestellten Zeit das Futter ausgegeben und 5 Mal geschleudert wird, dies ist für die Nachtfütterung

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Abendessen!"); myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700);

myStepper.step(-feed); Verzögerung (700); }

// Dies zeigt das JAHR, MONAT, TAG, STUNDE, MINUTE, SEKUNDE in der Serie an

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(); }

Website, die ich für RTC verwendet habe Ich habe die meisten Dinge gelöscht, außer den if-Anweisungen, die sagen, ob die RTC ein- oder ausgeschaltet ist. Ich habe diese Website hauptsächlich verwendet, um zu lernen, wie man die RTC programmiert

Website, die ich für den Schrittmotor verwendet habe. Dies half mir zu verstehen, wie man den Schrittmotor so programmiert, dass er läuft. Ich habe nicht wirklich etwas davon behalten. Es hat mir nur geholfen zu verstehen, wie man es codiert

Schritt 6: Probleme und wie ich sie behoben habe

Probleme und wie ich sie behoben habe!
Probleme und wie ich sie behoben habe!

Ein paar Probleme hatte ich

  • Ich brauchte ein 12-V-Netzteil, ich hatte nur eine 9-V-Batterie, ich fand eine und es wurde schnell gelöst.
  • Beim Anschließen von L298N mit NEMA 17 hatte ich die Drähte an A und A falsch, wodurch es ein wenig zitterte. Ich habe es einfach behoben, indem ich die Drähte in die andere Richtung geändert habe.
  • Ich habe versucht, den Code einfacher zu machen, weil in der if-Anweisung myStepper.step(-feed); sah immer wieder unordentlich aus. Also musste ich es wieder ändern.
  • Ich hatte die Grundplatte in der falschen Größe, wie auf dem Bild zu sehen, also musste ich ein wenig eine neue in 3D drucken und sie passte perfekt!
  • Das Problem, das ich habe, ist, dass es klemmt, da die Schnecke zu klein ist, sodass sie sich auf einfache Weise klemmt, indem ich die Schnecke um ein kleines Stück vergrößere!

Empfohlen: