Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Εισαγωγή στο Raspberry Pi GPIO
- Βήμα 2: Κατανόηση των αντιστάσεων
- Βήμα 3: Καλωδίωση LED
- Βήμα 4: Σύνδεση του LED στο GPIO
- Βήμα 5: Χρήση ρελέ για οδήγηση της λυχνίας LED
- Βήμα 6: Προσθήκη αντίστασης Pull-Up
- Βήμα 7: Αισθητήρας διακόπτη καλαμιών
- Βήμα 8: Σύνδεση του διακόπτη Reed στο Pi
- Βήμα 9: Κάνοντας μια μόνιμη λύση σε έναν πίνακα πρωτοτύπων
- Βήμα 10: Αναφορές
Βίντεο: Υλικό Raspberry Pi Zero Garage Door Opener: 10 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Μία από τις εμπνεύσεις για αυτό το έργο ήταν το ωραίο εκπαιδευτικό στο Raspberry Pi 3 Garage Door Opener, μαζί με πολλά άλλα που βρέθηκαν στο Διαδίκτυο. Δεν ήμουν έμπειρος ηλεκτρονικός, έκανα πολλές πρόσθετες έρευνες για τρόπους διασύνδεσης με το Raspberry Pi και έμαθα πολλά για τη σημασία των αντιστάσεων με λαμπτήρες LED και με όλες τις καλωδιώσεις GPIO. Έμαθα επίσης για τα οφέλη των κυκλωμάτων υλικού έλξης και έλξης έναντι της ενσωματωμένης λειτουργικότητας Pi.
Επειδή αυτό το έργο πόρτας γκαράζ είναι πραγματικά μια διαδικασία πολλαπλών τμημάτων που περιλαμβάνει υλικό Pi, λογισμικό και εγκατάσταση με το (τα) ανοιχτήρι (-α) του γκαράζ σας, σκέφτηκα ότι θα επικεντρωθώ πρώτα στο υλικό Pi, καθώς απαιτείται για κάθε άλλο βήμα.
Η προσέγγισή μου είναι να είμαι πολύ βασική, λειτουργώντας ως περίληψη της μάθησης που έκανα για να μπορέσω να ολοκληρώσω το υλικό. Θα ξεκινήσει με κάποιες πληροφορίες και στη συνέχεια θα χτίσουμε κυκλώματα σε μια σανίδα ψωμιού. Κάθε βήμα θα βελτιώσει τον σχεδιασμό και τις γνώσεις μας, με αποκορύφωμα την κατασκευή μόνιμης λύσης υλικού για τη διασύνδεση του Pi με αισθητήρες ρελέ και καλαμιών.
Επιπλέον, σε αντίθεση με ορισμένα άλλα έργα, αποφάσισα να χρησιμοποιήσω ένα Raspberry Pi Zero W, το οποίο πήρα προς πώληση πριν από λίγο καιρό, αλλά ακόμα καθόμουν αχρησιμοποίητο στο γραφείο μου. Το αντίθετο είναι ότι, ενώ έκανα πρωτότυπο, αν έκανα ζημιά σε οποιοδήποτε από τα κυκλώματα GPIO ήταν φθηνό και εύκολο να αντικατασταθεί και να διατηρηθεί το πρωτότυπο. Το μειονέκτημα είναι ότι διαθέτει μόνο επεξεργαστή ARMv6, οπότε ορισμένα πράγματα, όπως η Java, δεν πρόκειται να χρησιμοποιηθούν.
Το άλλο πράγμα που αποφάσισα να κάνω ήταν να δημιουργήσω τη δική μου πρόσθετη πλακέτα για το κύκλωμα, οπότε πρέπει να αλλάξω ή να αντικαταστήσω το Pi μου, εφόσον τα pinouts είναι ίδια, ο πίνακας θα πρέπει εύκολα να συνδεθεί στο νέο Pi Το Αυτό ελπίζουμε ότι θα ελαχιστοποιήσει τη φωλιά της καλωδίωσης ενός αρουραίου.
Οι υποθέσεις μου είναι:
- Είστε άνετα να κολλήσετε
- Γνωρίζετε ήδη πώς να χρησιμοποιείτε βασικές εντολές τερματικού στο Raspberry Pi
- Χρησιμοποιείτε Raspbian Buster ή νεότερη έκδοση.
- Έχετε κάποια διεπαφή στη γραμμή εντολών Pi. είτε με ειδική οθόνη, πληκτρολόγιο κλπ. ΚΑΙ/using με χρήση SSH.
- Είστε εξοικειωμένοι με τη βασική ιδέα του σχεδιασμού ηλεκτρικών κυκλωμάτων. Για παράδειγμα, γνωρίζετε τη διαφορά μεταξύ ισχύος και γείωσης και καταλαβαίνετε την έννοια του βραχυκυκλώματος. Εάν μπορείτε να βάλετε μια νέα πρίζα στο σπίτι σας, θα πρέπει να μπορείτε να το ακολουθήσετε.
Προμήθειες
Ανάλογα με το πόσο αφοσιωμένοι είστε σε αυτό το έργο, μπορείτε να ξεκινήσετε με τα πράγματα που χρειάζεστε σε κάθε βήμα και να φύγετε από εκεί. Πολλά από αυτά τα μέρη είναι διαθέσιμα στο τοπικό σας κατάστημα ηλεκτρονικών ειδών ή DIY/Maker, αλλά έχω συμπεριλάβει συνδέσμους Amazon για να βελτιώσω τις περιγραφές.
- MakerSpot RPi Raspberry Pi Zero W Protoboard (για να κάνετε το τελευταίο καπέλο για το Pi)
- Μονάδα αναμετάδοσης 2 καναλιών DC 5V (πάρτε ένα κανάλι εάν έχετε μία πόρτα, 2 για 2 πόρτες κ.λπ.)
- Overhead Door Switch, Normally Open (NO) (Αν αυτή τη στιγμή απλώς δημιουργείτε πρωτότυπα και θέλετε να χρησιμοποιήσετε μερικούς φθηνούς διακόπτες καλαμιών για να ξεκινήσετε, δεν πειράζει)
- Electronic Fun Kit Bundle (αυτό περιείχε όλες τις αντιστάσεις που χρειαζόμουν, καθώς και ένα breadboard και μια μονάδα ισχύος για να βοηθήσω το πρωτότυπο και να δοκιμάσω και να μάθω πριν κάνω τη μόνιμη πλακέτα). Εάν τα έχετε ήδη όλα αυτά, βεβαιωθείτε ότι έχετε στη διάθεσή σας μερικές αντιστάσεις 10K, 1K και 330 ohm.
- Breadboard Jumper Wires (οποιοσδήποτε θα κάνει)
- Συγκολλητικό σίδερο με μικρή άκρη
- Συγκόλληση με πυρήνα κολοφώνου
- Καθαριστικό άκρων συγκολλητικού σιδήρου
- Ανταλλακτικό τροφοδοτικό 9v (για την τροφοδοσία του breadboard)
- Φτηνές σανίδες πρωτοτύπων για πρακτική συγκόλλησης (προαιρετικά)
- Λειτουργία Raspberry Pi Zero ή Pi της επιλογής σας
- Καρφίτσες κεφαλίδας για το Raspberry Pi (εάν η δική σας δεν έχει ήδη την κεφαλίδα)
- Στοίβαξη κεφαλίδων για χρήση στο πρωτόκολλο HAT.
- Μικρή πένσα μύτης βελόνας
- Σετ κατσαβιδιών κοσμηματοπωλείου
- Μικροί πλευρικοί κόφτες (για κοπή σύρματος μετά τη συγκόλληση)
- Τσιμπιδακι ΦΡΥΔΙΩΝ
- Κάποιο καλώδιο μικρού μεγέθους (προτιμώ το συμπαγές πυρήνα) για χρήση στο πρωτοπόρο
- Λίγη σιλικόνη (αν επιλέξετε να χρησιμοποιήσετε LED επιφανειακής τοποθέτησης 1,8 mm αντί για αυτά που παρέχονται στη συσκευασία)
- Διαπίστωσα ότι ένας μεγεθυντικός φακός ήταν εξαιρετικά χρήσιμος για να δείτε τη μικρή συγκόλληση
Βήμα 1: Εισαγωγή στο Raspberry Pi GPIO
Η κύρια διεπαφή που θα χρησιμοποιήσουμε με το Raspberry Pi είναι το GPIO (Είσοδος/Έξοδος Γενικού Χρήσης).
Βρείτε το κατάλληλο διάγραμμα καρφιτσών για το Pi σας εδώ. Αυτό το διδακτικό θα επικεντρωθεί στο Pi Zero W v1.1.
Θα χρησιμοποιούμε μόνο τις πράσινες καρφίτσες GPIO, αποφεύγοντας τις καρφίτσες SDA, SCL, MOSI, MISO κ.λπ. (Ανακάλυψα ότι ορισμένες καρφίτσες GPIO έχουν ειδικούς σκοπούς, ένα από τα οφέλη της πρωτοτυπίας σε μια σανίδα ψωμιού, έτσι κόλλησα στις καρφίτσες GPIO 17 (καρφίτσα #11), 27 (καρφίτσα #13) και 12 (#32) όπως ήταν σε καλές θέσεις για το ψωμί μου.
Οι ακίδες GPIO έχουν σχεδιαστεί για να λειτουργούν ως ψηφιακοί (δυαδικοί) διακόπτες. υπάρχουν λογικά ως μία από τις δύο καταστάσεις: 1 ή μηδέν. Αυτές οι καταστάσεις εξαρτώνται από το αν ο πείρος παρέχει ή λαμβάνει τάση πάνω από ένα συγκεκριμένο κατώφλι (1) ή τροφοδοτεί ή λαμβάνει τάση κάτω από ένα συγκεκριμένο όριο. (Θα μιλήσουμε για τα κατώφλια αργότερα.)
Είναι σημαντικό να σημειωθεί ότι, ενώ το Raspberry Pi μπορεί να παρέχει τόσο 5V όσο και 3.3V (3V3), οι ακίδες GPIO λειτουργούν χρησιμοποιώντας έως και 3.3V. Περισσότερο από αυτό και καταστρέφετε το GPIO και πιθανώς ολόκληρο το χειριστήριο. (Αυτός είναι ο λόγος για τον οποίο κάνουμε πρωτότυπο σε ένα breadboard και χρησιμοποιούμε το φθηνότερο δυνατό Pi!)
Η κατάσταση των ακίδων μπορεί να χειριστεί είτε από λογισμικό (έξοδο) είτε από άλλες συσκευές που τροφοδοτούνται στην κατάσταση (είσοδος).
Ας δώσουμε μια λήψη χρησιμοποιώντας κάποιες βασικές εντολές SYSFS. Δεν είμαι σίγουρος αν αυτό απαιτεί WiringPi, αλλά αν αντιμετωπίσετε προβλήματα, μπορεί να θέλετε να το εγκαταστήσετε εάν χρησιμοποιείτε την ελάχιστη εικόνα Raspbian.
Αρχικά, ας δώσουμε στον εαυτό μας πρόσβαση στο GPIO 17:
sudo echo "17">/sys/class/gpio/export
Τώρα ας ελέγξουμε την τιμή του GPIO:
sudo cat/sys/class/gpio/gpio17/value
Η τιμή πρέπει να είναι μηδέν.
Σε αυτό το σημείο, το GPIO δεν γνωρίζει αν είναι είσοδος ή έξοδος. Ως εκ τούτου, εάν προσπαθήσετε να χειριστείτε την τιμή GPIO, θα λάβετε "σφάλμα εγγραφής: Η λειτουργία δεν επιτρέπεται". Λοιπόν, ας πούμε στην καρφίτσα ότι είναι έξοδος:
sudo echo "out">/sys/class/gpio/gpio17/διεύθυνση
Και τώρα ορίστε την τιμή στο 1:
sudo echo "1">/sys/class/gpio/gpio17/value
Ελέγξτε ξανά την τιμή για να δείτε… και η τιμή πρέπει να είναι 1.
Συγχαρητήρια, μόλις δημιουργήσατε ένα GPIO εξόδου και αλλάξατε την κατάσταση!
Τώρα, υπάρχουν λίγα περισσότερα σε αυτό, αλλά ας μάθουμε πρώτα μερικά πράγματα.
Βήμα 2: Κατανόηση των αντιστάσεων
Έτσι, μπορείτε να αναζητήσετε αντιστάσεις στη Wikipedia, αλλά τι σημαίνουν για εμάς; Κυρίως προστατεύουν τα συστατικά μας.
Θυμάστε όταν μιλήσαμε για τα GPIO ότι λειτουργούν έως και 3.3V; Αυτό σημαίνει ότι αν δώσετε μια καρφίτσα GPIO περισσότερο από αυτό, μπορείτε να τηγανίσετε. Γιατί είναι σημαντικό? Μερικές φορές υπάρχουν μικρές υπερτάσεις σε οποιοδήποτε κύκλωμα και εάν το μέγιστο είναι 3,3V, κάθε μικρός λόξυγκας μπορεί να προκαλέσει προβλήματα. Η λειτουργία στη μέγιστη τάση είναι μια επικίνδυνη πρόταση.
Αυτό ισχύει ιδιαίτερα για τα LED. Ένα LED θα αντλήσει όσο περισσότερη ενέργεια μπορεί. Τελικά η λυχνία LED θα καεί, αλλά η σημαντική τροφοδοσία ρεύματος μπορεί να καταναλώσει όλη τη διαθέσιμη ισχύ σε ένα κύκλωμα, προκαλώντας δυσλειτουργία.
Για παράδειγμα: τι θα συμβεί αν βάλετε ένα πιρούνι και στις δύο προεξοχές μιας ηλεκτρικής πρίζας; Υπάρχει μικρή έως καθόλου αντίσταση και θα φυσήξετε τον διακόπτη. (Και πιθανώς να βλάψετε τον εαυτό σας κατά τη διαδικασία.) Γιατί η φρυγανιέρα δεν το κάνει αυτό; Επειδή τα θερμαντικά του στοιχεία παρέχουν αντίσταση και ως εκ τούτου δεν αντλούν ολόκληρο το φορτίο του κυκλώματος.
Λοιπόν, πώς μπορούμε να μην συμβεί αυτό σε ένα LED; Περιορίζοντας την ποσότητα ρεύματος που χρησιμοποιείται για την οδήγηση της λυχνίας LED χρησιμοποιώντας μια αντίσταση.
Αλλά τι μέγεθος αντίστασης; Ναι, διάβασα μερικά άρθρα στο διαδίκτυο και τελικά εγκατέστησα μια αντίσταση 330Ω για 3.3V με LED. Μπορείτε να διαβάσετε όλους τους υπολογισμούς τους και να το καταλάβετε μόνοι σας, αλλά δοκίμασα μερικούς σε ένα breadboard και το 330 λειτούργησε μια χαρά. Μια αναφορά που έλεγξα ήταν στα φόρουμ του Raspberry Pi, αλλά μια αναζήτηση στο Google θα ανακαλύψει πολλά περισσότερα.
Ομοίως, οι ακίδες Pi GPIO χρειάζονται προστασία από υπέρταση. Θυμάστε πώς είπα ότι χρησιμοποιούν έως 3.3V; Λοιπόν, λίγο λιγότερο δεν θα βλάψει. Τα περισσότερα έργα χρησιμοποιούν αντιστάσεις 1KΩ και έκανα το ίδιο. Και πάλι, μπορείτε να το υπολογίσετε μόνοι σας, αλλά αυτή είναι μια πολύ δημοφιλής επιλογή. Και πάλι, τα φόρουμ του Raspberry Pi παρέχουν ορισμένες πληροφορίες.
Εάν δεν το καταλαβαίνετε πλήρως, διαβάστε λίγο περισσότερο. Or απλά ακολουθήστε τις οδηγίες. Όποιο λειτουργεί για εσάς.
Πολλές αντιστάσεις αναγράφονται στη συσκευασία, αλλά μόλις τις αφαιρέσετε, πώς μπορείτε να τις ξεχωρίσετε; Οι μικρές χρωματιστές ρίγες στην αντίσταση μπορούν να σας πουν.
Στη συνέχεια, θα συνδέσουμε ένα απλό LED σε ένα breadboard με δύναμη για να ξεκινήσουμε τα πράγματα.
Βήμα 3: Καλωδίωση LED
Το πρώτο βήμα είναι να συνδέσετε ένα LED στην πλάκα ψωμιού. Μόλις το καταφέρουμε να λειτουργεί με ασφάλεια, θα το συνδέσουμε με το Raspberry Pi και θα το ελέγξουμε από την καρφίτσα GPIO.
Ας ελπίσουμε ότι το breadboard σας συνοδεύτηκε από πηγή ενέργειας για 3.3v. Εάν όχι, μπορείτε να συνδέσετε τα πάντα και να τα συνδέσετε απευθείας στο Pi.
Βρείτε ένα LED και συνδέστε το στο breadboard όπως φαίνεται χρησιμοποιώντας μια αντίσταση 330Ω. Το μεγαλύτερο σκέλος της λυχνίας LED είναι η άνοδος, το μικρότερο πόδι είναι η κάθοδος. Η άνοδος συνδέεται με την ισχύ των 3.3V ενώ η κάθοδος συνδέεται ξανά με τη γείωση. Η αντίσταση μπορεί να είναι είτε πριν από το LED. δεν έχει σημασία. Τα τυπικά χρώματα καλωδίων είναι:
- Κόκκινο = 5V
- Πορτοκαλί = 3,3V
- Μαύρο = έδαφος
Μόλις έχετε ενσύρματο αυτό το breadboard και τροφοδοτείτε, το LED πρέπει να ανάψει. Μην προχωρήσετε αν δεν λειτουργήσει αυτό.
Βήμα 4: Σύνδεση του LED στο GPIO
Έτσι τώρα έχουμε ένα LED εργασίας με αντίσταση. Τώρα ήρθε η ώρα να συνδέσετε αυτό το LED στο Raspberry Pi. Ο στόχος μας είναι να δημιουργήσουμε ένα GPIO εξόδου και να το συνδέσουμε με το LED έτσι ώστε όταν ενεργοποιήσουμε το GPIO, το LED να ανάψει. Αντιστρόφως, όταν απενεργοποιήσουμε το GPIO, το LED θα σβήσει. (Αυτό θα χρησιμοποιηθεί αργότερα ως κύκλωμα που θα "πατήσει" το κουμπί για να ανοίξει την πόρτα του γκαράζ.)
Αφαιρέστε το ρεύμα από το breadboard και συνδέστε το Pi όπως φαίνεται. (Είναι καλύτερο να το κάνετε αυτό ενώ το Pi είναι επίσης εκτός λειτουργίας). Έχουμε συνδέσει την τροφοδοσία 3.3V από το GPIO 17 και τη γείωση σε μία από τις ακίδες γείωσης.
Τώρα εκκινήστε το Pi και το LED πρέπει να είναι σβηστό. Εκτελέστε τις ίδιες εντολές που κάναμε προηγουμένως για να ρυθμίσετε το pin GPIO και να εξάγετε την τιμή:
sudo echo "17">/sys/class/gpio/export
sudo echo "out">/sys/class/gpio/gpio17/direction sudo cat/sys/class/gpio/gpio17/value
Η τιμή πρέπει να είναι μηδέν.
Τώρα ας ενεργοποιήσουμε το GPIO:
sudo echo "1">/sys/class/gpio/gpio17/value
Αυτό πρέπει να ανάψει το LED. Για να απενεργοποιήσετε το LED, απενεργοποιήστε το GPIO ως εξής:
sudo echo "0">/sys/class/gpio/gpio17/value
Ένα από τα πράγματα που μπορεί να συμβεί είναι ότι, με αρκετές παρεμβολές ή κύκλους ενεργοποίησης/απενεργοποίησης του LED, μπορεί να παρατηρήσετε ότι το LED παραμένει ελαφρώς αναμμένο. Υπάρχει λόγος για αυτό και θα το συζητήσουμε σε μελλοντικό βήμα.
Βήμα 5: Χρήση ρελέ για οδήγηση της λυχνίας LED
Όπως αναφέρθηκε στο προηγούμενο βήμα, το LED είναι ένα stand-in για το «κουμπί» της πόρτας του γκαράζ. Ωστόσο, ενώ το GPIO μπορεί να τροφοδοτήσει το LED μας, δεν μπορεί να "πατήσει" το κουμπί της πόρτας του γκαράζ μας. Ένα πάτημα κουμπιού ουσιαστικά συνδέει απλώς τους δύο ακροδέκτες κουμπιών, εκτελώντας ουσιαστικά ένα πάτημα κουμπιού. Αυτό που χρειάζεστε για να εκτελέσετε αυτό το "πάτημα" είναι ένα ρελέ.
Ένας ρελέ δεν είναι παρά ένας διακόπτης που τροφοδοτείται από κάτι. Σε αυτή την περίπτωση, το Raspberry Pi μας μπορεί να πει στο ρελέ να "πατήσει" το κουμπί της πόρτας του γκαράζ. Για το πρωτότυπό μας, το Raspberry Pi θα πει στο ρελέ να ανάψει το LED… μόνο για να δοκιμάσουμε το κύκλωμά μας.
Τι πρέπει να γνωρίζουμε για το ρελέ μας:
- Το ρελέ λειτουργεί στα 5V. Αυτή είναι η ισχύς μόνο για τη λειτουργία του ρελέ και δεν χρησιμοποιείται σε κανένα άλλο μέρος του κυκλώματος.
- Θέλουμε να συνδέσουμε το ρελέ μας ως "κανονικά ανοιχτό". Αυτό σημαίνει ότι το ρελέ παραμένει ανοιχτό (δεν συνδέει τα δύο καλώδια ή "πατάει το κουμπί", μέχρι να ενεργοποιηθεί.
- Το συγκεκριμένο ρελέ ενεργοποιείται όταν το GPIO παρέχει μηδενική ισχύ στην υποδοχή 3.3V του ρελέ. Πράγματι, αυτό φαίνεται καθυστερημένο. Όταν παρέχεται 3.3V, το ρελέ απελευθερώνεται. Μείνετε μαζί μας σε αυτό το έργο και θα δείτε πώς λειτουργεί αυτό.
- Οι δύο τερματικές συνδέσεις ρελέ είναι εντελώς ξεχωριστές από το Raspberry Pi. Αυτό σημαίνει ότι μπορείτε να αλλάξετε ένα καλώδιο με οποιοδήποτε ονομαστικό ρεύμα επειδή λαμβάνει το ρεύμα του από άλλη πηγή ισχύος. Το απλό μικροσκοπικό Raspberry Pi με 3.3V και 5V θα μπορούσε πράγματι να λειτουργήσει ένα ρελέ που ελέγχει πολύ μεγαλύτερη τάση. Αυτός είναι ο τρόπος με τον οποίο ένα μικροσκοπικό κουμπί στο ταμπλό σας μπορεί να λειτουργήσει το μεγάλο ρεύμα σας και να τραβήξει θερμαινόμενα καθίσματα.
Ας ξεκινήσουμε λοιπόν.
Πρώτα, συνδέστε ξανά (αλλά απενεργοποιήστε) την εξωτερική μονάδα ισχύος για το breadboard σας. Αυτή η ισχύς θα τρέξει το κύκλωμα LED, ενώ το Raspberry Pi ελέγχει το ρελέ.
Στη συνέχεια, δημιουργήστε μια διακοπή στη γραμμή 3,3V που τροφοδοτεί το LED. (Με διακόπτες και ρελέ, θέλουμε πάντα να αλλάζουμε το "καυτό" και όχι το έδαφος.) Αυτά αναφέρονται με πορτοκαλί και μπλε χρώμα στο διάγραμμα.
Συνδέστε το Raspberry Pi όπως φαίνεται με 5V που τροφοδοτεί το ρελέ, 3,3V λειτουργεί ως διακόπτης και το έδαφος επιστρέφει στο Raspberry Pi. Σε αυτό το παράδειγμα έχω συνδέσει το 3.3V στο GPIO 17. Συνιστώ να συνδέσετε μια αντίσταση 1KΩ στο καλώδιο GPIO όπως φαίνεται, για να προστατεύσετε το GPIO από προβλήματα. (Αυτό αναφέρθηκε στο βήμα Resistors.)
Ενεργοποιήστε το breadboard και τώρα ενεργοποιήστε το Pi σας. Το LED πρέπει να ανάψει.
Τώρα εκτελέστε τις ακόλουθες εντολές στο Pi:
sudo echo "17">/sys/class/gpio/export
sudo echo "out">/sys/class/gpio/gpio17/direction sudo cat/sys/class/gpio/gpio17/value
Η τιμή πρέπει να είναι μηδέν.
Τώρα ας ενεργοποιήσουμε το GPIO:
sudo echo "1">/sys/class/gpio/gpio17/value
Αυτό θα πρέπει να σβήσει το LED.
Βήμα 6: Προσθήκη αντίστασης Pull-Up
Σε αυτό το σημείο, όλα τα αντικείμενά σας πρέπει να λειτουργούν. Αλλά υπάρχει ένα πράγμα που δεν έχουμε συζητήσει σχετικά με τους GPIO, και αυτό είναι η "κυμαινόμενη" τάση που είναι δυνατή με βάση το όριο που αναφέραμε προηγουμένως.
Ενώ τα GPIO έχουν γενικά δύο λογικές καταστάσεις (1 και μηδέν), καθορίζει αυτές τις καταστάσεις με βάση το αν έχει τάση πάνω ή κάτω από το όριο τάσης, όπως αναφέραμε στην ενότητα GPIO. Αλλά το πρόβλημα στα περισσότερα GPIOs είναι η πιθανότητα μιας "κυμαινόμενης" τάσης. στην περίπτωση του Raspberry Pi, κάπου μεταξύ μηδέν και 3,3V. Αυτό μπορεί να συμβεί από παρεμβολές ή από άνοδο/πτώση τάσης σε ένα κύκλωμα.
Δεν θέλουμε μια κατάσταση όπου το ρελέ κουμπιών πόρτας του γκαράζ μας μπορεί απλώς να ενεργοποιηθεί από την κυμαινόμενη τάση. Πράγματι, θέλουμε να ενεργοποιηθεί μόνο όταν το πούμε.
Καταστάσεις όπως αυτή επιλύονται με τη χρήση αντιστάσεων έλξης και έλξης προς τα κάτω για την επιβολή μιας συγκεκριμένης τάσης και την αποφυγή της κυμαινόμενης τάσης. Στην περίπτωσή μας, θέλουμε να βεβαιωθούμε ότι παρέχουμε τάση για να αποτρέψουμε την ενεργοποίηση του ρελέ. Χρειαζόμαστε λοιπόν μια αντίσταση έλξης για να ανεβάσουμε την τάση πάνω από το κατώφλι. (Τα κατώφλια είναι αστεία πράγματα … Προσπάθησα να διαβάσω για αυτά και να δω αν ήταν καλά καθορισμένα και πήρα πολλές πληροφορίες που ήταν πάνω από το κεφάλι μου, και μερικές που φαίνονταν υπερβολικά απλές. Αρκεί να πω ότι με ένα πολύμετρο μπορούσα να το δω η τάση ήταν χαμηλότερη από 3,3V, αλλά επειδή όλα λειτούργησαν όπως τα πρωτοτύπωσα, προχώρησα. Τα χιλιόμετρα σας μπορεί να ποικίλουν και αυτός είναι ο λόγος για τον οποίο το κάνουμε αυτό πριν από τη συγκόλληση του τελικού μας προϊόντος.)
Σίγουρα, το Raspberry Pi διαθέτει εσωτερικές αντιστάσεις έλξης και έλξης που μπορείτε να ρυθμίσετε με κωδικό ή κατά την εκκίνηση. Ωστόσο, είναι πολύ ευαίσθητο σε παρεμβολές. Ενώ είναι δυνατή η χρήση τους, δεδομένου ότι ήδη εργαζόμαστε με αντιστάσεις σε ένα κύκλωμα, ίσως αξίζει τη σταθερότητα να χρησιμοποιούμε το εξωτερικό.
Το πιο σημαντικό, αυτό δημιουργεί το pull-up και προσθέτει αρκετή τάση ώστε η κατάσταση καρφιτσών GPIO να είναι προεπιλεγμένη στο 1 πριν από την εκκίνηση του Pi. Θυμάστε πώς ενεργοποιήθηκε το ρελέ μας, η λυχνία LED άναψε όταν αρχικοποιήσαμε το Pi μέχρι να το κλείσουμε; Η χρήση του pull-up εμποδίζει το ρελέ να ενεργοποιηθεί κατά την εκκίνηση επειδή η είσοδος ρελέ 3.3V λαμβάνει τάση ταυτόχρονα η είσοδος 5V λαμβάνει τάση. Θα μπορούσαμε επίσης να το κάνουμε στη διαμόρφωση Pi αν θέλουμε, αλλά και πάλι, δεδομένου ότι έτσι κι αλλιώς συνδέουμε αντιστάσεις, φαίνεται λιγότερο ευάλωτο σε ενημερώσεις και διανομές λειτουργικού συστήματος.
Διαφορετικές διαμορφώσεις μπορεί να χρειάζονται διαφορετικές αντιστάσεις, αλλά μια αντίσταση 10kΩ δούλεψε με το ρελέ που είχα. Η λυχνία LED στο ρελέ μου ήταν πολύ αμυδρή κατά την εκκίνηση, αλλά το pull-up παρείχε αρκετή τάση για να αποτρέψει την ενεργοποίηση του ρελέ.
Ας προσθέσουμε μια αντίσταση έλξης στο κύκλωμά μας. Στο διάγραμμα του breadboard, πρόσθεσα μια αντίσταση 10kΩ μεταξύ της εισόδου 3.3V στο ρελέ και μιας πηγής 3.3V.
Τώρα έχουμε ένα κύκλωμα κατάλληλο για "πάτημα" του κουμπιού της γκαραζόπορτας. η αντικατάσταση της αντίστασης LED και της αντίστασης 330Ω με τα πραγματικά καλώδια κουμπιών πρέπει να είναι εύκολη.
Βήμα 7: Αισθητήρας διακόπτη καλαμιών
Τόσο υπέροχο, γνωρίζουμε πώς μοιάζει το κύκλωμά μας για να ενεργοποιήσουμε το ανοιχτήρι της γκαραζόπορτας. Ωστόσο, δεν θα ήταν ωραίο να γνωρίζουμε αν η πόρτα του γκαράζ είναι κλειστή ή αν είναι ανοιχτή; Για να το κάνετε αυτό, χρειάζεστε τουλάχιστον έναν διακόπτη καλαμιών. Ορισμένα έργα προτείνουν δύο, αλλά και τα δύο θα χρησιμοποιούν τον ίδιο σχεδιασμό κυκλώματος.
Χρησιμοποιούμε μια διαμόρφωση διακόπτη καλαμιού "κανονικά ανοιχτού" (ΟΧΙ). Αυτό σημαίνει ότι το κύκλωμά μας είναι ανοιχτό μέχρι ο διακόπτης καλαμιών να βρίσκεται κοντά στον μαγνήτη, ο οποίος θα κλείσει το κύκλωμα και θα επιτρέψει τη ροή ηλεκτρικής ενέργειας.
Οι κύριες διαφορές μεταξύ της ρύθμισης του αισθητήρα και της ρύθμισης του ρελέ είναι:
- Το GPIO που είναι συνδεδεμένο στον αισθητήρα θα ανιχνεύσει ισχύ, οπότε θα είναι ένα GPIO εισόδου (ενώ το ρελέ χρησιμοποιούσε GPIO εξόδου που τροφοδοτούσε τάση)
- Επειδή η προεπιλεγμένη κατάσταση υπάρχει ως κανονικά ανοιχτή, αυτό σημαίνει ότι το κύκλωμά μας δεν θα είναι ενεργό. Ως εκ τούτου, η κατάσταση GPIO πρέπει να είναι 0. Αντίστροφα με την έννοια της αντίστασης έλξης στο κύκλωμα ρελέ, θα θέλουμε να βεβαιωθούμε ότι η τάση μας είναι κάτω από το κατώφλι όταν το κύκλωμα είναι ανοιχτό. Αυτό θα απαιτήσει μια αντίσταση αναδίπλωσης. Αυτό βασικά είναι το ίδιο με το pull-up, αλλά συνδέεται με τη γείωση αντί για ρεύμα.
Όπως και το κύκλωμα ρελέ, θα συνδέσουμε τα πράγματα σε μια σανίδα πριν το συνδέσουμε με το Pi.
Ας χρησιμοποιήσουμε την τροφοδοτούμενη πλάκα ψωμιού και σύρμα LED, αντίσταση 330Ω και καλώδιο γείωσης. Στη συνέχεια, συνδέστε 3,3V στη μία πλευρά του διακόπτη καλαμιών και έναν βραχυκυκλωτήρα από την άλλη πλευρά του διακόπτη καλαμιών στο LED. (Εάν έχετε διακόπτη καλαμιών που υποστηρίζει NO και NC, χρησιμοποιήστε τη θέση NO.) Μετακινήστε τον μαγνήτη μακριά από τον διακόπτη καλαμιών και ενεργοποιήστε την ισχύ του breadboard. Το LED πρέπει να παραμείνει σβηστό. Μετακινήστε το μαγνήτη προς τον διακόπτη καλαμιών και η λυχνία LED θα ανάψει. Αν κάνει το αντίθετο, το έχετε ενσύρματο για NC (κανονικά κλειστό)
Βήμα 8: Σύνδεση του διακόπτη Reed στο Pi
Έτσι τώρα που έχουμε το κύκλωμα να λειτουργεί χωρίς το Pi, μπορούμε να αφαιρέσουμε την ισχύ από το breadboard και θα συνδέσουμε το Pi.
Θα χρησιμοποιήσουμε ξανά το GPIO17 επειδή γνωρίζουμε ήδη πού βρίσκεται.
Όπως και το κύκλωμα ρελέ, θα προστατεύσουμε τον πείρο GPIO με αντίσταση 1KΩ. Ωστόσο, θα χρησιμοποιήσουμε μια αντίσταση 10kΩ στη γείωση για να δημιουργήσουμε ένα pull-down.
Μόλις συνδέσουμε τα πάντα, ας απομακρύνουμε τον μαγνήτη από τον διακόπτη καλαμιών, εκκινήστε το P, i και φτάστε σε μια γραμμή εντολών και προετοιμάστε το GPIO, σημειώνοντας ότι αυτή τη φορά δημιουργούμε ένα GPIO εισόδου:
sudo echo "17">/sys/class/gpio/export
sudo echo "in">/sys/class/gpio/gpio17/direction sudo cat/sys/class/gpio/gpio17/value
Η τιμή πρέπει να είναι μηδέν. Μετακινήστε τον μαγνήτη στον διακόπτη καλαμιών. Η λυχνία LED πρέπει να ανάψει και η τιμή είναι 1.
Βοϊλα! Συνδέσαμε τον διακόπτη καλαμιών μας στο Pi!
Βήμα 9: Κάνοντας μια μόνιμη λύση σε έναν πίνακα πρωτοτύπων
Τώρα που γνωρίζουμε πώς πρέπει να μοιάζουν τα κυκλώματά μας, ήρθε η ώρα να κολλήσουμε μια μόνιμη έκδοση σε έναν πίνακα πρωτοτύπων. Δεδομένου ότι χρησιμοποιώ ένα Pi Zero W, απέκτησα μικρούς πίνακες πρωτο.
Σκέφτηκα ότι θα ήταν καλό να χρησιμοποιούσα τη μορφή Zero και να μπορώ να στοιβάζω έναν ή περισσότερους πίνακες, μια πρόσθετη μονάδα που η Raspberry Pi αποκαλεί HAT (Hardware Attached on Top). Λοιπόν, τεχνικά δεδομένου ότι δεν έχει κανέναν τύπο EEPROM και δεν καταχωρείται, δεν είναι ΚΑΠΕΛΟ αλλά πρέπει να το ονομάσω κάτι. Αλλά η μορφή προσαρμόζεται όμορφα και εξαλείφει μια φωλιά αρουραίων καλωδίωσης, οπότε αυτό είναι ωραίο.
Η πρόκληση είναι ότι οι πίνακες πρωτότυπων είναι κάπως μικροί, οπότε δεν μπορείς να χωρέσεις πολύ πάνω τους. Επίσης, καμία από τις τρύπες δεν συνδέεται σε σειρές όπως οι μεγαλύτεροι πίνακες πρωτο. Ενώ αυτό μπορεί να φαίνεται ενοχλητικό, στην πραγματικότητα είναι σωτήριο.
Αυτό που σκέφτηκα ήταν ότι μπορούσα να δημιουργήσω ένα ΚΑΠΕΛΟ για κάθε πόρτα γκαράζ που ήθελα να ελέγξω. Με αυτόν τον τρόπο, θα μπορούσατε να επεκτείνετε αυτό το έργο ανάλογα με τις ανάγκες σας.
Στον πίνακα proto, διαπίστωσα ότι υπήρχε αρκετός χώρος για τη δημιουργία τριών κυκλωμάτων:
- κύκλωμα ρελέ
- κύκλωμα αισθητήρα
- δεύτερο κύκλωμα αισθητήρα
Αυτό είναι πολύ καλό για κάθε έργο πόρτας γκαράζ εκεί έξω.
Αυτό που έκανα ήταν να χρησιμοποιήσω GPIO17 και 27 για τους αισθητήρες και GPIO12 για το ρελέ. Το πραγματικά ωραίο με αυτόν τον πίνακα proto είναι ότι μπορείτε να συνδέσετε το GPIO χωρίς καν να αγγίξετε την κεφαλίδα. Αλλά ναι, θα χρειαστεί να κολλήσετε μια κεφαλίδα στοίβαξης εκτός από τις αντιστάσεις σας (και, προαιρετικά, LED).
Δημιούργησα λίγο πολύ τα κυκλώματα που δημιουργήσαμε πρωτότυπα στον πίνακα. Μπορείτε να πείτε ότι η συγκόλλησή μου δεν είναι τέλεια, αλλά εξακολουθεί να λειτουργεί. (Οι επόμενες σανίδες θα είναι καλύτερες από τότε που έχω κάνει εξάσκηση.) Έχω ένα Aoyue 469 και μια τρίχα πάνω από τη ρύθμιση 4 ήταν η καλύτερη θερμοκρασία βάσει συστάσεων για συγκόλληση της κεφαλίδας GPIO.
Χρησιμοποίησα τις εξωτερικές συνδεδεμένες σειρές για έδαφος και τις εσωτερικές για 3,3V. Και χρησιμοποίησα το καλώδιο αντίστασης για να λειτουργήσω ως γέφυρα αφού δεν είχαμε συνδεδεμένες σειρές. Τα υπόλοιπα είναι όλα διαγώνια και πλάγια γιατί αυτός ήταν ο καλύτερος τρόπος που μπορούσα να βρω για να τα χωρέσω στον πίνακα.
Από το L-R (κοιτώντας μπροστά, την πλευρά της αντίστασης), οι ακίδες εξόδου που πρόσθεσα είναι για το καλώδιο αισθητήρα GPIO, το δεύτερο καλώδιο αισθητήρα GPIO και το καλώδιο ρελέ GPIO. Αντί για καλωδίωση απευθείας στο GPIO, που θα μπορούσαμε να κάνουμε από την κεφαλίδα, αυτές οι ακίδες συνδέονται με όλες τις αντιστάσεις μας και, στην περίπτωση των αισθητήρων, πρόσθεσα ένα microLED. (Σημειώστε πώς βρίσκεται το LED σε έναν εντελώς ξεχωριστό βρόχο, οπότε αν καεί το κύκλωμα εξακολουθεί να λειτουργεί.)
Επισυνάπτεται ένα αρχείο Fritzing, αλλά επειδή το Instructables αντιμετωπίζει προβλήματα με τη μεταφόρτωση αρχείων, έπρεπε να του δώσω μια ψευδή επέκταση "txt" για να το ενσωματώσω.
Βήμα 10: Αναφορές
Raspberry Pi Garage Door Opener Project (η έμπνευση)
Οδηγός Idiot's to a Raspberry Pi Garage Door Opener
iPhone ή Android Garage Door Opener
Πρέπει να χρησιμοποιήσω αντίσταση ή όχι;
Χρησιμοποιώντας αντιστάσεις Pullup και Pulldown στο Raspberry Pi
Ρύθμιση SSH
Διαγράμματα Pin Raspberry Pi.
Εντολές SYSFS
WiringPi
Αντιστάσεις και LED
Καρφίτσες προστασίας GPIO
Αριθμομηχανή κώδικα χρώματος αντίστασης και διάγραμμα
Αντιστάσεις Pull-Up and Pull Down
Κατώφλια τάσης GPIO
Επίπεδα τάσης εισόδου GPIO
GPIO Control στο config.txt
GPIO Pull Up Resisance (sic)
Γιατί χρειαζόμαστε εξωτερικές αντιστάσεις έλξης όταν οι μικροελεγκτές έχουν εσωτερικές αντιστάσεις έλξης;
Τι είναι το Raspberry Pi HAT;
Πώς να συγκολλήσετε το βύσμα Raspberry Pi Zero W GPIO
Συνιστάται:
DIY Smart Garage Door Opener + Home Assistant Integration: 5 βήματα
DIY Smart Garage Door Opener + Home Assistant Integration: Κάντε την κανονική σας γκαραζόπορτα έξυπνη χρησιμοποιώντας αυτό το έργο DIY. Θα σας δείξω πώς να το φτιάξετε και να το ελέγξετε χρησιμοποιώντας το Home Assistant (μέσω MQTT) και θα έχετε τη δυνατότητα να ανοίγετε και να κλείνετε εξ αποστάσεως την πόρτα του γκαράζ σας. Θα χρησιμοποιώ έναν πίνακα ESP8266 που ονομάζεται Wemos
Raspberry Pi Garage Door Opener: 5 Βήματα
Raspberry Pi Garage Door Opener: Το δεκαπεντάχρονο πληκτρολόγιό μας που μας επιτρέπει να ανοίξουμε την πόρτα του γκαράζ πεθαίνει σιγά σιγά, με αρκετά κουμπιά που μόλις καταγράφονται, καθιστώντας δύσκολο για τους εφήβους (ή τους σκύλους μας) να μπουν στο σπίτι όταν ξεχνούν κλειδί. Αντί για ανταπόκριση
Garage Door Opener Using a Raspberry Pi: 5 βήματα (με εικόνες)
Garage Door Opener Χρησιμοποιώντας Raspberry Pi: Ελέγξτε το μοτέρ γκαράζ από smartphone ή οποιαδήποτε συσκευή που μπορεί να περιηγηθεί σε μια ιστοσελίδα (με AJAX!). Το έργο ξεκίνησε καθώς είχα μόνο ένα τηλεχειριστήριο για το γκαράζ μου. Πόσο διασκεδαστικό ήταν να αγοράσεις ένα δεύτερο; Οχι αρκετά. Ο στόχος μου ήταν να μπορώ να ελέγχω και να παρακολουθώ
Raspberry Pi 3 Garage Door Opener: 15 Βήματα (με εικόνες)
Raspberry Pi 3 Garage Door Opener: Δημιούργησα αυτό το διδακτικό το 2014. Έχουν αλλάξει πολλά από τότε. Το 2021, ενημέρωσα το Smart Garage Door Opener εδώ. Χρησιμοποιήστε ένα Raspberry Pi και ένα smartphone για να ανοίξετε, να κλείσετε και να παρακολουθήσετε μια πόρτα γκαράζ. Το άνοιγμα και το κλείσιμο της πόρτας εξασφαλίζεται με τη χρήση
IPhone και Arduino Garage Door Opener: 8 Βήματα
IPhone και Arduino Garage Door Opener: Ακολουθώ συχνά πολλές τεχνικές οδηγίες και είμαι πάντα έκπληκτος με τα πράγματα που έρχονται στους ανθρώπους. Λίγο καιρό πριν, βρήκα έναν οδηγό σε ένα ανοιχτήρι wifi γκαράζ, το οποίο νόμιζα ότι ήταν πραγματικά υπέροχο και το πρόσθεσα στην ατελείωτη λίστα υποχρεώσεων