- Απαιτούμενο υλικό
- Διάγραμμα κυκλώματος
- Μοντέλο τροφοδοσίας κατοικίδιων ζώων με τρισδιάστατη εκτύπωση
- Ενότητα DS3231 RTC
- Κωδικός και επεξήγηση
- Εργασία του Αυτόματου Τροφοδότη κατοικίδιων ζώων
Σήμερα κατασκευάζουμε έναν αυτόματο τροφοδότη κατοικίδιων ζώων με βάση το Arduino, ο οποίος μπορεί να σερβίρει αυτόματα φαγητό στο κατοικίδιό σας εγκαίρως. Έχει μια μονάδα DS3231 RTC (Real Time Clock), η οποία χρησιμοποιείται για τον καθορισμό της ώρας και της ημερομηνίας κατά την οποία το κατοικίδιο ζώο σας θα πρέπει να λαμβάνει τροφή. Έτσι, ρυθμίζοντας την ώρα σύμφωνα με το πρόγραμμα διατροφής του κατοικίδιου ζώου σας, η συσκευή ρίχνει ή γεμίζει αυτόματα το μπολ φαγητού.
Σε αυτό το κύκλωμα, χρησιμοποιούμε μια οθόνη LCD 16 * 2 για την εμφάνιση του χρόνου χρησιμοποιώντας το DS3231 RTC Module με το Arduino UNO. Επίσης, ένας σερβοκινητήρας χρησιμοποιείται για την περιστροφή των δοχείων για την τροφοδοσία του φαγητού και το πληκτρολόγιο 4 * 4 για να ρυθμίσετε χειροκίνητα τον χρόνο τροφοδοσίας του κατοικίδιου ζώου. Μπορείτε να ορίσετε τη γωνία περιστροφής και τη διάρκεια ανοίγματος του δοχείου ανάλογα με την ποσότητα φαγητού που θέλετε να σερβίρετε στο κατοικίδιο ζώο σας. Η ποσότητα τροφής μπορεί επίσης να εξαρτάται από το κατοικίδιο ζώο σας, είτε πρόκειται για σκύλο, γάτα ή πουλί.
Απαιτούμενο υλικό
- Arduino UNO
- Πληκτρολόγιο 4 * 4 Matrix
- LCD 16 * 2
- Πλήκτρο
- Βοηθητικό μοτέρ
- Αντίσταση
- Σύνδεση καλωδίων
- Ψωμί
Διάγραμμα κυκλώματος
Σε αυτόν τον τροφοδότη γάτας με βάση το Arduino, για λήψη ώρας και ημερομηνίας, χρησιμοποιήσαμε την ενότητα RTC (Ρολόι πραγματικού χρόνου). Χρησιμοποιήσαμε το πληκτρολόγιο Matrix 4 * 4 για να ρυθμίσουμε το χρόνο φαγητού του Pet με τη βοήθεια LCD 16x2. Ο σερβοκινητήρας περιστρέφει το δοχείο και ρίχνει το φαγητό στον χρόνο που ορίζει ο χρήστης. Η οθόνη LCD χρησιμοποιείται για την εμφάνιση της ημερομηνίας και της ώρας. Πλήρης εργασία μπορείτε να βρείτε στο βίντεο που δίνεται στο τέλος.
Μοντέλο τροφοδοσίας κατοικίδιων ζώων με τρισδιάστατη εκτύπωση
Έχουμε σχεδιάσει αυτό το δοχείο Arduino Pet Feeder χρησιμοποιώντας τον εκτυπωτή 3D. Μπορείτε επίσης να εκτυπώσετε τον ίδιο σχεδιασμό κάνοντας λήψη των αρχείων από εδώ. Το υλικό που χρησιμοποιείται για την εκτύπωση αυτού του μοντέλου είναι το PLA. Έχει τέσσερα μέρη όπως φαίνεται στην παρακάτω εικόνα:
Συναρμολογήστε τα τέσσερα μέρη και συνδέστε το Servo Motor όπως φαίνεται στην παρακάτω εικόνα:
Αν είστε νέοι στην τρισδιάστατη εκτύπωση, εδώ είναι ο αρχικός οδηγός. Μπορείτε να κατεβάσετε τα αρχεία STL για αυτόν τον τροφοδότη κατοικίδιων εδώ.
Ενότητα DS3231 RTC
Το DS3231 είναι μια ενότητα RTC (Ρολόι πραγματικού χρόνου). Χρησιμοποιείται για τη διατήρηση της ημερομηνίας και της ώρας για τα περισσότερα από τα έργα Ηλεκτρονικής. Αυτή η μονάδα διαθέτει τη δική της τροφοδοσία κυψέλης νομισμάτων χρησιμοποιώντας την οποία διατηρεί την ημερομηνία και την ώρα ακόμα και όταν η κύρια τροφοδοσία αφαιρεθεί ή το MCU έχει περάσει από σκληρή επαναφορά. Έτσι, μόλις ορίσουμε την ημερομηνία και την ώρα σε αυτήν την ενότητα, θα την παρακολουθεί πάντα. Στο κύκλωμα μας, χρησιμοποιούμε το DS3231 για να ταΐσουμε το κατοικίδιο σύμφωνα με την ώρα, το οποίο έχει ρυθμιστεί από τον ιδιοκτήτη του κατοικίδιου, σαν συναγερμό. Καθώς το ρολόι φτάνει στον καθορισμένο χρόνο, λειτουργεί το σερβοκινητήρα για να ανοίξει την πύλη του δοχείου και το φαγητό πέφτει στο μπολ τροφών του Pet.
Σημείωση: Όταν χρησιμοποιείτε αυτήν την ενότητα για πρώτη φορά, πρέπει να ορίσετε την ημερομηνία και την ώρα. Μπορείτε επίσης να χρησιμοποιήσετε το RTC IC DS1307 για να διαβάσετε την ώρα με το Arduino.
Κωδικός και επεξήγηση
Στο τέλος δίνεται ο πλήρης κωδικός Arduino της Pet Feeder's Pet Feeder.
Το Arduino διαθέτει προεπιλεγμένες βιβλιοθήκες για τη χρήση του Servo motor και του LCD 16 * 2 μαζί του. Αλλά για τη χρήση DS3231 RTC Module και 4 * 4 Matrix Keypad με το Arduino, πρέπει να κατεβάσετε και να εγκαταστήσετε τις βιβλιοθήκες. Ο σύνδεσμος λήψης και για τις δύο βιβλιοθήκες δίνεται παρακάτω:
- Βιβλιοθήκη ενότητας DS3231 RTC (Ρολόι πραγματικού χρόνου)
- Βιβλιοθήκη πληκτρολογίων 4 * 4 Matrix
Στον παρακάτω κώδικα, ορίζουμε βιβλιοθήκες, "#include
#περιλαμβάνω
Στον παρακάτω κώδικα, ορίζουμε τον χάρτη-κλειδί για το πληκτρολόγιο 4 * 4 και αντιστοιχίζουμε τις καρφίτσες Arduino για τη σειρά και τις στήλες του πληκτρολογίου.
πλήκτρα char = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {2, 3, 4, 5}; byte colPins = {6, 7, 8, 9};
Εδώ, δημιουργούμε το πληκτρολόγιο χρησιμοποιώντας την παρακάτω εντολή στον κώδικα.
Πληκτρολόγιο kpd = Πληκτρολόγιο (makeKeymap (πλήκτρα), rowPins, colPins, ROWS, COLS);
Αντιστοίχιση ακροδεκτών A4 και A5 Arduino για σύνδεση με ακροδέκτες SCL και SDA DS3231. Επίσης, αντιστοίχιση καρφιτσών στην οθόνη LCD και προετοιμασία του κινητήρα Servo.
DS3231 rtc (A4, A5); Servo_test σερβο; // αρχικοποιήστε ένα servo αντικείμενο για το συνδεδεμένο servo LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Δημιουργεί ένα αντικείμενο LC. Παράμετροι: (rs, enabled, d4, d5, d6, d7)
Στον παρακάτω κώδικα, δηλώνουμε το t1 έως t6, το κλειδί και τον πίνακα r και τη ροή.
int t1, t2, t3, t4, t5, t6; boolean feed = true; κλειδί char; int r;
Στον παρακάτω κώδικα, ρυθμίζουμε όλα τα στοιχεία για την αρχή. Όπως σε αυτόν τον κωδικό "servo_test.attach (10);" Ο σερβο είναι προσαρτημένος στον 10 ο πείρο του Arduino. Ορισμός των Α0, Α1 και Α2 ως εξόδου εξόδου και αρχικοποίηση της μονάδας LCD και RTC.
άκυρη ρύθμιση () {servo_test.attach (10); // επισυνάψτε τον ακροδέκτη σήματος του σερβο στο pin9 του arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, OUTPUT); }
Τώρα, πώς λειτουργεί ο βρόχος είναι το σημαντικό μέρος που πρέπει να κατανοήσουμε. Όποτε η Pushbutton πιέζεται, πηγαίνει ψηλά μέσα 1, το οποίο μπορεί να διαβαστεί από «buttonPress = digitalRead (Α3)» . Τώρα μπαίνει μέσα στη δήλωση «if» και καλεί τη λειτουργία «setFeedingTime» . Στη συνέχεια, συγκρίνει τον πραγματικό χρόνο και τον χρόνο εισαγωγής από τον χρήστη. Εάν η συνθήκη είναι αληθής που σημαίνει ότι ο πραγματικός χρόνος και ο χρόνος εισαγωγής είναι ίδιος, τότε ο κινητήρας Servo περιστρέφεται και γωνία 100 μοιρών και μετά από 0,4 δευτερόλεπτα καθυστέρησης επανέρχεται στην αρχική του θέση.
void loop () {lcd.setCursor (0,0); int κουμπί Πατήστε; buttonPress = digitalRead (A3); if (buttonPress == 1) setFeedingTime (); lcd.print ("Ώρα:"); Συμβολοσειρά t = ""; t = rtc.getTimeStr (); t1 = t.charAt (0) -48; t2 = t.charAt (1) -48; t3 = t.charAt (3) -48; t4 = t.charAt (4) -48; t5 = t.charAt (6) -48; t6 = t.charAt (7) -48; lcd.print (rtc.getTimeStr ()); lcd.setCursor (0,1); lcd.print ("Ημερομηνία:"); lcd.print (rtc.getDateStr ()); εάν (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // εντολή για περιστροφή του σερβο στην καθορισμένη καθυστέρηση γωνίας (400). servo_test.write (55); feed = false; }}
Στον κωδικό λειτουργίας void setFeedingTime () , Αφού πατήσουμε το κουμπί, μπορούμε να εισαγάγουμε τον χρόνο σίτισης κατοικίδιων ζώων, τότε πρέπει να πατήσουμε 'D' για να εξοικονομήσουμε αυτόν τον χρόνο. Όταν ο αποθηκευμένος χρόνος ταιριάζει με τον πραγματικό χρόνο, τότε το σερβο αρχίζει να περιστρέφεται.
void setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Ορισμός χρόνου σίτισης"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); ενώ (1) {key = kpd.getKey (); char j; if (κλειδί! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (κλειδί); r = κλειδί-48; i ++; j ++; εάν (j == 2) {lcd.print (":"); j ++; } καθυστέρηση (500) } εάν (κλειδί == 'D') {κλειδί = 0; Διακοπή; }}}
Εργασία του Αυτόματου Τροφοδότη κατοικίδιων ζώων
Μετά τη μεταφόρτωση του κωδικού στο Arduino Uno, η ώρα και η ημερομηνία θα εμφανιστούν στην οθόνη LCD 16 * 2. Όταν πατήσετε το κουμπί, ζητά τον χρόνο σίτισης του Pet και πρέπει να εισαγάγετε τον χρόνο χρησιμοποιώντας το πληκτρολόγιο 4 * 4 matrix. Η οθόνη θα εμφανίσει τον εισαγόμενο χρόνο και καθώς πατάτε το 'D' εξοικονομείτε χρόνο. Όταν ο πραγματικός χρόνος και ο χρόνος εισαγωγής ταιριάζει, περιστρέφει τον σερβοκινητήρα από την αρχική του θέση 55⁰ σε 100⁰ και μετά από μια καθυστέρηση ξανά επιστρέψει στην αρχική του θέση. Επομένως, ο σερβοκινητήρας συνδέεται με την πύλη του Food Container, έτσι ώστε να κινείται, η πύλη θα ανοίξει και κάποια ποσότητα φαγητού πέφτει στο μπολ ή στο πιάτο. Μετά από καθυστέρηση 0,4 δευτερόλεπτα ο σερβοκινητήρας περιστρέφεται ξανά και κλείνει την πύλη. Η όλη διαδικασία ολοκληρώνεται μέσα σε λίγα δευτερόλεπτα. Αυτός είναι ο τρόπος με τον οποίο το κατοικίδιο ζώο σας παίρνει το φαγητό αυτόματα κατά την είσοδο.
Αλλάξτε χρόνο και βαθμό ανάλογα με το φαγητό