Vi illustro qui di seguito una soluzione efficiente e funzionale proposta da Adafruit.
Per fare ciò vi basterà installare il software eseguendo da terminale i seguenti comandi:
Codice: Seleziona tutto
git clone git://github.com/adafruit/Adafruit-GPIO-Halt
cd Adafruit-GPIO-Halt
make
sudo make install
Per rendere automatico l'avvio la procedura sarà diversa a seconda della versione di Raspbian che stiamo utilizzando
RASBIAN WHEEZY
Con Raspbian Wheezy, andremo ad editare il file rc.local:
Codice: Seleziona tutto
sudo nano /etc/rc.local
aggiungendo la seguente riga prima della riga ‘exit 0’
Codice: Seleziona tutto
/usr/local/bin/gpio-halt 21 &
Riavviamo ora il raspberry
Codice: Seleziona tutto
sudo reboot
RASPBIAN JESSIE o STRETCH
In questo caso l'avvio automatico dovrà avvenire tramite systemd.
Andiamo a creare il relativo file del servizio
Codice: Seleziona tutto
sudo nano /lib/systemd/system/gpio-halt.service
inseriamo nel file:
Codice: Seleziona tutto
[Unit]
Description=Short pins 21 and ground to shutdown the Pi
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/local/bin/gpio-halt 21 &
[Install]
WantedBy=multi-user.target
CTRL+O per salvare e CTRL+X per uscire
Rendiamo ora eseguibile lo script:
Codice: Seleziona tutto
sudo chmod 644 /lib/systemd/system/gpio-halt.service
Ed ora abilitiamo lo script:
Codice: Seleziona tutto
sudo systemctl daemon-reload
sudo systemctl enable gpio-halt.service
Riavviamo ora il raspberry
Codice: Seleziona tutto
sudo reboot
Basterà quindi collegare un pulsante NO (normalmente aperto) fra il pin GPIO scelto e GND per ottenere il risultato desiderato.
Semplice no ?

Se per qualche motivo volete disabilitare l'avvio automatico al boot:
Codice: Seleziona tutto
sudo systemctl disable gpio-halt.service
sudo reboot
NOTA:
il pin GPIO utilizzato di default da questo software è il GPIO21 perchè è l'ultimo pin del connettore GPIO e presenta a lato il pin GND a cui collegare l'altro capo del pulsante.
E' però possibile utilizzare un qualsiasi altro GPIO semplicemente sostituendo il numero 21 indicato sopra con il relativo numero del pin che desideriamo utilizzare.
Se ad esempio utilizzate un vecchio raspberry con il connettore GPIO a 26 pin anzichè il nuovo connettore a 40 pin, sarà altrettanto comodo utilizzare il GPIO7 in sostituzione del GPIO21, come indicato nella seguente immagine: