Πίνακας περιεχομένων:

Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot: 4 βήματα (με εικόνες)
Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot: 4 βήματα (με εικόνες)

Βίντεο: Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot: 4 βήματα (με εικόνες)

Βίντεο: Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot: 4 βήματα (με εικόνες)
Βίντεο: Ημιαυτόματη μηχανή κλεισίματος κονσερβών PET, χειροκίνητη πλαστική μηχανή ραφής για ποτό 2024, Ιούλιος
Anonim
Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot
Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot
Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot
Μηχανή τροφοδότη κατοικίδιων ζώων με RasPi και Telegram Bot

Πρώτα απ 'όλα πρέπει να διευκρινίσω ότι αυτό δεν είναι ένα πρωτότυπο Idea Mine, απλώς ενημερώστε και προσαρμόστε τα σενάρια προγραμματισμού για να δουλέψετε με το τηλεγράφημα, το βρήκα σε προηγούμενο Instructable, ώστε οι πιστώσεις να είναι πραγματικά ο συγγραφέας του.

Θα μπορούσατε να δείτε την ισπανική έκδοση αυτού στο προσωπικό μου ιστολόγιο:

Πρέπει να φτιάξετε ένα μικρό κύκλωμα που ενεργοποιεί έναν κινητήρα υψηλής ροπής, και δεδομένου ότι οι γνώσεις μου για τα ηλεκτρονικά είναι πολύ, πολύ λίγες, έπρεπε να περάσω μερικές μέρες μαθαίνοντας τα βασικά παρακολουθώντας βίντεο στο YouTube.

Το αρχικό σενάριο αυτοματισμού είναι γραμμένο σε Python και χρησιμοποιεί σύνδεση GMail για να συμβουλευτεί τις εντολές, δεν είχα χρησιμοποιήσει ποτέ αυτήν τη γλώσσα προγραμματισμού, αλλά η αλήθεια δεν είναι τόσο διαφορετική από τις άλλες, την έχω τροποποιήσει λίγο ώστε να προσαρμόζεται καλύτερα στο νέο οι βιβλιοθήκες Python και η διαδικασία αυτοματισμού μαζί με τις διαμορφώσεις του λειτουργικού συστήματος σας επιτρέπουν να παραμετροποιήσετε τα ακόλουθα:

  • Αλληλεπίδραση μέσω εντολών που αποστέλλονται στο Chat που ελέγχεται μέσω ChatBots.
  • Σας επιτρέπει να παρακολουθείτε την κατάσταση των τροφίμων που διανέμονται.
  • Ελέγχει πόση ποσότητα τροφίμων πρόκειται να διανεμηθεί.
  • Διαθέτει κουμπιά που σας επιτρέπουν να τροφοδοτείτε χειροκίνητα.
  • Δεν επιτρέπει την υπερβολική σίτιση απενεργοποιώντας τη σίτιση σε διαστήματα 8 ωρών.
  • Διαθέτει οθόνη LCD που δείχνει τα δεδομένα ως ημερομηνία και ώρα της επόμενης φοράς για το επόμενο τροφοδοτικό, το SSID στο οποίο είναι συνδεδεμένο στο WiFi και τη διεύθυνση IP της συσκευής.
  • Προαιρετικά: Εμφανίζει μερικά τυχαία αστεία του Chuck Norris ή / και Trivia of Numbers χρησιμοποιώντας ένα ζεύγος δημόσιων APIS (Έξυπνο από τον αρχικό συγγραφέα).
  • Το Σύστημα είναι απρόσβλητο από επανεκκίνηση λόγω διακοπής ρεύματος καθώς αποθηκεύει ένα αρχείο κατάστασης.
  • Το σύστημα ανιχνεύει πότε υπάρχει απώλεια σύνδεσης και προσπαθεί να επανασυνδεθεί έως ότου επιτύχει.

