Sommario:

Pulsante di spegnimento per Raspberry Pi: 3 passaggi
Pulsante di spegnimento per Raspberry Pi: 3 passaggi

Video: Pulsante di spegnimento per Raspberry Pi: 3 passaggi

Video: Pulsante di spegnimento per Raspberry Pi: 3 passaggi
Video: raspberry pi wake on gpio - come risvegliare il vostro raspberry con un bottone 2024, Dicembre
Anonim
Pulsante di spegnimento per Raspberry Pi
Pulsante di spegnimento per Raspberry Pi

Il Raspberry Pi è una piattaforma di elaborazione molto utile che consente di creare varie applicazioni di progetto IoT/robotica/casa intelligente/…. L'unica cosa che non ha però, rispetto a un normale computer, è un pulsante di spegnimento e spegnimento. Quindi, come possiamo crearne uno noi stessi? Va bene, facciamolo insieme!

Per questo tutorial, avrai bisogno di quanto segue:

  • 1 Raspberry Pi già configurato e pronto all'uso
  • 1 breadboard o qualcosa che ti permetta di creare il circuito elettronico
  • 1 pulsante
  • 2 ponticelli

Se non hai mai usato un Raspberry Pi, puoi dare un'occhiata al mio tutorial su come e cosa fare per configurarlo:

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

Passaggio 1: circuito elettronico

Circuito elettronico
Circuito elettronico
Circuito elettronico
Circuito elettronico
Circuito elettronico
Circuito elettronico

Niente di super complicato qui, è un circuito abbastanza semplice. Le 2 immagini sopra spiegano la costruzione del circuito. Puoi utilizzare qualsiasi pin GPIO che desideri per l'input del pulsante, dovrai solo assicurarti di aggiornare il codice per riflettere ciò.

Spieghiamo rapidamente come funzionerà:

  • il filo ROSSO sta portando i 3,3 V a un'estremità del pulsante.
  • il cavo NERO sta collegando l'altra estremità del pulsante a un Pi GPIO che verrà utilizzato come input.
  • per impostazione predefinita il pulsante è aperto, quindi non c'è tensione che lo attraversa. Quindi il cavo NERO è a 0V quando il pulsante non è premuto. Ciò significa che lo stato logico dell'ingresso Pi GPIO è 0.
  • quando il pulsante verrà premuto, la tensione lo attraverserà e il cavo NERO sarà collegato al 3.3V. Il Raspberry Pi vedrà quindi una tensione di 3,3 V al suo ingresso, corrispondente a uno stato logico di 1.

Passaggio 2: codice Python

Codice Python
Codice Python

Ora che il circuito è pronto per essere utilizzato, dobbiamo scrivere il codice che lo eseguirà e qui sto usando Python in un ambiente PyCharm. Ho configurato il pulsante per spegnere il Raspberry Pi solo quando viene premuto per più di 3 secondi di conseguenza. Il motivo per cui lo sto facendo è che è molto facile averlo premuto accidentalmente e non vuoi spegnere il tuo Pi per sbaglio.

La schermata di stampa sopra proviene dal mio ambiente PyCharm e il codice è il seguente (con una piccola differenza sulla riga 26 che è collegata a un altro progetto ma non richiesta qui):

# Questo è un codice per spegnere il Raspberry Pi quando si tiene premuto un pulsante definito# Il modulo esterno importsimport RPi. GPIO as GPIOimport timeimport os# Pin Raspberry Pi e definizioni delle variabili &hold_time = 3 # Tempo di attesa in sec per poweroffbutton_poweroff = 1 # Pulsante per disattivare Raspberry PiGPIO.setwarnings(False)GPIO.setmode(GPIO. BCM) # Schema di numerazione dei pin BroadcomGPIO.setup(button_poweroff, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) # Pulsante impostato come inputwhile True: GPIO.wait_for_edge(button_poweroff, GPIO. RISING) start = time.time() time.sleep(0.2) # Commuta l'antirimbalzo while GPIO.input(button_poweroff) == 1: time.sleep(0.01) length = time.time() - inizia se lunghezza > hold_time: os.system("sudo poweroff")

La prima cosa, se hai collegato il pulsante a un altro GPIO, è aggiornare la riga 11 sulla schermata di stampa sopra con il relativo input GPIO:

button_poweroff = GPIO_X # Aggiorna con il GPIO corretto utilizzato sul tuo circuito

Inoltre, la variabile hold_time consente di modificare il tempo di attesa che attiva lo spegnimento del Pi.

Passaggio 3: come avviare automaticamente lo script dopo la procedura di avvio

Come avviare lo script automaticamente dopo la procedura di avvio
Come avviare lo script automaticamente dopo la procedura di avvio
Come avviare lo script automaticamente dopo la procedura di avvio
Come avviare lo script automaticamente dopo la procedura di avvio

Ora che abbiamo il codice pronto, non ci resta che eseguirlo. Ma sarebbe conveniente se potessimo eseguire questo script ogni volta che il Pi si avvia, in modo automatico, in modo che il pulsante funzioni senza di noi per eseguire lo script ogni volta. Ci sono molti modi per farlo. Ho aggiunto qui una riga nel file rc.local che si trova nella cartella /etc/ del tuo Pi. Viene eseguito come parte della sequenza di avvio.

Devi aprire una riga di comando e digitare i seguenti comandi (prima schermata di stampa sopra):

cd /

cd ecc sudo nano rc.local

Il primo comando ti porterà dalla tua directory /home/pi a quella di root, che è /.

Il secondo comando ti porterà quindi alla directory /etc/.

Infine, il terzo aprirà il file rc.local come superutente, con diritti di modifica completi, necessari per modificare il file.

Una volta nel file, devi solo aggiungere una riga alla fine, ma prima dell'istruzione exit 0 (seconda schermata di stampa sopra):

# Aggiungi questa riga al file rc.local per avviare lo script

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

Ci sono alcune cose a cui devi prestare attenzione, qui:

  1. il nome del tuo file: nella riga sopra, presumo che il file sia shutdown_with_hold.py. Ma potrebbe essere quello che vuoi, aggiorna il nome con il tuo.
  2. dove hai salvato il tuo file: nella riga sopra, presumo che sia salvato nella tua directory /home/pi/Documents. Ma ancora una volta, può essere ovunque. Devi solo assicurarti di inserire il percorso assoluto del tuo file qui.
  3. il carattere "&" alla fine: questo è importante e consente a questo comando di essere eseguito in background

E questo è tutto! Quindi ora, lo script verrà eseguito ogni volta che il tuo Pi sarà acceso e dovrai solo premere più di 3 secondi sul pulsante per spegnerlo.

Consigliato: