Πώς συνδέετε ένα κουμπί με το Raspberry Pi;  Ακολουθούν δύο τρόποι για να ξεκινήσετε, επιδεικνύοντας τη χρήση του Python και ενός LED.

2 τρόποι για να προσθέσετε ένα κουμπί στο σχέδιο Raspberry Pi

Διαφήμιση Η εκμάθηση της χρήσης των ακίδων GPIO στο Raspberry Pi σας ανοίγει έναν ολόκληρο κόσμο δυνατοτήτων. Οι βασικές αρχές που έχουν μάθει μέσω αρχαρίων έργων ανοίγουν το δρόμο προς την χρήσιμη γνώση τόσο των ηλεκτρονικών συσκευών DIY όσο και του προγραμματισμού. Αυτό το σεμινάριο θα σας δείξει δύο τρόπους για να προσθέσετε ένα κουμπί στο σχέδιο Raspberry Pi. Το κουμπί θα χρησιμοποιηθεί για τον έλεγχο ενός LED. Γραπτές οδηγίες είναι διαθέσιμες κάτω από το βίντεο.

Διαφήμιση

Η εκμάθηση της χρήσης των ακίδων GPIO στο Raspberry Pi σας ανοίγει έναν ολόκληρο κόσμο δυνατοτήτων. Οι βασικές αρχές που έχουν μάθει μέσω αρχαρίων έργων ανοίγουν το δρόμο προς την χρήσιμη γνώση τόσο των ηλεκτρονικών συσκευών DIY όσο και του προγραμματισμού.

Αυτό το σεμινάριο θα σας δείξει δύο τρόπους για να προσθέσετε ένα κουμπί στο σχέδιο Raspberry Pi. Το κουμπί θα χρησιμοποιηθεί για τον έλεγχο ενός LED. Γραπτές οδηγίες είναι διαθέσιμες κάτω από το βίντεο.

Θα χρειαστείτε

Για να ξεκινήσετε, βεβαιωθείτε ότι έχετε τα παρακάτω στοιχεία:

  • 1 x Raspberry Pi (Οποιοσδήποτε θα το κάνει, το μοντέλο 3B χρησιμοποιείται σε αυτό το σεμινάριο)
  • 1 κουμπιά
  • 1 x LED
  • 1 x 220 Ohm Resistor (Οι υψηλότερες τιμές είναι καλές, η λυχνία LED θα είναι απλώς πιο έντονη)
  • 1 x Breadboard
  • Συνδέστε καλώδια

Μόλις συγκεντρωθούν, θα πρέπει να έχετε στοιχεία που μοιάζουν με αυτό:

Ανταλλακτικά που απαιτούνται για το πλήκτρο Pi

Θα χρειαστείτε επίσης μια κάρτα SD με εγκατεστημένο το λειτουργικό σύστημα Raspbian. Ο πιο γρήγορος τρόπος για να γίνει αυτό είναι με την εικόνα NOOBS (New Out of the Box Software). Οδηγίες για το πώς μπορείτε να το κάνετε αυτό είναι διαθέσιμες σε αυτό το βίντεο:

Ρύθμιση του κυκλώματος

Θα χρησιμοποιήσετε τους ακροδέκτες GPIO της Pi για να κάνετε το κύκλωμα και αν δεν είστε εξοικειωμένοι με αυτούς, ο οδηγός μας για τις ακίδες Raspberry Pi GPIO θα σας βοηθήσει. Το κύκλωμα εδώ είναι σχεδόν το ίδιο όπως στο προηγούμενο έργο Raspberry Pi LED, με την προσθήκη του κουμπιού που χρησιμοποιείτε σήμερα.

Ρυθμίστε το κύκλωμά σας σύμφωνα με αυτό το διάγραμμα:

Fritzing Diagram για το πλήκτρο Pi

  • Οι ακροδέκτες 5v και GND συνδέονται με τις ράγες τροφοδοσίας του breadboard.
  • Η ακίδα 12 (GPIO 18) συνδέεται στο θετικό πόδι της λυχνίας LED.
  • Το ένα σκέλος της αντίστασης συνδέεται με το αρνητικό σκέλος της λυχνίας LED και το άλλο πόδι προσκολλάται στη γείωση του πίνακα.
  • Η ακίδα 16 (GPIO 23) συνδέεται στη μία πλευρά του κουμπιού, η άλλη πλευρά προσκολλάται στη γείωση του πίνακα.