Βήμα 1: Χρησιμοποιημένα υλικά

  • 1 Raperry Pi, κατά προτίμηση η έκδοση 3 που είναι ήδη ενσωματωμένη στην κάρτα Wireless, μπορείτε επίσης να χρησιμοποιήσετε την έκδοση Pi 3 Zero, χρειάζεται λίγο περισσότερη δουλειά γιατί πρέπει να κολλήσετε τις καρφίτσες, αλλά διαπίστωσα πολύ αργά ότι θα μπορούσε χρησιμοποιήστε ένα από αυτά που είναι πιο οικονομικά.
  • 1 ηλεκτρικός κινητήρας υψηλής ροπής, 37mm, 3.5rpm και 12V.
  • 1 μπράτσο για κινητήρα 37mm.
  • Οθόνη LCD 1 χαρακτήρα γραμμών 20x4 με χειριστήριο HD44780.
  • 1 Διανομέας δημητριακών Zevro Μοντέλο WM1001 άξονας-Δ μήκους 5 ίντσες, διαμέτρου 0,63 εκατοστών (απαιτείται περικοπή D για να στερεωθεί στον διανομέα)
  • 1 συζεύκτης άξονα από 1/4 "έως 6 mm για σύνδεση με τον κινητήρα.

Όλα τα προηγούμενα υλικά εκτός από τα δύο τελευταία δεν μπορούσα να τα βρω στη χώρα μου (ή τουλάχιστον δεν ήξερα πού να τα πάρω), ωστόσο η ράβδος και ο συζεύκτης πιθανότατα βρίσκονται σε εργαστήριο συγκόλλησης αλλά είναι η πρώτη φορά που κάνω κάτι έτσι, δεν είχα ιδέα πώς πρέπει να είναι για να ταιριάζει στον κινητήρα, έτσι ρώτησα τη σελίδα των συνδέσμων που περιγράφονται παραπάνω. Κάτω από τα υλικά που θα μπορούσα να αγοράσω σε τοπικά καταστήματα:

  • 1 ξύλινο κουτί, χρησιμοποιώ πλάτος 20,3 cm high ύψος 26,7 cm x βάθος 13 cm. το κουτί έχει μια πόρτα που ανοίγει δεξιά με μια τρύπα 10cm x 4cm για να τοποθετήσετε την οθόνη LCD (τοπική ξυλουργική)
  • 3 Πιέστε τα κουμπιά
  • 1 Μικρό Protoboard
  • 1 LED 3,3 Volt (Δεν έχει σημασία το χρώμα αλλά για την τάση είναι συνήθως Κόκκινο)
  • 1 τρανζίστορ NPN PN2222
  • 1 Αντίσταση 270 Ω
  • 1 Αντίσταση 10 KΩ
  • 1 Ποτενσιόμετρο 10 KΩ
  • 1 δίοδος IN4003 (μπορεί να λειτουργήσει IN4001 ή IN4004)
  • 1 προσαρμογέας 12V 3A
  • 1 προσαρμογέας 5V 2A
  • 4 βίδες με παξιμάδι φτερού από 1,5 ίντσες έως 2 ίντσες (εξαρτάται από το πάχος του ξύλου που χρησιμοποιείται, πρέπει να στερεώσουν το στήριγμα του κινητήρα στο ξύλινο κουτί)
  • Καλώδια Jumper σκέλη διαφόρων χρωμάτων
  • 1 πτυσσόμενος σωλήνας ή ένα σετ PVC με διάμετρο 4 ίντσες, αυτό εξαρτάται από το ύψος στο οποίο θα τοποθετηθεί το ξύλινο κουτί.
  • 1 αγκώνας PVC που συνδέεται με το προηγούμενο καστ.
  • 3 σφιγκτήρες για σωλήνες αυτοκινήτων (The World)
  • 4 πόδια καλωδίου UTP (χρειαζόμαστε τα στριμμένα ζεύγη για να κάνουμε τις συνδέσεις)
  • 1 WebCam USB, δεν είναι απαραίτητο να είναι υψηλής ανάλυσης.

Μερικά διάφορα υλικά που μπορούν να ληφθούν σε καταστήματα υλικού ή ενδεχομένως να έχουμε ήδη: Industrial Tape

  • Συγκολλητής κασσίτερου
  • Κασσίτερος
  • Τρυπάνι
  • Τρυπάνι 16/5
  • Βίδες S8 με διαστολείς

Βήμα 2: Τοποθέτηση της δομής

Τοποθέτηση της δομής
Τοποθέτηση της δομής
Τοποθέτηση της δομής
Τοποθέτηση της δομής
Τοποθέτηση της δομής
Τοποθέτηση της δομής

