pulsante di accensione Raspberry
Anzitutto perché un pulsante di accensione Raspberry Pi è importante?
Il Raspberry è un vero e proprio computer e tirare via un cavo ad un computer per spegnerlo non è mai una buona idea. Specialmente poi se il SO si trova su una scheda SD. Si potrebbe verificare una grave corruzione dei dati e, in alcuni casi, un danneggiamento fisico della scheda SD.
In realtà è sempre possibile collegarsi al nostro raspberry via ssh, se si tratta di un’installazione senza interfaccia grafica, e dare il comando di spegnimento che daremmo in ogni versione di linux :shutdown -h now.
Nel nostro caso invece implementeremo una soluzione via HW mediante un pulsante. Occorre però capire che quando “spegniamo” il Pi, il pulsante lo manderà in uno stato di arresto che consuma ancora una quantità molto piccola di energia e da cui possiamo risvegliarlo ripremendo il pulsante.
Non c’è molto da costruire per realizzare questa soluzione. Basterà mettere un pin del pulsante sul pin 5 e l’altro sul pin6 del Raspberry. In poche parole premendo il pulsante, cortocircuiteremo i pin 5 e 6 (GPIO3 e GND) e questo riattiverà il Pi da uno stato di arresto.
Per attivare la funzione di spegnimento, dobbiamo scrivere poche righe di codice python.
Creaiamo un file python chiamandolo ad esempio off.py.
Dentro copiamo il seguente codice:
#!/usr/bin/python from gpiozero import Button from subprocess import check_call from signal import pause def shutdown(): check_call(['sudo', 'poweroff']) shutdown_btn = Button(3, hold_time=2) shutdown_btn.when_held = shutdown pause()
Adesso facciamo in modo che questo script venga riavviato alla partenza.
Apriamo rc.local sudo nano /etc/rc.local
e prima della riga exit 0 immettiamo python /home/pi/off.py &
La & provvederà a avviare lo script in background.
Se state usando il raspberry per retrogaming e avete installato una delle varie console, potrete utilizzare i file di configurazione della console per realizzare un bottone di
spegnimento e accensione, senza scrivere una riga di codice.
Ad esempio in recalbox basta andare nel file di configurazione recalbox.conf che si trova in /recalbox/share/system/
e decommentare la riga system.power.switch=PIN56ONOFF
Di seguito colleghiamo un pin del bottone al GPIO3 (il quinto gpio dall’alto a sinistra) e l’altro a terra alla sua destra (il sesto gpio). In questo modo avremo ottenuto un bottone di ON/OFF per recalbox.
Nella mia soluzione ho inserito anche un led che rimane acceso durante il normale funzionamento del Raspberry e si spegne quando il Raspberry resta spento.
Questo permette, in assenza di collegamento ad un monitor, di capire se il Raspberry è effettivamente spento, consentendo di staccare la spina, operazione questa sempre raccomandata se volete fare delle modifiche HW o semplicemente non usarlo per un po’.