[Tutorial ACTUALIZADO] Cómo encender y apagar tu Raspberry a través de un botón.

Sección Unicamente para Tutoriales y Guías
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

Buenas compañeros, ando realizando un proyecto de raspberry + carcasa NES y necesitaba poder apagar y encender la Raspberry a través de un botón.

Según si estemos en Recalbox o Retropie el procedimiento es distinto, así que procedo a explicar los dos.

Buscando encontré un tutorial que explica a la perfección el proceso para poder apagar nuestra plaquita a través del GPIO.
Consiste en la programación de un script en python, y el tutorial en cuestión es el siguiente http://forum.arcadecontrols.com/index.p ... c=147052.0

Aunque está genialmente explicado ahí, paso a ponerlo en español.

Necesitamos:
  • Una Raspberry Pi
  • Un pulsador
  • Dos cables para la conexión entre la Raspberry y el pulsador

Imagen

El pulsador lo tenemos que conectar a los pines 5 y 6 del GPIO. Con el simple hecho de conectar un pulsador en esos pines tendremos la capacidad de poder arrancar la placa a través del botón sin ninguna linea de código extra ni configuración. Sin embargo lo interesante del asunto es poder tanto encender como apagar la raspberry, por lo que el proceso de apagado si que tiene que ser programado a través de un script.
En pocas palabras, el objetivo final es hacer un programilla que la raspberry ejecute al arrancar y que se quede esperando indefinidamente una acción que nosotros le digamos (que en nuestro caso será pulsar el botón). Una vez que se realice esa acción forzamos el apagado de la placa, fácil! :vago

RETROPIE

Lo primero que tenemos que hacer es acceder por SSH a nuestra Raspberry, y una vez dentro ejecutar las siguientes lineas

Código: Seleccionar todo

sudo apt-get update

Código: Seleccionar todo

sudo apt-get -y install python-rpi.gpio
Después, creamos nuestro script con el siguiente comando

Código: Seleccionar todo

sudo nano /home/pi/shutdown.py
y dentro copiamos el siguiente fragmento de código

Código: Seleccionar todo

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(03, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
    print GPIO.input(03)
    if(GPIO.input(03) == False):
        os.system("sudo shutdown -h now")
        break
    time.sleep(1)
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.
Una vez hecho esto y con nuestro script ya programado, tenemos que indicarle a la raspberry que cada vez que arranque tiene que ejecutar este código, para ello tenemos que escribir en crontab a través de la siguiente línea

Código: Seleccionar todo

sudo crontab -e
Si os pregunta, seleccionar la opción 2 (nano).

bajamos hasta el final y escribimos lo siguiente

Código: Seleccionar todo

@reboot sudo python /home/pi/shutdown.py
De nuevo pulsamos Ctrl+X y decimos Y para guardar.

Para finalizar, nos tenemos que asegurar que el script funciona correctamente, por lo que vamos a testear su funcionamiento ejecutando de manera manual el código a través de la siguiente línea

Código: Seleccionar todo

sudo python /home/pi/shutdown.py
Si todo va bien, el código no arrojará ningún error por pantalla y se quedará escuchando a que pulsemos el botón. Si lo pulsamos, la raspberry se debe apagar!

Una vez apagada podemos comprobar que, efectivamente, la raspberry también enciende si pulsamos el botón y... ya tendremos nuestro pulsador de encendido/apagado :D

RECALBOX

En recalbox no tenemos package manager (apt-get), y comandos como sudo no funcionan, ya que digamos es una versión "light" del sistema y no implementa todos los paquetes, por lo que si necesitas instalar alguno tienes que montar la imagen, añadirlo y volver a hacer un build de la imagen. Por suerte el paquete que necesitamos (el de python) ya está instalado, por lo que nos ahorramos este tedioso paso.

Lo primero que tenemos que hacer es acceder por SSH a nuestra Raspberry, y una vez dentro crear nuestro script con el siguiente comando

Código: Seleccionar todo

mkdir pi
cd pi
nano shutdown.py
y dentro copiamos el siguiente fragmento de código

Código: Seleccionar todo

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(03, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
    print GPIO.input(03)
    if(GPIO.input(03) == False):
        os.system("shutdown -h now")
        break
    time.sleep(1)
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.
Una vez hecho esto y con nuestro script ya programado, tenemos que indicarle a la raspberry que cada vez que arranque tiene que ejecutar este código, para ello tenemos que indicar en init.d que tenemos un script que queremos que arranque junto con el sistema.

Para ello lo primero es irse a init.d

Código: Seleccionar todo

cd /etc/init.d
Una vez aquí tenemos que darle permisos de escritura a la carpeta. Como el comando chmod tampoco funciona, la solución pasa por ejecutar

Código: Seleccionar todo

mount -o remount, rw /
Si ejecutamos el comando

Código: Seleccionar todo

ls
vemos como hay una serie de ficheros enumerados desde el 01 hasta el 99. Todo esto son scripts que se ejecutan de manera secuencial al arrancar la placa, teniendo cada uno de ellos una función. Por ejemplo, el S31 arranca emulationstation, el S32 el bluetooth, etc...
Lo que nosotros vamos a hacer es crear un script en la última posición de la lista, para asegurarnos así que ningún otro arranque interfiere en el de nuestro script.

Ejecutamos el siguiente comando

Código: Seleccionar todo

nano S99myscript
y copiamos el siguiente código

Código: Seleccionar todo

#!/bin/sh
#
# Start logging
#

start() {
        python /recalbox/share/system/pi/shutdown.py
}

stop() {
        printf "Stopping shutdown: "
        echo "OK"
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $?
De nuevo pulsamos Ctrl+X y decimos Y para guardar.

Para finalizar, nos tenemos que asegurar que el script funciona correctamente, por lo que vamos a testear su funcionamiento ejecutando de manera manual el código a través de la siguiente línea

Código: Seleccionar todo

/etc/init.d/S99myscript start
Si todo va bien, el código no arrojará ningún error por pantalla y se quedará escuchando a que pulsemos el botón. Si lo pulsamos, la raspberry se debe apagar!

Una vez apagada podemos comprobar que, efectivamente, la raspberry también enciende si pulsamos el botón y... ya tendremos nuestro pulsador de encendido/apagado :D

OPENELEC (KODI)
*TUTORIAL EN CONSTRUCCIÓN*

Os dejo los pasos aún sin explicar:
Instalación y testeo realizado en base a la imagen v11 de kamber (OpenELEC 7.0.1 y Kodi 16.1)
1) Habilitar el paquete RPi.GPIO en kodi yendo a... Sistema/Ajustes/Add-ons/Instalar desde repositorio/OpenELEC Add-ons (unofficial)/Add-ons de programa/RPi.GPIO.
Una vez ahí instalar y habilitar el plugin, posteriormente pulsar en actualizar por si hubiera una actualización. -La versión 7.0.3 es la más reciente a fecha de 09/08-

2) Programar el script:

Código: Seleccionar todo

mkdir /storage/scripts
nano /storage/scripts/shutdown.py
Pegar esta porción de código en el fichero y guardar con Ctrl+X, después Y

Código: Seleccionar todo

import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')
import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(03, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
    print GPIO.input(03)
    if(GPIO.input(03) == False):
        os.system("sudo shutdown -h now")
        break
    time.sleep(1)
Probar con el código

Código: Seleccionar todo

python /storage/scripts/shutdown.py
Si queremos hacer que arranque al encender la placa:

Código: Seleccionar todo

nano /storage/.config/autostart.sh

Código: Seleccionar todo

python /storage/scripts/shutdown.py &
Información sacada del tutorial en Inglés: http://www.barryhubbard.com/raspberry-pi/howto-raspberry-pi-openelec-power-wake-shutdown-button-using-gpio/


Os dejo una foto de las pruebas que estoy realizando ahora mismo con un botón de encendido/apagado, otro de reset y un led :P



EDIT:
Como veo que ya sois varios los que me lo habéis preguntado, os pongo como sería la conexión y programación para el botón de RESET.

Hay dos opciones:

1 - Volver a hacer el tutorial creando un nuevo script (con otro nombre) y cambiando el comando de apagado
(SI ES EN RECALBOX SERÍA SIN EL SUDO)

Código: Seleccionar todo

sudo shutdown -h now
por

Código: Seleccionar todo

sudo shutdown -r now
Obviamente el botón hay que conectarlo en otros dos pines diferentes, por ejemplo al 7 y al 9.
Si lo conectas al 7 y al 9 hay que modificar el script y donde pone GPIO.setup() y GPIO.input() cambiar el 03 por 04, quedando tal que así.

Código: Seleccionar todo

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(04, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
    print GPIO.input(04)
    if(GPIO.input(04) == False):
        os.system("sudo shutdown -r now")
        break
    time.sleep(1)

2 - Conectar (soldando) el botón al puerto RUN de la placa. El puerto RUN son unos agujeritos que se encuentran al lado del GPIO.
Este tipo de reinicio es de tipo hardware, es decir, es como si desconectaras y conectaras la rpi de la corriente, lo cual no es muy recomendable, al menos hacerlo de manera repetida.
Última edición por MrBeaker el 09 Ago 2017, 19:53, editado 8 veces en total.
Avatar de Usuario
Titan
Pi Master
Pi Master
Mensajes: 240
Registrado: 09 Dic 2016, 09:46
Agradecido: 0
Agradecimiento recibido: 3 veces

MrBeaker escribió:Buenas compañeros, ando realizando un proyecto de raspberry + carcasa NES y necesitaba poder apagar y encender la Raspberry a través de un botón.
Buscando encontré un tutorial que explica a la perfección el proceso para poder apagar nuestra plaquita a través del GPIO.
Consiste en la programación de un script en python, y el tutorial en cuestión es el siguiente http://forum.arcadecontrols.com/index.p ... c=147052.0

Aunque está genialmente explicado ahí, paso a ponerlo en español.

Necesitamos:
  • Una Raspberry Pi
  • Un pulsador
  • Dos cables para la conexión entre la Raspberry y el pulsador

Imagen

El pulsador lo tenemos que conectar a los pines 5 y 6 del GPIO. Con el simple hecho de conectar un pulsador en esos pines tendremos la capacidad de poder arrancar la placa a través del botón sin ninguna linea de código extra ni configuración. Sin embargo lo interesante del asunto es poder tanto encender como apagar la raspberry, por lo que el proceso de apagado si que tiene que ser programado a través de un script.
En pocas palabras, el objetivo final es hacer un programilla que la raspberry ejecute al arrancar y que se quede esperando indefinidamente una acción que nosotros le digamos (que en nuestro caso será pulsar el botón). Una vez que se realice esa acción forzamos el apagado de la placa, fácil! :vago

Lo primero que tenemos que hacer es acceder por SSH a nuestra Raspberry, y una vez dentro ejecutar las siguientes lineas
sudo apt-get update
sudo apt-get -y install python-rpi.gpio


Después, creamos nuestro script con el siguiente comando
sudo nano /home/pi/shutdown.py

y dentro copiamos el siguiente fragmento de código

Código: Seleccionar todo

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(03, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
    print GPIO.input(03)
    if(GPIO.input(03) == False):
        os.system("sudo shutdown -h now")
        break
    time.sleep(1)
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.
Una vez hecho esto y con nuestro script ya programado, tenemos que indicarle a la raspberry que cada vez que arranque tiene que ejecutar este código, para ello tenemos que escribir en crontab a través de la siguiente línea
sudo crontab -e

bajamos hasta el final y escribimos lo siguiente
@reboot sudo python /home/pi/shutdown.py

De nuevo pulsamos Ctrl+X y decimos Y para guardar.

Para finalizar, nos tenemos que asegurar que el script funciona correctamente, por lo que vamos a testear su funcionamiento ejecutando de manera manual el código a través de la siguiente línea
sudo python /home/pi/shutdown.py

Si todo va bien, el código no arrojará ningún error por pantalla y se quedará escuchando a que pulsemos el botón. Si lo pulsamos, la raspberry se debe apagar!

Una vez apagada podemos comprobar que, efectivamente, la raspberry también enciende si pulsamos el botón y... ya tendremos nuestro pulsador de encendido/apagado :D

Os dejo una foto de las pruebas que estoy realizando ahora mismo con un botón de encendido/apagado, otro de reset y un led :P

http://oi63.tinypic.com/154c1as.jpg

No me deja adjuntarla por ser demasiado grande :x

Hola, me puedes confirmar que apagando de esta forma no se nos vuelve corrupta la SD, ya que muchos apagados y reset lo hacen forzandolo, es decir, igual que si quitamos la corriente a la Pi.

Entonces mi duda es, con este script hace un apagado correcto de la Pi, mediante software y luego cortando la alimentacion, todo junto?? o solo hace el apagado de software y se queda como en stand-by para luego proceder al encendido nuevamente??

Un saludo y gracias por el tutorial.
viajero33
Pi Alpha
Pi Alpha
Mensajes: 12
Registrado: 09 Ene 2017, 10:21
Agradecido: 0
Agradecimiento recibido: 0

Muchas gracias por el tutorial MrBeaker . Lo he probado y funciona perfecto.
genial.
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

Titan escribió:
MrBeaker escribió:Buenas compañeros, ando realizando un proyecto de raspberry + carcasa NES y necesitaba poder apagar y encender la Raspberry a través de un botón.
Buscando encontré un tutorial que explica a la perfección el proceso para poder apagar nuestra plaquita a través del GPIO.
Consiste en la programación de un script en python, y el tutorial en cuestión es el siguiente http://forum.arcadecontrols.com/index.p ... c=147052.0

Aunque está genialmente explicado ahí, paso a ponerlo en español.

Necesitamos:
  • Una Raspberry Pi
  • Un pulsador
  • Dos cables para la conexión entre la Raspberry y el pulsador

Imagen

El pulsador lo tenemos que conectar a los pines 5 y 6 del GPIO. Con el simple hecho de conectar un pulsador en esos pines tendremos la capacidad de poder arrancar la placa a través del botón sin ninguna linea de código extra ni configuración. Sin embargo lo interesante del asunto es poder tanto encender como apagar la raspberry, por lo que el proceso de apagado si que tiene que ser programado a través de un script.
En pocas palabras, el objetivo final es hacer un programilla que la raspberry ejecute al arrancar y que se quede esperando indefinidamente una acción que nosotros le digamos (que en nuestro caso será pulsar el botón). Una vez que se realice esa acción forzamos el apagado de la placa, fácil! :vago

Lo primero que tenemos que hacer es acceder por SSH a nuestra Raspberry, y una vez dentro ejecutar las siguientes lineas
sudo apt-get update
sudo apt-get -y install python-rpi.gpio


Después, creamos nuestro script con el siguiente comando
sudo nano /home/pi/shutdown.py

y dentro copiamos el siguiente fragmento de código

Código: Seleccionar todo

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setup(03, GPIO.IN, pull_up_down = GPIO.PUD_UP)
while True:
    print GPIO.input(03)
    if(GPIO.input(03) == False):
        os.system("sudo shutdown -h now")
        break
    time.sleep(1)
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.
Una vez hecho esto y con nuestro script ya programado, tenemos que indicarle a la raspberry que cada vez que arranque tiene que ejecutar este código, para ello tenemos que escribir en crontab a través de la siguiente línea
sudo crontab -e

bajamos hasta el final y escribimos lo siguiente
@reboot sudo python /home/pi/shutdown.py

De nuevo pulsamos Ctrl+X y decimos Y para guardar.

Para finalizar, nos tenemos que asegurar que el script funciona correctamente, por lo que vamos a testear su funcionamiento ejecutando de manera manual el código a través de la siguiente línea
sudo python /home/pi/shutdown.py

Si todo va bien, el código no arrojará ningún error por pantalla y se quedará escuchando a que pulsemos el botón. Si lo pulsamos, la raspberry se debe apagar!

Una vez apagada podemos comprobar que, efectivamente, la raspberry también enciende si pulsamos el botón y... ya tendremos nuestro pulsador de encendido/apagado :D

Os dejo una foto de las pruebas que estoy realizando ahora mismo con un botón de encendido/apagado, otro de reset y un led :P

http://oi63.tinypic.com/154c1as.jpg

No me deja adjuntarla por ser demasiado grande :x

Hola, me puedes confirmar que apagando de esta forma no se nos vuelve corrupta la SD, ya que muchos apagados y reset lo hacen forzandolo, es decir, igual que si quitamos la corriente a la Pi.

Entonces mi duda es, con este script hace un apagado correcto de la Pi, mediante software y luego cortando la alimentacion, todo junto?? o solo hace el apagado de software y se queda como en stand-by para luego proceder al encendido nuevamente??

Un saludo y gracias por el tutorial.
Buenas,

Este tutorial realiza el apagado a través de software, es decir, ejecuta la línea de comando shutdown -h now como se puede ver en el script y deja la rpi en standby (con el led rojo de la placa encendido).

En cuanto a si vuelve o no corrupta la SD según he podido leer por otros foros la respuesta es no, al menos según la experiencia de los que han utilizado este tipo de técnica para el apagado. No puedo darte un no rotundo pero vamos, es un apagado por línea de comandos, no cortas la corriente ni dejas procesos abiertos, por lo que más liviano que este... :?:

Me alegro de que os haya gustado.

Saludos.
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

gamusino69 escribió:muchas gracias por el tutorial...yo compre en su momento un cablecito con un boton de encendido y estoy usando eso que no va tampoco mal...aunque lo de poner una carcasa de nes o super nintendo me llama bastante.....gracias!!
Yo también tengo el cable, de hecho lo tengo conectado a la rpi y a veces utilizo el interruptor para apagar 100% la placa, ya que con esto se queda en una especie de stand-by.

Si os gusta la idea de la carcasa NES (impresa mediante impresora 3D para la rpi), puedo decirle al compañero que me la proporcionó que se haga cuenta en el foro y os ponga imágenes y más info. :D
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

viajero33 escribió:Muchas gracias por el tutorial MrBeaker . Lo he probado y funciona perfecto.
genial.
Gracias a ti por probarlo :D
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

@Kike @Jart No se si este es el sitio correcto para el tutorial, lo puse aquí porque el sistema que estoy utilizando es retropie.
Avatar de Usuario
Jart
Pi Beta
Pi Beta
Mensajes: 125
Registrado: 13 May 2016, 20:30
Agradecido: 0
Agradecimiento recibido: 2 veces

@MrBeaker mañana lo muevo al subforo tutoriales y guías de raspberry. :P :P
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

Jart escribió:@MrBeaker mañana lo muevo al subforo tutoriales y guías de raspberry. :P :P
:D :D
Perdón por haber metido la gamba
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

Mil gracias por el fantástico tutorial @MrBeaker muy bien explicado !! No pasa nada hombre, ya lo acabo de mover :victoria

Un abrazo crack!

PD: Te he modificado con tu permiso un poco el tutorial, he puesto los codes correctamente y he agregado la imagen del final ( si te dice que es más grande , debes usar el código "thumbnail")
Si lo puedes soñar, lo puedes hacer
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

Kike escribió:Mil gracias por el fantástico tutorial @MrBeaker muy bien explicado !! No pasa nada hombre, ya lo acabo de mover :victoria

Un abrazo crack!

PD: Te he modificado con tu permiso un poco el tutorial, he puesto los codes correctamente y he agregado la imagen del final ( si te dice que es más grande , debes usar el código "thumbnail")
Muchas gracias Kike.
Claro que sí, ahora está mucho mejor :D
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

gamusino69 escribió:
MrBeaker escribió:
gamusino69 escribió:muchas gracias por el tutorial...yo compre en su momento un cablecito con un boton de encendido y estoy usando eso que no va tampoco mal...aunque lo de poner una carcasa de nes o super nintendo me llama bastante.....gracias!!
Yo también tengo el cable, de hecho lo tengo conectado a la rpi y a veces utilizo el interruptor para apagar 100% la placa, ya que con esto se queda en una especie de stand-by.

Si os gusta la idea de la carcasa NES (impresa mediante impresora 3D para la rpi), puedo decirle al compañero que me la proporcionó que se haga cuenta en el foro y os ponga imágenes y más info. :D
pues lo de la carcasa me llama bastante estaria genial poder ver algunas fotitos mas,muchas gracias por el tutorial...saludos.
He invitado al forero a que se haga cuenta aquí.
Ya ha abierto un hilo en compra/venta mostrando algunas fotos. La calidad de la impresión es muy muy buena.

viewtopic.php?f=61&t=1624
Avatar de Usuario
lino894
Pi Alpha
Pi Alpha
Mensajes: 30
Registrado: 12 Ene 2017, 01:42
Agradecido: 0
Agradecimiento recibido: 0

No sería mas facil y practico apagar nuestra raspberry desde un cable con interruptor como el que muestro en el enlace? ,mas profesional y menos lios de cables ni protoboard...digo yo ,yo solo intendo dar mi opinión. :adios

https://www.aliexpress.com/item-img/Fre ... 9139.html#
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

lino894 escribió:No sería mas facil y practico apagar nuestra raspberry desde un cable con interruptor como el que muestro en el enlace? ,mas profesional y menos lios de cables ni protoboard...digo yo ,yo solo intendo dar mi opinión. :adios

https://www.aliexpress.com/item-img/Fre ... 9139.html#
Yo también tengo ese cable conectado, pero no es lo mismo apagar cortando la corriente que apagar la placa por software...
De todas formas esto necesito hacerlo para el proyecto que llevo entre manos, aunque como te digo también tengo el cable que comentas para que, una vez que esté en Stand-by, poder desconectarla de corriente.
Avatar de Usuario
lino894
Pi Alpha
Pi Alpha
Mensajes: 30
Registrado: 12 Ene 2017, 01:42
Agradecido: 0
Agradecimiento recibido: 0

Si que es verdad que para cortar alimentación a través del cable , primero a de apagarse mediante software con el comando sudo shutdown -h now.
Como tu lo propones sería de una forma mas practica. :silbido
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

lino894 escribió:Si que es verdad que para cortar alimentación a través del cable , primero a de apagarse mediante software con el comando sudo shutdown -h now.
Como tu lo propones sería de una forma mas practica. :silbido
Realmente al estar trasteando con hardware es engorroso por el cableado, pero sería una forma rápida de lo que se debería de hacer normalmente a través del apagado por menú. :D
Avatar de Usuario
Titan
Pi Master
Pi Master
Mensajes: 240
Registrado: 09 Dic 2016, 09:46
Agradecido: 0
Agradecimiento recibido: 3 veces

MrBeaker escribió: Yo también tengo ese cable conectado, pero no es lo mismo apagar cortando la corriente que apagar la placa por software...
De todas formas esto necesito hacerlo para el proyecto que llevo entre manos, aunque como te digo también tengo el cable que comentas para que, una vez que esté en Stand-by, poder desconectarla de corriente.
Una pequeña duda, el apagado por software te la deja en stand-by, y como comentas luego la apagas con el cable, entonces cuando realizas de nuevo el encendido con el cable, te arranca directamente?? o se queda en stand-by y luego pulsando el boton te arranca??
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

Titan escribió:
MrBeaker escribió: Yo también tengo ese cable conectado, pero no es lo mismo apagar cortando la corriente que apagar la placa por software...
De todas formas esto necesito hacerlo para el proyecto que llevo entre manos, aunque como te digo también tengo el cable que comentas para que, una vez que esté en Stand-by, poder desconectarla de corriente.
Una pequeña duda, el apagado por software te la deja en stand-by, y como comentas luego la apagas con el cable, entonces cuando realizas de nuevo el encendido con el cable, te arranca directamente?? o se queda en stand-by y luego pulsando el boton te arranca??
Cuando vuelves a meterle corriente por cable automáticamente se enciende, eso si que no se puede controlar a no ser que sea con un módulo micro USB externo al que lleva la placa. El botón se podría usar para encender si la placa se queda en stand-by y no has desenchufado el cable.
Carlitos_S
Pi Newbie
Pi Newbie
Mensajes: 6
Registrado: 15 Dic 2016, 21:11
Agradecido: 0
Agradecimiento recibido: 0

Me parece muy buen tuto y de bastante utilidad... pero me surge una pregunte, tu puedes hacer cualquiero cosa con la RPi mientas ella esta esperando que pulses el boton, por ejemplo reproduciendo un video, programando, jugando o cualquier cosa no?? Me parece muy util a la hora de que la sd no resulte dañada, tiene menos posibilidades asi, cortando software y posteriormente ya apagas hardware. Por que si una vez que le has dado al boton y se queda en standby, le vuelves a dar, se inicia de nuevo o sigue por donde estaba anteriormente???
Gracias
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

Vaya! Genial tutorial.

Yo lo había hecho según este otro tutorial, donde el script es algo diferente:
import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)

#Using GPIO number 3
GPIO.setup(3, GPIO.IN)

def Shutdown(channel):
	os.system("sudo shutdown -h now")

GPIO.add_event_detect(3, GPIO.FALLING, callback = Shutdown, bouncetime = 2000)

while 1:
	time.sleep(1)
Supongo que al ser el resultado el mismo, si ningún gurú dice lo contrario, serán igual de eficientes y eficaces los dos.

Comentas que también has conectado un led y un botón de reset.. me puede indicar como lo has hecho?

De cara al proyecto que estoy haciendo necesito que la Raspberry no se encienda atomáticamente al darle corriente, sino al darle al botón... sabes como se puede hacer?

Tambien necesito un led que se encienda al ponerse en marcha y se apague al darle al botón. Supongo que el tuto que tenemos en el foro sobre GPIO me servirá, pero por tu experiencia, ¿se desconecta el puerto GPIO al hacer shutdown?

Muchas gracias y felicidades por compartir tu trabajo!
Responder