Αφού δημιουργηθεί, πρέπει να δούμε πώς πρέπει να φαίνεται:

Το Raspberry Pi συνδέθηκε με ένα κουμπί και το LED σε ένα πινέλο.

Ελέγξτε το κύκλωμά σας για να βεβαιωθείτε ότι είναι σωστό και μετά ενεργοποιήστε το Raspberry Pi.

Μέθοδος 1: Η βιβλιοθήκη RPi.GPIO

Μόλις εκκινήσετε το Pi, κατευθυνθείτε στο μενού και επιλέξτε Programming> Thonny Python IDE . Θα ανοίξει ένα νέο σενάριο Python. Εάν είστε εντελώς νέοι στην Python, είναι μια μεγάλη γλώσσα για αρχάριους και υπάρχουν πολλά υπέροχα μέρη για να μάθετε περισσότερα για την Python αφού τελειώσετε με αυτό το σεμινάριο!

Thonny Python IDE

Ξεκινήστε εισάγοντας τη βιβλιοθήκη RPi.GPIO και ρυθμίζοντας τη λειτουργία του πίνακα.

 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) 

Τώρα δηλώστε τις μεταβλητές για τους αριθμούς LED και κουμπιών κουμπιών.

 ledPin = 12 buttonPin = 16 

Λάβετε υπόψη ότι από τη στιγμή που έχουμε τη λειτουργία του board στη θέση BOARD χρησιμοποιούμε τους αριθμούς pin και όχι τους αριθμούς GPIO. Εάν αυτό σας προκαλεί σύγχυση, ένα διάγραμμα Raspberry Pi μπορεί να σας βοηθήσει να το ξεκαθαρίσετε.

Το Pin μου

Ρύθμιση του κουμπιού

Ήρθε η ώρα να ρυθμίσετε τις ακίδες GPIO. Ρυθμίστε τον ακροδέκτη LED για έξοδο και τον ακροδέκτη του κουμπιού για είσοδο με αντίσταση έλξης

 GPIO.setup(ledPin, GPIO.OUT) GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

Το κείμενο μετά από το GPIO.IN αναφέρεται στην εσωτερική αντίσταση pull-up του Raspberry Pi. Πρέπει να το ενεργοποιήσετε για να πάρετε μια καθαρή ανάγνωση από το κουμπί. Δεδομένου ότι το κουμπί πηγαίνει στον πείρο γείωσης, χρειαζόμαστε μια αντίσταση pull-up για να κρατήσετε τον ακροδέκτη εισόδου HIGH μέχρι να τον πιέσετε.

Πριν συνεχίσουμε, ας δούμε τις αντιστάσεις pull-up και pull-down.

Διαλείμματα: Ανοίξτε / Τραβήξτε αντιστάσεις

Όταν ρυθμίζετε μια είσοδο GPIO, διαβάζει αυτή την ακίδα για να καθορίσει την κατάσταση της. Σε αυτό το κύκλωμα, πρέπει να διαβάσετε αν μια ακίδα είναι ΥΨΗΛΗ ή ΧΑΜΗΛΗ για να ενεργοποιήσετε τη λυχνία LED όταν πιέσετε το κουμπί. Αυτό θα ήταν απλό αν αυτά ήταν τα μόνα κράτη που μπορεί να έχει ένας πείρος, αλλά, δυστυχώς, υπάρχει ένα τρίτο κράτος: FLOATING .

Ένας πλωτός πείρος έχει μια τιμή μεταξύ υψηλού και χαμηλού, προκαλώντας την εισροή να ενεργεί απρόβλεπτα. Οι αντιστάσεις έλξης / τραβήγματος προς τα κάτω λύνουν αυτό.

Παράδειγμα διαγράμματος αντιστάσεων αντίστασης

