Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Επισκόπηση του Σχεδιασμού
- Βήμα 2: Επισκόπηση του κώδικα
- Βήμα 3: Προσάρτηση του Nema 17 στο Base Plate & Auger
- Βήμα 4: Καλωδίωση L298N & RTC
- Βήμα 5: Κωδικοποίηση με σχόλια
- Βήμα 6: Προβλήματα και πώς τα διόρθωσα
Βίντεο: Αυτόματος τροφοδότης σκύλων: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Αυτό είναι το έργο μου ενός αυτόματου τροφοδότη κατοικίδιων ζώων. Το όνομά μου είναι Parker είμαι στο βαθμό 11 και έκανα αυτό το έργο στις 11 Νοεμβρίου 2020 ως 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 εκτύπωσης - για τρισδιάστατο εκτυπωτή
- 2 μπουλόνια M4 - Κρατήστε τη βάση πλάκας στη θέση της
- 4 μπουλόνια Nema 17 - Κρατήστε πατημένο το nema
- PVC T 48mm εσωτερική διάσταση 66mm εξωτερική διάσταση - 3 $
Εργαλεία:
- Τρισδιάστατος εκτυπωτής
- Τρυπάνι
- Συγκολλητικό όπλο
Βήμα 1: Επισκόπηση του Σχεδιασμού
Ο σχεδιασμός του τροφοδότη κατοικίδιων ζώων είναι πολύ απλός. Μια χοάνη πηγαίνει στην κορυφή του PVC T. Στη συνέχεια, ένα κάλυμμα πηγαίνει στο πίσω μέρος του PVC T (όπως φαίνεται στην εικόνα) με το Nema 17 προσαρτημένο σε αυτό. Στη συνέχεια, το Nema 17 θα ωθηθεί στο πίσω μέρος του Auger που φαίνεται παραπάνω και ένα μπουλόνι θα μπει στο πλάι για να το κρατήσει στη θέση του, ώστε να μην παραμορφώσει την τρύπα που φαίνεται παραπάνω!
Στη συνέχεια, ο τρυπητής απλά θα σπρώξει το φαγητό έξω από το σωλήνα και σε ένα μπολ!
Βήμα 2: Επισκόπηση του κώδικα
Το RTC & The stepper έχουν ένα libary που ονομάζεται RTClib.h και Stepper.h το οποίο προσθέτει απλοποιημένο κώδικα για το RTC & Stepper. Οι δηλώσεις if είναι πολύ απλές, λέγοντας ότι η ώρα και τα λεπτά ισούται με τον εν λόγω χρόνο, θα περιστρέψει το nema που θα διανείμει το φαγητό. Ο υπόλοιπος κώδικας είναι πολύ εύκολο να κατανοηθεί ακόμη και για κάποιον με μια μέρα εμπειρίας.
Βήμα 3: Προσάρτηση του Nema 17 στο Base Plate & Auger
Πρώτα θέλετε να πάρετε την πλάκα βάσης σας και να την συνδέσετε με το Nema 17 σας χρησιμοποιώντας τις προκατασκευασμένες οπές στην πλάκα βάσης. Μόλις τελειώσετε, θέλετε να συνδέσετε το τρυπάνι στο Nema χρησιμοποιώντας την πίσω τρύπα σε αυτό. Στη συνέχεια, συνδέστε την πλάκα βάσης με το τρυπάνι και το Nema που είναι προσαρτημένο και στη συνέχεια βιδώστε τα μπουλόνια Μ2 σε κάθε πλευρά.
Βήμα 4: Καλωδίωση L298N & RTC
Αυτό το βήμα θα σας πει πώς να συνδέσετε το L298N & RTC
Θα ξεκινήσουμε με τις ακίδες 8, 9, 10, 11 στο L298N
- Καρφίτσα 8 (Λευκό) στο IN1
- Καρφίτσα 9 (Μωβ) σε IN2
- Καρφίτσα 10 (Ροζ) στο IN3
- PIN 11 (Κίτρινο) έως IN4
Στη συνέχεια θα συνδέσουμε το Nema 17 με το L298N
- OUT1 έως 1 στο NEMA
- OUT2 έως 2 στο NEMA
- OUT3 έως 3 στο NEMA
- OUT4 έως 4 στο NEMA
Σύνδεση 12v και Arduino στο L298N (Δεν βρέθηκε 12V, οπότε φανταστείτε μπαταρία 9V ως τροφοδοσία)
- Τάση έως 12V
- Γείωση σε GND
- 5V έως 5V στο Breadboard
Σύνδεση RTC με Arduino
- GND σε GND
- 5V έως 5V στο Breadboard
- SDA έως A5
- SCL έως Α4
Jumper Pins
Όλοι οι πείροι του βραχυκυκλωτήρα υποτίθεται ότι βρίσκονται στο L298N
Βήμα 5: Κωδικοποίηση με σχόλια
Ο κωδικός είναι σαφέστερος στις παραπάνω εικόνες
// Όνομα: Parker Frederick
// Όνομα έργου: Auto Pet Feeder // Ημερομηνία: Τρίτη, 10 Νοεμβρίου 2020 // Δάσκαλος: M. Bonisteel // Desc: Ταΐστε τα κατοικίδια ζώα σας σε μια συγκεκριμένη ώρα!
// Libaries για τα πράγματα που χρησιμοποίησα #include #include #include "RTClib.h"
RTC_DS1307 rtc; // Λέει τι χρησιμοποιώ το RTC
// Εδώ καθορίζετε την ώρα για το φαγητό
// oursρες int mornFeedTime = 12; int nightFeedTime = 7; // Minutes int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Seconds int mornFeedTimeS = 20; int nightFeedTimeS = 00;
char daysOfTheWeek [7] [12] = {"Κυριακή", "Δευτέρα", "Τρίτη", "Wedsneday", "Πέμπτη", "Παρασκευή", "Σάββατο"}; // Κάνει τις κανονικές ημέρες να μετατρέπονται σε ημέρες της εβδομάδας
const int feed = 200; // Αυτά είναι τα βήματά σας πόσες φορές θέλετε να γυρίσει
Stepper myStepper (ροή, 8, 9, 10, 11); // Οι καρφίτσες σας για το Nema 17 και τα περισσότερα άλλα steppers
void setup () {Serial.begin (9600);
ενώ (! Σειριακό)? // Εάν το RTC δεν λειτουργεί θα το εμφανίσει στη σειριακή οθόνη εάν (! Rtc.begin ()) {Serial.println ("Δεν ήταν δυνατή η εύρεση του RTC"); ενώ (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 int hr = now.hour (); int mi = now.minute (); int se = now.second ();
// Κωδικοποιήστε έτσι την καθορισμένη ώρα θα διανείμει το φαγητό και θα περιστρέφεται 5 φορές, αυτό για την πρωινή τροφή
if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Πρωινό!"); myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
}
// Κωδικοποιήστε έτσι την καθορισμένη ώρα θα διανέμει το φαγητό και θα περιστρέφεται 5 φορές, αυτό είναι για νυχτερινή τροφοδοσία
εάν (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("δείπνο!"); myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (700)?
myStepper.step (-τροφή); καθυστέρηση (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 διέγραψα τα περισσότερα πράγματα εκτός από τις δηλώσεις if που λένε εάν το RTC είναι ενεργοποιημένο ή όχι. Χρησιμοποίησα κυρίως αυτόν τον ιστότοπο για να μάθω πώς να προγραμματίζω το RTC
Ιστοσελίδα που χρησιμοποίησα για το Stepper motor αυτό με βοήθησε να καταλάβω πώς να προγραμματίσω το stepper να τρέξει δεν κράτησα πραγματικά τίποτα από αυτό. Με βοήθησε να καταλάβω πώς να το κωδικοποιήσω
Βήμα 6: Προβλήματα και πώς τα διόρθωσα
Μερικά προβλήματα που είχα
- Χρειαζόμουν τροφοδοτικό 12v, είχα μόνο μπαταρία 9v βρήκα μία και λύθηκε γρήγορα.
- Κατά τη σύνδεση του L298N με το NEMA 17 είχα τα καλώδια λανθασμένα στα A και A- κάτι που το έκανε να τρεμοπαίζει λίγο. Απλώς το διόρθωσα αλλάζοντας τα καλώδια με τον άλλο τρόπο.
- Προσπάθησε να κάνει τον κώδικα πιο απλό γιατί στη δήλωση if myStepper.step (-feed)? ξανά και ξανά φαινόταν ακατάστατο. Έτσι έπρεπε να το αλλάξω πίσω.
- Είχα λάθος πλάκα βάσης μεγέθους όπως φαίνεται στην εικόνα, οπότε έπρεπε να εκτυπώσω λίγο μια νέα 3D και ταιριάζει τέλεια!
- Το πρόβλημα που έχω είναι ότι είναι μαρμελάδες αφού το τρυπάνι είναι πολύ μικρό, οπότε μπλοκάρει Ο απλός τρόπος που μπορώ να διορθώσω είναι μεγαλώνοντας το τρυπάνι σε μικρή ποσότητα!
Συνιστάται:
Αυτόματος τροφοδότης: 3 βήματα
Αυτόματος τροφοδότης: Τι σημαίνει το έργο μας; Το έργο μας είναι ένας αυτόματος τροφοδότης για σκύλους. Είναι ένας απλός τρόπος σίτισης του σκύλου σας. Για παράδειγμα, όταν πρόκειται να ταξιδέψετε και δεν γνωρίζετε κανέναν που να μπορεί να ταΐσει τον σκύλο σας για εσάς. Ο αυτόματος τροφοδότης θα είναι υπεύθυνος
Αυτόματος τροφοδότης κατοικίδιων με χρήση AtTiny85: 6 βήματα
Αυτόματος τροφοδότης κατοικίδιων χρησιμοποιώντας AtTiny85: O trabalho Αυτόματος τροφοδότης κατοικίδιων ζώων χρησιμοποιώντας AtTiny85 de PET Engenharia de Computação está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional
Εκπαιδευτής σκύλων σκύλων: 5 βήματα
Dog Dog Trainer: Σύμφωνα με την AKC, (https://www.akc.org/expert-advice/nutrition/how-many-times-a-day-should-a-dog-eat/) το μέγεθος της μερίδας γεύματος για Οι ζωοτροφές είναι απαραίτητες για τα σκυλιά και το μέγεθος του κουτιού περιόρισε επίσης τον αριθμό των ζωοτροφών που θα μπορούσε να φάει ο σκύλος την ημέρα, «Κτηνίατρος
Αυτόματος διανομέας σκύλων: 10 βήματα
Αυτόματος διανομέας σκύλων: Με το έργο μου βεβαιώνω ότι όταν αφήνετε τον σκύλο σας μόνο του στο σπίτι, δεν θα μείνει ποτέ χωρίς φαγητό. Ο αυτόματος τροφοδότης θα " χακαριστεί " από έναν διανομέα κορνφλέικς. Ο διανομέας είναι η δεξαμενή για τροφή για σκύλους, ο τροχός στο κάτω μέρος
Αυτόματος τροφοδότης σκύλων: 5 βήματα
Αυτόματος τροφοδότης σκύλων: Αυτό είναι ένα βήμα προς βήμα σεμινάριο για το πώς να φτιάξετε έναν αυτόματο τροφοδότη σκύλων χρησιμοποιώντας το Arduino. Αυτό είναι τέλειο αν είστε έξω από το σπίτι για μεγάλο μέρος της ημέρας. Αντί να χρειάζεται το σκυλί σας να περιμένει όλη μέρα για φαγητό ή να πάτε στο σπίτι για να το ταΐσετε, αυτή η συσκευή