Botón On/Off para Raspberry Pi
(Basado en el tutorial de howchoo)
Desgraciadamente la Raspberry Pi (ni siquiera en su versión 3) tiene un botón de encendido apagado y el conectar y desconectar el cable de alimentación USB implica un doble riesgo: el producir errores en los ficheros por apagar bruscamente y dañar el conector USB.
Por ello sería ideal si pudiedarmos añadir una manera de inducir un apagado ordenado (shutdown) y un posterior encendido.
Buscando en Internet he visto que los diseñadores ya pensaron en ello permitiendo arrancar desde el estado de Halt (al que se llega desde un shutdown).
Esta funcionalidad hardware permite arrancarla desde el mencionado estado Halt cuando se detecta un estado a 0V del GPIO 3
Por ello el arranque desde este estado Halt es fácil de resolver: basta con conectar un pulsador entre el GPIO 3 y GND (pines 5 y 6). Para ello usaré un pulsador del Squid Combo Pack de MonkMakes (También he utilizado una placa-etiqueta del mismo kit para no liarla en la conexión)
Para el apagado podemos usar un script que vigile (mediante interrupciones para no consumir CPU) el estado del ya usado GPIO 3 y en caso de que detecte que está a 0v ponga la Raspberry en estado Halt (en la imagen también se ve que he añadido un ventilador para mantener la raspberry fresquita en este tórrido verano)
El script (listen-for-shutdown.py) para detectar la pulsación del botón es muy sencillo (tomado del tutorial de howchoo )
#!/usr/bin/env python import RPi.GPIO as GPIO import subprocess GPIO.setmode(GPIO.BCM) GPIO.setup(3, GPIO.IN) GPIO.wait_for_edge(3, GPIO.FALLING) subprocess.call(['shutdown', '-h', 'now'], shell=False)
Ahora damos permisos de ejecución
Si ejecutamos el script con sudo (porque necesitas permisos de administrador para hacer el shutdown) vemos que funciona perfectamente
Si una vez apagada volvemos a pulsar el bton veremos que arranca limpiamente.
Ahora necesitamos que el script se ejecute directamente al arrancar la Raspberry. Para ello debemos copiarlo al directorio adecuado
Y crear el script listen-for-shutdown.sh que lo arranque/pare como servicio
Lo copiamos al directorio donde se guardan los script de arrancan (/etc/init.d)
Sólo nos queda registrar el script para que se inicie en el arranque
Para probarlo arrancamos manualmente el servicio con
Al pulsar el botón por primera vez se apagará y volverá a encenderse cuando se pulse de nuevo
Veamos el consumo cuando está en estado Halt, unos 50mA
Y cuando está en funcionamiento normal, unos 420mA
Todos los scripts se pueden descargar desde el repositorio github de Howchoo
Buen trabajo me ha ayudado mucho tu tutorial. Tengo una duda, ¿que habria que hacer para que el raspberri pi inicie en modo suspendido? Ya que cuando conecto el raspberry a la toma de corriente se enciende automaticamente, me gustaria que se encienda unicamente al presionar el boton. Gracias
Hola, hasta donde yo sé siempre arranca encendida.
Saludos
Hay posibilidad de que no se encienda el raspberry pi automaticamente al conectarlo a la corriente?. A mi raspberry le agregue una bateria de respaldo pero cuando esta totalmente descargada y conecto para cargarla se enciende sola.