Η παραπάνω εικόνα είναι ένα απλοποιημένο διάγραμμα ενός κουμπιού και ενός Raspberry Pi. Ο πείρος GPIO συνδέεται στη γείωση μέσω του κουμπιού. Η εσωτερική αντίσταση έλξης συνδέει τον ακροδέκτη GPIO με την εσωτερική τροφοδοσία Pi. Αυτό το ρεύμα ρέει και ο πείρος ασφαλώς τραβιέται μέχρι το HIGH.

Όταν πιέζετε το κουμπί, ο πείρος GPIO συνδέεται απευθείας με τον ακροδέκτη γείωσης και το κουμπί είναι χαμηλό.

Παράδειγμα διαγράμματος αντίστασης τραβήγματος προς τα κάτω

Οι αντιστάσεις έλξης είναι για το πότε ο διακόπτης είναι συνδεδεμένος στον πείρο τροφοδοσίας. Αυτή τη φορά, η εσωτερική αντίσταση συνδέει τον ακροδέκτη GPIO στη γείωση, κρατώντας το LOW μέχρι να πατήσετε το κουμπί.

Η θεωρία αντίστασης Pull-up και Pull-down προκαλεί σύγχυση με την πρώτη ματιά, αλλά σημαντική γνώση που πρέπει να έχετε όταν εργάζεστε με μικροελεγκτές. Προς το παρόν, αν δεν το καταλαβαίνετε, μην ανησυχείτε!

Ας συνεχίσουμε εκεί που βγήκαμε.

Ο βρόχος προγράμματος

Στη συνέχεια, ρυθμίστε τον βρόχο του προγράμματος:

 while True: buttonState = GPIO.input(buttonPin) if buttonState == False: GPIO.output(ledPin, GPIO.HIGH) else: GPIO.output(ledPin, GPIO.LOW) 

Ο σωστός βρόχος συνεχίζει να τρέχει συνεχώς τον κώδικα μέσα σε αυτόν μέχρι να τελειώσουμε το πρόγραμμα. Κάθε φορά που βγαίνει, ενημερώνει το buttonState διαβάζοντας την είσοδο από το κουμπίPin . Ενώ το κουμπί δεν πιέζεται, παραμένει ΥΨΗΛΟ .

Μόλις πιέσετε το κουμπί, το πλήκτροState γίνεται LOW . Αυτό ενεργοποιεί τη εντολή if, δεδομένου ότι το False είναι το ίδιο με το LOW, και η λυχνία LED ανάβει. Η εντολή else σβήνει την ενδεικτική λυχνία κάθε φορά που το κουμπίPin δεν είναι ψευδές.

Αποθηκεύστε και εκτελέστε το σενάριο σας

Αποθηκεύστε τη δέσμη ενεργειών κάνοντας κλικ στην επιλογή Αρχείο> Αποθήκευση ως και επιλέγοντας ένα όνομα αρχείου. Μπορείτε να εκτελέσετε το σκίτσο κάνοντας κλικ στο πράσινο κουμπί Play στη γραμμή εργαλείων του Thonny.

Πίνακας ελέγχου Thonny

Τώρα πατήστε το κουμπί και η λυχνία LED πρέπει να ανάψει! Πατήστε το κόκκινο κουμπί Stop οποιαδήποτε στιγμή για να σταματήσετε το πρόγραμμα

Δοκιμή πλήκτρων Gif

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

Μέθοδος 2: Βιβλιοθήκη μηδενικών GPIO

Η βιβλιοθήκη RPi.GPIO είναι φανταστική, αλλά υπάρχει ένα νέο παιδί στο μπλοκ. Η βιβλιοθήκη GPIO Zero δημιουργήθηκε από τον διευθυντή κοινότητας Raspberry Pi Ben Nuttall με σκοπό να καταστήσει τον κώδικα απλούστερο και ευκολότερο να το διαβάσει και να γράψει.

Για να δοκιμάσετε τη νέα βιβλιοθήκη, ανοίξτε ένα νέο αρχείο Thonny και εισαγάγετε τη βιβλιοθήκη.

 from gpiozero import LED, Button from signal import pause 

