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

Κουμπί απενεργοποίησης για Raspberry Pi: 3 βήματα
Κουμπί απενεργοποίησης για Raspberry Pi: 3 βήματα

Βίντεο: Κουμπί απενεργοποίησης για Raspberry Pi: 3 βήματα

Βίντεο: Κουμπί απενεργοποίησης για Raspberry Pi: 3 βήματα
Βίντεο: Raspberry Pi Tutorial #009 [greek\ελληνικά] ( Πώς μπορώ να ενεργοποιήσω VNC ) 2024, Νοέμβριος
Anonim
Κουμπί απενεργοποίησης για το Raspberry Pi
Κουμπί απενεργοποίησης για το Raspberry Pi

Το Raspberry Pi είναι μια πολύ χρήσιμη υπολογιστική πλατφόρμα που επιτρέπει τη δημιουργία διαφόρων εφαρμογών έργου IoT/robotics/smart-home/…. Το μόνο πράγμα που δεν έχει, σε σύγκριση με έναν κανονικό υπολογιστή, είναι το κουμπί απενεργοποίησης απενεργοποίησης. Πώς μπορούμε λοιπόν να δημιουργήσουμε ένα μόνοι μας; Εντάξει, ας το κάνουμε μαζί!

Για αυτό το σεμινάριο, θα χρειαστείτε τα ακόλουθα:

  • 1 Raspberry Pi έχει ήδη διαμορφωθεί και είναι έτοιμο για χρήση
  • 1 πλάκα ψωμιού ή κάτι που θα σας επιτρέψει να δημιουργήσετε το ηλεκτρονικό κύκλωμα
  • 1 κουμπί
  • 2 καλώδια βραχυκυκλωτήρων

Εάν δεν έχετε χρησιμοποιήσει ποτέ ένα Raspberry Pi, μπορείτε να δείτε το σεμινάριό μου για το πώς και τι να κάνετε για να το διαμορφώσετε:

www.instructables.com/How-to-Setup-a-Raspberry-Pi-and-Start-Using-It/

Βήμα 1: Ηλεκτρονικό κύκλωμα

Ηλεκτρονικό κύκλωμα
Ηλεκτρονικό κύκλωμα
Ηλεκτρονικό κύκλωμα
Ηλεκτρονικό κύκλωμα
Ηλεκτρονικό κύκλωμα
Ηλεκτρονικό κύκλωμα

Τίποτα εξαιρετικά περίπλοκο εδώ, είναι ένα απλό κύκλωμα. Οι 2 παραπάνω εικόνες εξηγούν την κατασκευή του κυκλώματος. Μπορείτε να χρησιμοποιήσετε όποια καρφίτσα GPIO θέλετε για την είσοδο του κουμπιού, απλώς θα πρέπει να βεβαιωθείτε ότι έχετε ενημερώσει τον κώδικα για να τον αντικατοπτρίζει.

Ας εξηγήσουμε γρήγορα πώς θα λειτουργήσει αυτό:

  • το RED σύρμα μεταφέρει το 3,3V στο ένα άκρο του κουμπιού.
  • το ΜΑΥΡΟ καλώδιο συνδέει το άλλο άκρο του κουμπιού σε ένα Pi GPIO το οποίο θα χρησιμοποιηθεί ως είσοδος.
  • από προεπιλογή το κουμπί είναι ανοιχτό, οπότε δεν υπάρχει τάση που το διαπερνά. Έτσι το ΜΑΥΡΟ καλώδιο είναι στα 0V όταν δεν πατάτε το κουμπί. Αυτό σημαίνει ότι η λογική κατάσταση της εισόδου Pi GPIO είναι 0.
  • όταν πατηθεί το κουμπί, η τάση θα περάσει από αυτό και το ΜΑΥΡΟ καλώδιο θα συνδεθεί με τα 3.3V. Το Raspberry Pi θα δει τότε μια τάση 3,3V στην είσοδό του, που αντιστοιχεί σε μια λογική κατάσταση 1.

Βήμα 2: Κώδικας Python

Κώδικας Python
Κώδικας Python

Τώρα που το κύκλωμα είναι έτοιμο για χρήση, πρέπει να γράψουμε τον κώδικα που θα το τρέξει και χρησιμοποιώ την Python σε περιβάλλον PyCharm εδώ. Διαμόρφωσα το κουμπί για απενεργοποίηση του Raspberry Pi μόνο όταν πιέζεται περισσότερο από 3 δευτερόλεπτα κατά συνέπεια. Ο λόγος που το κάνω είναι ότι είναι πολύ εύκολο να το πιέσεις κατά λάθος και δεν θέλεις να κλείσεις το Pi σου τυχαία.