Η κύρια ιδέα είναι να αντικαταστήσετε τη λαβή διανομής που έρχεται στο ZEVRO από τη ράβδο D, η οποία στη συνέχεια θα συνδεθεί στο μοτέρ μέσω του ζεύκτη. Ο διανομέας θα στερεωθεί στο ξύλινο κουτί και το ξύλινο κουτί στον τοίχο. Δεδομένου ότι δεν γνωρίζω πολλά ηλεκτρονικά, δεν χρησιμοποίησα καμία πλάκα βακελίτη για να τοποθετήσω το κύκλωμα, οπότε χρησιμοποίησα το breadboard για να βάλω όλα τα εξαρτήματα, έτσι στο κάτω μέρος του κουτιού στερεώνεται με βίδες το Rapberry Pi και το breadboard που είχαν ήδη μια κόλλα στο πίσω μέρος, έτσι πήγα να το επικολλήσω. Το κουτί πρέπει να έχει τρία κουμπιά τα οποία θα έχουν τη λειτουργία Επανεκκίνηση του χρονοδιακόπτη, ενεργοποίηση του τροφοδότη και το τελευταίο θα είναι ένα άμεσο βήμα για την ενεργοποίηση του κινητήρα χωρίς να περάσετε από το κύκλωμα. Ο κινητήρας θα κρατηθεί μέσα στο κουτί μέσω του βραχίονα, οπότε μόνο η ράβδος D που συνδέεται με το διανομέα θα προεξέχει από το κουτί, στο κάτω μέρος του κουτιού διορθώστε και ρυθμίστε την κάμερα web έτσι ώστε σε κάθε αλληλογραφία και επιβεβαίωση Ι έστειλε μια φωτογραφία για το πώς είναι το πιάτο, για να μην τροφοδοτηθεί υπερβολικά σε περίπτωση που δεν έχουν τελειώσει τον τελευταίο γύρο φαγητού.

Από το κάτω μέρος του διανομέα, ο σωλήνας που κατεβαίνει στην πλάκα τοποθετήθηκε και ο αγκώνας PVC τοποθετήθηκε στη βάση, τοποθέτησα μια μικρή Βιομηχανική Ταινία στην πρίζα για να ελαχιστοποιήσω την ταχύτητα της ροής των τροφίμων και έκανα μια βάση διανομής για αποτρέψτε τον ψεκασμό τροφίμων παντού. Για να στερεώσετε τον σωλήνα στον τοίχο, χρησιμοποιήστε μεταλλικούς βραχίονες που στερεώνετε στον τοίχο με τις κοχλίες S8.

Στην πόρτα του κουτιού κρατήστε την πλάκα της οθόνης LCD και χρησιμοποιήστε τα στριμμένα ζεύγη του καλωδίου UTP για να τα πάτε απευθείας στο Raspberry, στο άλλο άκρο των καλωδίων συνδέστε τις θηλυκές άκρες των βραχυκυκλωτήρων για να διευκολύνετε τη σύνδεση τις θύρες GPIO του Raspberry. Αυτό θα είναι το διάγραμμα κυκλώματος. Θα προσπαθήσω να το εξηγήσω με τα λίγα που μπορώ να πάρω από την Ηλεκτρονική.

Ο κινητήρας συνδέεται απευθείας με τον θετικό πόλο του μετασχηματιστή 12 volt, αλλά για να ρεύσει το ρεύμα πρέπει να περάσει από το κύκλωμα στον ουδέτερο πόλο του κινητήρα, για αυτό το τρανζίστορ N2222 χρησιμοποιείται. Τα τρανζίστορ έχουν κανονικά 3 πόδια που αντιστοιχούν σε έναν συλλέκτη, μια βάση και έναν πομπό, ανάλογα με το μοντέλο του τρανζίστορ η θέση αυτών των ποδιών μπορεί να ποικίλει. Αυτό το τρανζίστορ κάνει τη λειτουργία του διακόπτη. Εδώ συνδέουμε τον ουδέτερο πόλο του κινητήρα με τον συλλέκτη του τρανζίστορ, ο πείρος # 19 του σμέουρου συνδέεται με τη βάση μέσω αντίστασης 270Ω και ο πομπός συνδέεται με τον ουδέτερο ακροδέκτη του τρανζίστορ. Μετασχηματιστής 12V μαζί με έναν από τους πόλους γείωσης του βατόμουρου. το τρανζίστορ θα αφήσει το ρεύμα να ρέει μεταξύ συλλέκτη και εκπομπού όσο η βάση διεγείρεται με επαρκή τάση. αργότερα θα προγραμματίσουμε το σμέουρο έτσι ώστε σύμφωνα με ορισμένες παραγγελίες η θύρα 19 να εκπέμπει 3,3 βολτ, αρκετά για να συνεχίσει και να ενεργοποιήσει το μοτέρ το κύκλωμα.

