Página 1 de 1

Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 28 Feb 2017, 23:33
por Pirossi
Actualizado, probado, funciona perfectamente bien :relax1

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)

RP2_Pinout (1).png
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 )
.

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corremper SD

Publicado: 01 Mar 2017, 00:05
por Kactius
Te recomiendo visitar en este mismo foro :
viewtopic.php?f=6&t=1572

CORREMPER cuidado con ese titulo

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corremper SD

Publicado: 01 Mar 2017, 00:33
por Pirossi
Kactius escribió:Te recomiendo visitar en este mismo foro :
viewtopic.php?f=6&t=1572

CORREMPER cuidado con ese titulo
gracias!, corregido el titulo
le echare un vistazo.

por cierto alguien sabe como crear ese script, si se necesita algun programa?
y en que directorio se coloca?

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 01 Mar 2017, 00:35
por drewdty
he encontrado esto para poder apagar dede el mando de la tv
https://www.msldigital.com/collections/ ... -plus-2015
hay que modificar el archivo lircd.conf
segun el mando que tengas

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 01 Mar 2017, 06:09
por Pirossi
Despues de varias horas Probando lo he conseguido
con un boton(switch) y funciona correctamente tanto para apagado asta quedarse en stand by(con la luz roja)
Como para encenderlo con un click.

Para copiar y crear el script he usado droidedit, y despues con ayuda de
Raspmanager he copiado y pegado el fichero.
Todo desde el movil.
Tambien he usado raspmanager para ejecutar comandos.

Funciona fenomenal :relax1


Lo proximo que probare sera que tras tenerlo apretado unos segundos fuerce reinicio, desde el propio boton, sin usar los pines "run'.

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 01 Mar 2017, 22:30
por kikegranada
bueno al menos uno de los problemas entre comillas que le veia a la rasperri que era el tema de reseteo y apagado parece que ya se puede resolver, muchas gracias

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 01 Mar 2017, 23:34
por tenshide
los GPIO negros (GND) son todos iguales verdad? justo el que pones tu lo tengo yo conectado al miniventilador, concretamente al 4 y 6.
saludos!

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 02 Mar 2017, 11:09
por monoculero
Y lo de poner sudo poweroff como comando a ejecutarse desde attract mode al seleccionar exit, también serviría o corrompe la sd?

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 02 Mar 2017, 15:52
por Wiche
Esto me va a venir fenomenal, gracias por el tuto :woow

Re: Boton switch fisico para salir del sistema (stand by) para apagar sin corromper SD

Publicado: 02 Mar 2017, 16:09
por Daking
Muy buen tutorial!! Muchas gracias