Θα παρατηρήσετε ότι δεν εισήγαγε ολόκληρη τη βιβλιοθήκη. Εφόσον χρησιμοποιείτε μόνο μια λυχνία LED και ένα κουμπί, χρειάζεστε μόνο αυτές τις ενότητες στο σενάριο. Επίσης εισάγουμε Pause από τη βιβλιοθήκη σημάτων, η οποία είναι μια βιβλιοθήκη Python για τη διαχείριση συμβάντων.

Η ρύθμιση των ακίδων είναι πολύ πιο εύκολη με το GPIO Zero:

 led = LED(18) button = Button(23) 

Δεδομένου ότι η βιβλιοθήκη GPIO Zero διαθέτει μονάδες για το LED και το κουμπί, δεν χρειάζεται να ρυθμίσετε εισόδους και εξόδους όπως πριν. Θα παρατηρήσετε ότι αν και οι καρφίτσες δεν έχουν αλλάξει, οι αριθμοί εδώ είναι διαφορετικοί από τους παραπάνω. Αυτό συμβαίνει επειδή ο GPIO Zero χρησιμοποιεί μόνο τους αριθμούς καρφίτσας GPIO (επίσης γνωστούς ως αριθμούς Broadcom ή BCM).

Το υπόλοιπο του σεναρίου είναι μόνο τρεις γραμμές:

 button.when_pressed = led.on button.when_released = led.off pause() 

Η κλήση παύσης () απλά διακόπτει τη δέσμη ενεργειών από την έξοδο όταν φτάσει στο κάτω μέρος. Τα συμβάντα με δύο πλήκτρα ενεργοποιούνται κάθε φορά που πιέζεται και απελευθερώνεται το κουμπί. Αποθηκεύστε και εκτελέστε το σενάριό σας και θα δείτε το ίδιο αποτέλεσμα όπως πριν!

Δύο τρόποι για να προσθέσετε ένα κουμπί στο Raspberry Pi

Από τους δύο τρόπους ρύθμισης του κουμπιού, η μέθοδος GPIO Zero φαίνεται να είναι η ευκολότερη. Ακόμα αξίζει να μάθετε για τη βιβλιοθήκη RPi.GPIO, καθώς οι περισσότεροι αρχάριοι έργα του Raspberry Pi το χρησιμοποιούν. Όσο απλό είναι αυτό το έργο, η γνώση μπορεί να χρησιμοποιηθεί για πολλά πράγματα.

Η χρήση των ακίδων GPIO είναι ένας πολύ καλός τρόπος για να μάθετε και να εφευρίσετε τις δικές σας συσκευές, αλλά απέχει πολύ από ό, τι μπορείτε να κάνετε με το Pi. Ο ανεπίσημος οδηγός μας για το Raspberry Pi Raspberry Pi: Το Ανεπίσημο Tutorial Raspberry Pi: Το Ανεπίσημο Tutorial Είτε είστε ένας σημερινός ιδιοκτήτης Pi που θέλει να μάθει περισσότερα είτε έναν πιθανό κάτοχο αυτής της συσκευής μεγέθους πιστωτικής κάρτας, αυτό δεν είναι ένας οδηγός θέλετε να χάσετε. Διαβάστε περισσότερα είναι γεμάτη με δημιουργικές ιδέες και μαθήματα που μπορείτε να δοκιμάσετε τον εαυτό σας! Για ένα άλλο φροντιστήριο όπως αυτό, δείτε πώς να κάνετε ένα κουμπί Wi-Fi συνδεδεμένο Πώς να φτιάξετε το δικό σας συνδεδεμένο κουμπί Wi-Fi με ESP8266 Πώς να φτιάξετε το δικό σας συνδεδεμένο κουμπί Wi-Fi με ESP8266 Σε αυτό το σεμινάριο, θα μάθετε πώς για να δημιουργήσετε ένα κουμπί με δυνατότητα Wi-Fi χρησιμοποιώντας το NodeMCU και το IFTTT. Διαβάστε περισσότερα .

Εξερευνήστε περισσότερα σχετικά με: DIY Project Tutorials, GPIO, Python, Raspberry Pi.