Για την οθόνη LCD, ένα άλλο μέρος του protobard χρησιμοποιείται σε διαφορετικό κύκλωμα όπου συνδέετε το ποτενσιόμετρο 10KΩ το οποίο απορρίπτει την αντίθεση του κειμένου που εμφανίζεται στην οθόνη LCD, οπότε αν δεν εμφανίζεται τίποτα στην οθόνη είναι πιθανότατα επειδή το ποτενσιόμετρο είναι εντελώς κλειστό; στην περίπτωσή μου το αφήνω εντελώς ανοιχτό έτσι ώστε το κείμενο να απεικονίζεται καλύτερα. Στο τέλος οι συνδέσεις στο breadboard θα είναι οι εξής.

Βήμα 3: Διαμόρφωση Raspberry Pi

Πρώτα απ 'όλα είναι σημαντικό να δημιουργήσετε το Telegram Bot που θα διαχειρίζεται το σύστημα. Θα χρειαστείτε ένα κλειδί για να τροποποιήσετε το συνημμένο σενάριο python. Διαβάστε τα βήματα στην Τεκμηρίωση τηλεγράφου:

core.telegram.org/bots#3-how-do-i-create-a-bot

Για να διαμορφώσετε το rapberry, χρησιμοποιήστε την Lite έκδοση του Rapbian (δεν χρειαζόμαστε τη γραφική διεπαφή) και εφαρμόστε τη βασική διαμόρφωση που δείχνει το raspbian μόλις εγκατασταθεί ή χρησιμοποιώντας την εντολή raspi-config: επεκτείνετε το χώρο στο 100% και ενεργοποιήστε το SSH αλλά κυρίως το πιο σημαντικό είναι να αλλάξετε τον κωδικό πρόσβασης και το όνομα χρήστη στο χρήστη pi που έρχεται από προεπιλογή (αλλιώς, όπως συνέβη σε μένα, μπορεί να υποστούν επίθεση από τη θύρα 22 εάν έχουν δημόσια IP που απευθύνεται στο βατόμουρο) Το Εκτός από αυτό, η διαμόρφωση για αυτόματη σύνδεση στο δίκτυό μου WiFi (Υποθέτοντας ότι το δίκτυό μου ονομάζεται "BlogSoriano" και ο κωδικός πρόσβασης είναι "$ ecure123!") Δημιουργούμε και αποθηκεύουμε το κλειδί στο αρχείο ασύρματων συνδέσεων με την ακόλουθη εντολή:

sudo wpa_passphrase "BlogSoriano" "$ ecure123!" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf>/dev/null

το επόμενο είναι να ενημερώσουμε και να εγκαταστήσουμε το σύστημα εγκατάστασης python "pip", ώστε να συνδεθούμε ως root, να ενημερώσουμε και να εγκαταστήσουμε τα απαραίτητα πακέτα:

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Με αυτό έχουμε ήδη πρόσβαση στη βιβλιοθήκη κλάσης python, για το σενάριο που πρόκειται να χρησιμοποιήσουμε, πρέπει να εγκαταστήσουμε τα ακόλουθα:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces ασύρματο telepot cv2

Μόλις ολοκληρωθεί η εγκατάσταση των εξαρτήσεων, θα χρησιμοποιήσουμε το σενάριο που επισυνάπτεται σε αυτό το βήμα, το αποθηκεύω στη διαδρομή /opt/petfeeder.py και το αρχείο μπορεί να δημιουργηθεί χρησιμοποιώντας την εντολή nano /opt/petfeeder.py και μέσα σε αυτό το αρχείο επικολλάμε τον κώδικα ή, αν έχετε περισσότερη εμπειρία Linux, μπορείτε να κάνετε λήψη απευθείας με το wget. Στο σενάριο είναι σημαντικό να τροποποιήσετε τις μεταβλητές BOTKEY (στη γραμμή 36) και SYSPASSWORD (στη γραμμή 23).

Διευκρινίζω ότι αυτός ο κώδικας δεν γράφτηκε από μένα αφού δεν είχα προγραμματίσει ποτέ στην Python, τον τροποποίησα μόνο για να συνεργαστεί με τις νέες βιβλιοθήκες και με την οθόνη LCD 20x4 και να χρησιμοποιήσω το telegram Bot.

Μόλις έχουμε το Script, πρέπει να αλλάξουμε τις τιμές των μεταβλητών με το κλειδί για το bot. Για αυτό είναι απαραίτητο να δημιουργήσετε ένα νέο Telegram Bot, με αυτό θα ήταν μόνο να αποθηκεύσετε το αρχείο και να βγείτε (με Ctrl + ή αποθήκευση και ctrl + x αφήνει το πρόγραμμα επεξεργασίας nano), απλώς πρέπει να είμαστε απόδειξη επανεκκίνησης. το σενάριο αποθηκεύει την τελευταία φορά που ενεργοποιείται το σύστημα ισχύος, οπότε πρέπει να κάνουμε το σενάριο να τρέχει κάθε φορά που ξεκινά το λειτουργικό σύστημα, για αυτό βρήκα μια πολύ συγκεκριμένη λύση με ένα πρόγραμμα που ονομάζεται supervisor, το οποίο είναι εγκατεστημένο από τα αποθετήρια Debian:

apt-get επόπτης εγκατάστασης

και μόλις εγκατασταθεί, χρειάζεται μόνο να δημιουργήσουμε ένα αρχείο διαμόρφωσης στο /etc/supervisor/conf.d/petfeeder.conf, καθώς στην προηγούμενη περίπτωση μπορούμε να το δημιουργήσουμε και να το αποθηκεύσουμε με nano, αυτό το αρχείο θα έχει τα εξής:

[πρόγραμμα: petfeederd] κατάλογος =/opt command = python petfeeder.py autostart = true autorestart = true

Μόλις αποθηκευτεί το αρχείο μπορούμε να χρησιμοποιήσουμε την εντολή supervisorctl [start | στάση | επανεκκίνηση] petfeederd, καθώς σε αυτήν την περίπτωση η υπηρεσία δεν έχει ξεκινήσει, την εκτελούμε με έναρξη:

supervisorctl εκκίνηση petfeederd

Βήμα 4: Έτοιμο για δοκιμή

Image
Image
Έτοιμο για δοκιμή
Έτοιμο για δοκιμή
Έτοιμο για δοκιμή
Έτοιμο για δοκιμή
Έτοιμο για δοκιμή
Έτοιμο για δοκιμή

Και με αυτό το σύστημα θα πρέπει να λειτουργεί, η οθόνη LCD θα πρέπει να δείχνει πληροφορίες για το πότε θα είναι η επόμενη ροή ή αν είναι έτοιμη για τροφοδοσία, αν το πω. Πρέπει επίσης να δείξετε το όνομα του ασύρματου δικτύου στο οποίο είστε συνδεδεμένοι και τη διεύθυνση IP που χρησιμοποιείται σε περίπτωση που χρειαστεί να συνδεθούμε μέσω SSH, μοιράζομαι ένα μικρό βίντεο που έφτιαξα, ζητώ συγγνώμη για την ποιότητα του, Δεν είμαι πολύ καλός είναι αυτό το θέμα των vlogs.

Θα πρέπει να μπορείτε να κάνετε αναζήτηση στο bot σας στο Telegram και να στείλετε μία από τις επόμενες εντολές αφού έχετε /εξουσιοδοτήσει τη συνομιλία σας:

/ροή: Ξεκινά τη διαδικασία τροφοδοσίας όσο έχει παρέλθει η παραμετροποιημένη χρονική περίοδος.

/πότε: επιστρέφει πληροφορίες για το πότε ήταν η τελευταία σίτιση και μια εικόνα της πλάκας φαγητού.

/φωτογραφία: Επιστρέψτε μια εικόνα του πιάτου φαγητού.

/επανεκκίνηση: Επανεκκινήστε το σύστημα, ορίστε τη μεταβλητή της τελευταίας ροής στο 0 για να μπορείτε να τροφοδοτείτε αμέσως.

/κατάσταση Ενημερώνει για την κατάσταση σύνδεσης στο Internet: SSID του συνδεδεμένου ασύρματου δικτύου και τη διεύθυνση IP που διαθέτει το σύστημα εντός του δικτύου.

Συνιστάται: