
Como ya sabeis, apagar la Raspberry Pi “en caliente”, es decir, tirando del cable de alimentación o apagando el interruptor de la regleta donde esté conectada sin cerrar antes el sistema operativo hará que el sistema de archivos acabe corrompiéndose ya que existen una serie de procedimientos críticos que se realizan a nivel de software en el momento de cierre del sistema.
Os dejo el tutorial en el que se indica como montar un botón de encendido/apagado en la Raspberry Pi, pero lo mejor de todo es que podemos modificar el comando que se ejecutará al presionar el botón asi que podemos darle cualquier uso que imaginemos.
Cableado y montaje
Para montar el botón necesitais un boton del tipo switch, y 2 cables de conexion para econectar 2 de las patillas del switch a los pines correspondientes gpio.
Se conectan al pin 5 y 6 del gpio
El pin5 corresponde a gpio3 y el pin6 a gnd(masa)
Script Python
Una vez montado el esquema nos faltará iniciar un pequeño script en Python que detectará las pulsaciones del botón y lanzará el comando de apagado o de reiniciado de nuestra Raspberry Pi.
Antes de empezar con el script, teneis que entrar en modo terminal y escribir un par de comandos para actualizar paquetes:
--------------------------------------------------------------
sudo apt-get update
(Esperamos a que termine el proceso e introducimos el siguiente)
sudo apt-get -y install python-rpi.gpio
(Dejamos que actualice y termine)
-------------------------------------------------------------
A continuacion os muestro nuestro script de apagado. En la línea 11 podeis ver “sudo halt” que es el comando para apagar la Raspberry, lo podeis cambiar por “sudo reboot” o cuaquier otro comando que querais ejecutar cuando se presione el botón.
-------------------------------------------------------------------------------------------------------------
Aqui teneis el script phyton optimizado para que consuma la menos cpu posible.
--------------------------------------------------------------
from subprocess import call
import RPi.GPIO as gpio
def loop():
raw_input()
def shutdown(pin):
call('halt', shell=False)
gpio.setmode(gpio.BOARD)
gpio.setup(3, gpio.IN)
gpio.add_event_detect(3, gpio.RISING, callback=shutdown, bouncetime=200)
loop()
--------------------------------------------------------------
Os dejo una breve esplicacion de cada parte del codigo del script despues de la #
[nfo]# Importamos los modulos para enviar comandos al sistema y acceder a los pines GPIO
from subprocess import call
import RPi.GPIO as gpio
# Definimos una funcion para que el script no se detenga
def loop():
raw_input()
# Definimos una funcion que se ejecutará cuando se llame a la interrupción
def shutdown(pin):
call('halt', shell=False)
gpio.setmode(gpio.BOARD) # Ponemos la placa en modo BOARD
gpio.setup(3, gpio.IN) # Configuramos el pin5 como entrada
# Configuramos una interrupción para cuando se aprete el boton
gpio.add_event_detect(3, gpio.RISING, callback=shutdown, bouncetime=200)
loop() # Iniciamos la función para que el script siga en marcha[/nfo]
--------------------------------------------------------------------------------------------------------------------
Para iniciar el script tan solo debemos escribir en el terminal:
--------------------------------------------------------------
[nfo]sudo python shutdown.py[/nfo]
--------------------------------------------------------------
O en su defecto en la ruta en la que lo hayais metido dentro de la sd .
devereis de poner:
sudo python laruta/laruta/shutdown.pi
*Laruta seria el nombre de los directorios o carpetas donde se encuentre el archivo
Shutdown.py que habeis guardado en la sd de la raspberry previamente.
------------------------------------------
Apartir de este momento, ya funciona el boton" y podeis apagar y encender la raspberry :woow
Automatización
El problema de este sistema esta en que deberemos iniciar el script manualmente desde consola cada vez que arranquemos la Raspberry asi que vamos a automatizar el proceso. Abrimos un terminal y escribimos:
---------------------------------------------------------------------------------------
[nfo]sudo nano python /etc/rc.local[/nfo]
--------------------------------------------------------------------------------------
Una vez abierto escribimos “sudo python shutdown.py” justo antes de “exit 0”
(O en su defecto la ruta en la que tengamos el archivo shutdown.py)quedando asi:
-----------------------------------------------------------------------------------------
[nfo]sudo python shutdown.py
exit 0[/nfo]
-----------------------------------------------------------------------------------------
Ahora podemos reiniciar o apagar nuestra Raspberry Pi sin problemas ya que la proxima vez que arranque se iniciará automaticamente el script.
Quien se anime a probarlo o a aportar mas informacion , mejoras al respecto, sera bien recivido y de ayuda para todos los usuarios.[/b]
Espero que os guste!!!!!,me ha costado hacerlo funcionar y poder acomodar el texto para que sea entendible para todos, a pesar de que el propio script lo he encontrado en otra pagina, he querido compartirlo ,experimentar y hacerlo lo mas comprensible posible para todos, es flipante que se pueda hacer algo asi cuando venden modulos de apagado por unos 20 pavos!!
Agradecimientos a fpaez (Parte de la informacion encontrada en su pagina, cualquier inconveniente se pueden poner en contacto con migo atraves de un mp en este mksmo foro ) .