Η παραπάνω οθόνη εκτύπωσης προέρχεται από το περιβάλλον μου PyCharm και ο κωδικός είναι ο ακόλουθος (με μια μικρή διαφορά στη γραμμή 26 που συνδέεται με άλλο έργο αλλά δεν απαιτείται εδώ):

# Αυτός είναι κωδικός aa για την απενεργοποίηση του Raspberry Pi όταν πατάτε και κρατάτε πατημένο ένα καθορισμένο κουμπί για να απενεργοποιήσετε το Raspberry PiGPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) # Broadcom pin-αρίθμηση σχήματος button_poweroff, GPIO. RISING) έναρξη = time.time () time.sleep (0.2) # Εναλλαγή κατάργησης ενώ GPIO.input (button_poweroff) == 1: time.sleep (0.01) μήκος = time.time () - έναρξη εάν μήκος > hold_time: os.system ("sudo poweroff")

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

button_poweroff = GPIO_X # Ενημέρωση με το σωστό GPIO που χρησιμοποιείται στο κύκλωμά σας

Επίσης, η μεταβλητή hold_time σάς επιτρέπει να τροποποιήσετε τον χρόνο αναμονής που προκαλεί το κλείσιμο του Pi.

Βήμα 3: Πώς να ξεκινήσετε αυτόματα το σενάριο μετά τη διαδικασία εκκίνησης

Πώς να ξεκινήσετε αυτόματα το σενάριο μετά τη διαδικασία εκκίνησης
Πώς να ξεκινήσετε αυτόματα το σενάριο μετά τη διαδικασία εκκίνησης
Πώς να ξεκινήσετε αυτόματα το σενάριο μετά τη διαδικασία εκκίνησης
Πώς να ξεκινήσετε αυτόματα το σενάριο μετά τη διαδικασία εκκίνησης

Τώρα που έχουμε έτοιμο τον κώδικα, πρέπει απλώς να τον εκτελέσουμε. Όμως, θα ήταν βολικό αν μπορούσαμε να εκτελέσουμε αυτό το σενάριο κάθε φορά που ξεκινά το Pi, με αυτόματο τρόπο, οπότε το κουμπί θα λειτουργούσε χωρίς εμάς να εκτελούμε το σενάριο κάθε φορά. Υπάρχουν πολλοί τρόποι για να το κάνετε αυτό. Έχω προσθέσει εδώ μια γραμμή στο αρχείο rc.local που βρίσκεται στο φάκελο / etc / του Pi σας. Εκτελείται ως μέρος της ακολουθίας εκκίνησης.

Πρέπει να ανοίξετε μια γραμμή εντολών και να πληκτρολογήσετε τις ακόλουθες εντολές (1η οθόνη εκτύπωσης παραπάνω):

cd /

cd κλπ sudo nano rc.τοπικό

Η πρώτη εντολή θα σας μεταφέρει από τον κατάλογο /home /pi στον ριζικό, που είναι /.

Στη συνέχεια, η δεύτερη εντολή θα σας μεταφέρει στον κατάλογο / etc /.

Τέλος, το τρίτο θα ανοίξει το αρχείο rc.local ως υπερχρήστης, με πλήρη δικαιώματα επεξεργασίας, τα οποία χρειάζεστε για να τροποποιήσετε το αρχείο.

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

# Προσθέστε αυτήν τη γραμμή στο αρχείο rc.local για να ξεκινήσει το σενάριο

sudo python /home/pi/Documents/shutdown_with_hold.py &

Υπάρχουν μερικά πράγματα που πρέπει να προσέξετε, εδώ:

  1. το όνομα του αρχείου σας: στην παραπάνω γραμμή, υποθέτω ότι το αρχείο είναι shutdown_with_hold.py. Αλλά μπορεί να είναι ό, τι θέλετε, απλώς ενημερώστε το όνομα με το δικό σας.
  2. όπου έχετε αποθηκεύσει το αρχείο σας: στην παραπάνω γραμμή, υποθέτω ότι είναι αποθηκευμένο στον κατάλογο σας/home/pi/Documents. Αλλά και πάλι, μπορεί να είναι οπουδήποτε. Απλά πρέπει να βεβαιωθείτε ότι έχετε βάλει την απόλυτη διαδρομή στο αρχείο σας εδώ.
  3. ο χαρακτήρας "&" στο τέλος του: αυτό είναι σημαντικό και επιτρέπει την εκτέλεση αυτής της εντολής στο παρασκήνιο

Και αυτό είναι! Έτσι, τώρα, το σενάριο θα εκτελείται κάθε φορά που το Pi σας θα είναι ενεργοποιημένο και θα πρέπει απλώς να πατήσετε πάνω από 3 δευτερόλεπτα στο κουμπί για να το απενεργοποιήσετε.

Συνιστάται: