Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Überblick über das Design
- Schritt 2: Übersicht über den Code
- Schritt 3: Anbringen von Nema 17 an Grundplatte und Schnecke
- Schritt 4: Verdrahtung von L298N & RTC
- Schritt 5: Codieren mit Kommentaren
- Schritt 6: Probleme und wie ich sie behoben habe
Video: Automatischer Hundefutterautomat - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
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
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
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
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
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
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
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:
Automatischer Anrufbeantworter V1.0: 17 Schritte (mit Bildern)
Automated Answering System V1.0: Manchmal habe ich einfach keine Lust, ans Telefon zu gehen. Okay, okay… die meiste Zeit ist es mir wirklich egal, ans Telefon zu gehen. Was soll ich sagen, ich bin ein beschäftigter Mann. Ich habe mir schon lange ein System gewünscht, das dem ähnlich ist, das die Telefongesellschaft für die
Automatischer Sucher: 4 Schritte
Auto-Searcher: Also las ich eines Tages Fanfiction in meinem Bett, um meinen Stress abzubauen. Aber ich hatte das Gefühl, dass es ein bisschen mühsam war, die Seite weiter zu scrollen, um weiterzulesen. Ich muss auch klicken, um das nächste Kapitel zu sehen und das Ganze vorher suchen
Automatischer Gartenbewässerer - 3D gedruckt - Arduino: 10 Schritte (mit Bildern)
Automatischer Gartenbewässerer | 3D gedruckt | Arduino: Ich bin ein begeisterter Gärtner, aber Ihre Pflanzen während Trockenperioden von Hand zu gießen, dauert einige Zeit. Dieses Projekt befreit mich vom Gießen, damit ich an meinen anderen Projekten arbeiten kann. Es ist auch großartig, sich um den Garten zu kümmern, während Sie nicht zu Hause sind, und die Pflanze