Raspberry Pi IL PULSANTE

PREMESSA

Questo è il secondo dei tre articoli previsti sul Raspberry Pi,  relativamente alla ALIMENTAZIONE argomento già trattato nell’articolo precedente LINK , dove è stato presentato l’argomento inerente la corretta alimentazione del Raspberry Pi 3  per un utilizzo H24 anche con interruzioni dell’alimentazione elettrica per diverse ore e in questo articolo, ora, vedremo come sia possibile installare un solo PULSANTE per il Riavvio e lo Spegnimento del Raspberry Pi IL PULSANTE in modo semplice e corretto, il tutto, volendo, segnalato, da un bel LED ROSSO che lampeggia alla pressione del PULSANTE in modo particolare.

Raspberry Pi (tutti) – IL PULSANTE

Ecco l’articolo che ci permetterà di installare sul Raspberry Pi (tutti) “IL PULSANTE” unico e solo per eseguire le funzioni di riavvio o spegnere il sistema. Un solo pulsante, perchè bisogna semplificare le cose in generale, ovviamente sarà necessario anche l’aiuto del software per esemplificare le cose. Vediamo che cosa ci occorre per la realizzazione:

  • Un pulsante normalmente aperto (possiamo recuperare il pulsante di Reset di un vecchio PC che è completo di cavi e connettori)
  • Un LED e una resistenza da 220 ohm 1/4 di W (opzionale, se ne può anche fare a meno)
  • Un piccolo software (pulsante.py) che potrete scaricare da questo LINK e copiare nella cartella /home/pi
  • Per chi vuole eseguire le operazioni di editing e copia dei file in modalità grafica, può installare XFE un programmino che ci permette di editare, copiare, spostare file con i diritti di Root (articolo di riferimento già trattato in questo Blog https://iu8cri.altervista.org/raspberry-pi-installazione-configurazione-s-pulito-diritti-root/ )
  • Un pò di pazienza per la configurazione del software (qualche minuto)

I passaggi successivi sono molto semplici e riguardano il collegamento del pulsante e l’installazione del software e poi dopo un riavvio del Raspberry Pi, si verificano le funzionalità dell’unico PULSANTE.

Installazione del PULSANTE

Vediamo adesso il collegamento del PULSANTE al GPIO del Raspberry Pi, segue la piedinatura e la nomenclatura degli stessi, riferimento per le versioni Pi Modello B/B+ del GPIO.

IL PULSANTE va collegato sul GPIO tra il pin 30 (Ground, massa) e il pin 12 (GPIO18).

Il LED (opzionale) con in serie una resistenza da 220 ohm (rosso-rosso-marrone) va collegato al GPIO tra il pin 6 (Ground, massa)  e il (+) positivo del LED, pin 11 (GPIO17). (Il terminale più lungo del LED è il positivo)

Funzionalità del PULSANTE

Unico e solo “IL PULSANTE” ovviamente avrà delle funzionalità che il software installato gli avrà dato e sono:

  • Per il REBOOT del Raspberry – pressione breve, minore di 3 secondi
  • Per lo SPEGNIMENTO del Raspberry – pressione lunga, maggiore o uguale a 3 secondi

Semplice ed efficace IL PULSANTE .

Funzionalità del LED

Il LED per il REBOOT del Raspberry (pressione breve, minore di 3 secondi) LAMPEGGIA 1 VOLTA e il Sistema Operativo si Riavvia.

IL LED per lo SPEGNIMENTO del Raspberry (pressione lunga, maggiore o uguale a 3 secondi) LAMPEGGIA 3 VOLTE e il Sistema Operativo si Spegne.

Installazione del Software

Passiamo adesso all’installazione del software sul Raspberry Pi. Il file pulsante.py va salvato nella cartella /home/pi

Segue adesso la modalità di attivazione da Terminale:

Modalità Terminale

Per eseguire un test di funzionamento del PULSANTE , possiamo avviare manuale il programma da Terminale:

sudo python /home/pi/pulsante.py

Ci siamo accertati così che il programma pulsante.py funziona, per avviarlo automaticamente ad ogni  avvio del Raspberry Pi, occorre modificare il file /etc/rc.local:

sudo nano /etc/rc.local

editare ed aggiungere, prima dell’ultima riga exit 0  contenuta nel file rc.local, le righe di seguito rappresentate che permetteranno l’avvio automatico del programma pulsante.py:

if [ -f /home/pi/pulsante.py ]; then
    python /home/pi/pulsante.py &
fi
Riavviare il Raspberry Pi e verificare il funzionamento del PULSANTE

Volevo rassicurarvi, che questa configurazione è stata ampiamente provata e collaudata dal sottoscritto, come sarebbe buona abitudine, di pubblicare articoli collaudati e di sicura funzionalità. Per questo motivo mentre stavo eseguendo il collaudo del PULSANTE, ho girato un video “molto amatoriale”, ma chiaro e dimostrativo dell’efficacia della soluzione che ho adottato in questo articolo. Ecco il video presente nel mio canale di YouTube. (In mancanza di una resistenza da 220 ohm, ne ho utilizzate quattro da 1000 ohm in parallelo= 250 ohm)

Buon di tutto, come alcuni colleghi radioamatori auspicano e augurano durante i QSO.

73 da Antonio IU8CRI

P.S. per chi non riesce a scaricare il file pulsante.py, segue il testo contenuto nel file con i comandi necessari in Python. Copiare l’intero testo in un editor di testo e salvare con il nome pulsante.py (assicurarsi che il file abbia esattamente il nome pulsante.py)

import RPi.GPIO as GPIO
import time
import os

def blink(channel, count = 1, timeHigh = 1000, timeLow = 1000):
“””Blink count times, timeHigh milliseconds high, timeLow milliseconds low.”””

if count <= 0:
return

GPIO.output(channel, GPIO.HIGH)
time.sleep(timeHigh / 1000.0)
GPIO.output(channel, GPIO.LOW)

for i in range(count – 1):
time.sleep(timeLow / 1000.0)
GPIO.output(channel, GPIO.HIGH)
time.sleep(timeHigh / 1000.0)
GPIO.output(channel, GPIO.LOW)

led = 17
button = 18

# Init GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(led, GPIO.OUT)
GPIO.setup(button, GPIO.IN, pull_up_down = GPIO.PUD_UP)

GPIO.wait_for_edge(button, GPIO.FALLING)
channel = GPIO.wait_for_edge(button, GPIO.RISING, timeout = 3000)
if channel is None:
blink(led, 3, 500, 500)
print “Shutdown”
os.system(“/sbin/shutdown -h now”)
else:
blink(led, 1, 500)
print “Reboot”
os.system(“/sbin/shutdown -r now”)

GPIO.cleanup()