[Tutorial ACTUALIZADO] Cómo encender y apagar tu Raspberry a través de un botón.
Estoy haciendo un par de consolas retro y no me había planteado mucho eso de ponerle botón de encendido y reset pero gracias a este tutorial lo voy a hacer, son para regalar y es la primera vez que toco una rpi, pero me ha resultado super sencillo.
Muchas gracias.
También le voy a hacer las carcasas en 3D y las voy a personalizar con el nombre de cada uno, cuando las tenga puedo poner fotos y si alguien esta interesado puede encargarmelas puesto que tengo una impresora.
Por cierto, he visto que el boton de reset dices que es por hardware. ¿No podría hacerse el mismo script pero que cada vez que pulses el botón te lo haga por software? Por ejemplo que te haga el sutdown -h y despues el encendido en la misma interrupción? no entiendo mucho de esto y puede que este diciendo algo sin sentido.
- MrBeaker
- Pi Master
- Mensajes: 277
- Registrado: 27 Dic 2016, 15:26
- Agradecido: 1 vez
- Agradecimiento recibido: 0
Sí! Si que se puede hacer por software tambien! Si no me equivoco seria justo igual pero con shutdown -r now. Habria que cambiar tambien el pin del GPIO al que se conecta el boton para poder el de apagado y reset conectados a la vez.wanda escribió:Buenaas.
Estoy haciendo un par de consolas retro y no me había planteado mucho eso de ponerle botón de encendido y reset pero gracias a este tutorial lo voy a hacer, son para regalar y es la primera vez que toco una rpi, pero me ha resultado super sencillo.
Muchas gracias.
También le voy a hacer las carcasas en 3D y las voy a personalizar con el nombre de cada uno, cuando las tenga puedo poner fotos y si alguien esta interesado puede encargarmelas puesto que tengo una impresora.
Por cierto, he visto que el boton de reset dices que es por hardware. ¿No podría hacerse el mismo script pero que cada vez que pulses el botón te lo haga por software? Por ejemplo que te haga el sutdown -h y despues el encendido en la misma interrupción? no entiendo mucho de esto y puede que este diciendo algo sin sentido.
- MrBeaker
- Pi Master
- Mensajes: 277
- Registrado: 27 Dic 2016, 15:26
- Agradecido: 1 vez
- Agradecimiento recibido: 0
Hola! Tendrias que poner, en principio, los de recalbox, ya que en este caso kodi esta instalado en base a este.VictorGM95 escribió:Hola, no sabía si dejar el comentario aquí, o en el post de la imagen, así que lo dejaré por aquí también:
El caso es que he instalado una imagen preconfigurada con Kodi y recalbox (inicia por defecto en kodi). Y no se qué comandos utilizar (los e kodi o recalbox) o si es indiferente.
Un saludo y gracias por el tutorial.
Saludos!
- MrBeaker
- Pi Master
- Mensajes: 277
- Registrado: 27 Dic 2016, 15:26
- Agradecido: 1 vez
- Agradecimiento recibido: 0
Hola!!wanda escribió:Estoy haciendo dos consolas retro con la rpi y utilizando retroprie, y quiero ponerle los botones de on/off y reset, el de on/off ya lo tengo configurado pero eso de que el reset sea por hardware no me gusta nada. En mi respuesta dijiste que tengo que conectar los pines de ambos botones al mismo para que hagan el off(o eso entendi) y me gustaría saber cual es ese pin puesto que para el on/off utilizas los pines 5 y 6, supongo que te refieres al 6 que es GND pero no estoy segura. Tampoco se si el pin que has utilizado en el post para el reset lo hace por hardware por defecto y tendría que cambiarlo.
- Cada botón tiene dos patillas. Una de esas patillas tiene que ser una GND (tierra) del GPIO. Hay muchos pines de GND, como por ejemplo el pin 6. Este pin es el que utilizamos para el botón de apagado y encendido, por lo que si quisieras conectar un botón extra tendrías que utilizar otro pin distinto de GND, como por ejemplo el 9.
Aquí te dejo el link a la imagen del GPIO para que sepas identificarlos.
https://www.element14.com/community/ser ... 3_gpio.png
Ya tenemos una patilla del nuevo botón conectada, ahora falta la otra... ¿cuál es? en principio y si no me equivoco la que quieras siempre que no sea una GND. Puede ser por ejemplo el pin 3.
Así pues, el nuevo botón irá conectado a los pines 3 y 9 por ejemplo.
Llegados a este punto ya tenemos todo conectado, pero tenemos que decirle a la placa que cuando pulsemos el nuevo botón se reinicie, y para ello hay que programar un script nuevo.
Si te fijas en la imagen que te he puesto más arriba, el pin 5 se llama GPIO03 y el pin 3 GPIO02.
Los pasos para programar el nuevo script serían exactamente los mismos que los que indico en el tutorial, con la salvedad de que ahora en vez de decirle que escuche eventos del pin 5 (donde pone 03 en el script, por lo de GPIO03) como antes hacía pase a escuchar el pin 3 (ahora hay que poner 02 . Además también tienes que decirle que cuando ocurra algo ahí, en vez de apagarse (sudo shutdown -h now) se reinicie (sudo shutdown -r now) :inform
En cuanto a esto
"Tampoco se si el pin que has utilizado en el post para el reset lo hace por hardware por defecto y tendría que cambiarlo. "
el reset por hardware al que me refiero es conectando el botón directamente al puerto RUN de la placa
https://seeeddoc.github.io/Raspberry_Pi ... is_New.png
Y ya directamente pulsando provocas que la raspberry se reinicie, aunque no es para nada recomendado...
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.
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
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 lineasCódigo: Seleccionar todo
sudo apt-get update
Después, creamos nuestro script con el siguiente comandoCódigo: Seleccionar todo
sudo apt-get -y install python-rpi.gpio
y dentro copiamos el siguiente fragmento de códigoCódigo: Seleccionar todo
sudo nano /home/pi/shutdown.py
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.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)
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íneaSi os pregunta, seleccionar la opción 2 (nano).Código: Seleccionar todo
sudo crontab -e
bajamos hasta el final y escribimos lo siguienteDe nuevo pulsamos Ctrl+X y decimos Y para guardar.Código: Seleccionar todo
@reboot sudo python /home/pi/shutdown.py
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íneaSi 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!Código: Seleccionar todo
sudo python /home/pi/shutdown.py
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
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 comandoy dentro copiamos el siguiente fragmento de códigoCódigo: Seleccionar todo
mkdir pi cd pi nano shutdown.py
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.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)
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.dUna vez aquí tenemos que darle permisos de escritura a la carpeta. Como el comando chmod tampoco funciona, la solución pasa por ejecutarCódigo: Seleccionar todo
cd /etc/init.d
Si ejecutamos el comandoCódigo: Seleccionar todo
mount -o remount, rw /
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...Código: Seleccionar todo
ls
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 comandoy copiamos el siguiente códigoCódigo: Seleccionar todo
nano S99myscript
De nuevo pulsamos Ctrl+X y decimos Y para guardar.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 $?
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íneaSi 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!Código: Seleccionar todo
/etc/init.d/S99myscript start
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
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:
Pegar esta porción de código en el fichero y guardar con Ctrl+X, después YCódigo: Seleccionar todo
mkdir /storage/scripts nano /storage/scripts/shutdown.py
Probar con el códigoCó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)
Si queremos hacer que arranque al encender la placa:Código: Seleccionar todo
python /storage/scripts/shutdown.py
Código: Seleccionar todo
nano /storage/.config/autostart.sh
Información sacada del tutorial en Inglés: http://www.barryhubbard.com/raspberry-pi/howto-raspberry-pi-openelec-power-wake-shutdown-button-using-gpio/Código: Seleccionar todo
python /storage/scripts/shutdown.py &
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)porCódigo: Seleccionar todo
sudo shutdown -h now
Obviamente el botón hay que conectarlo en otros dos pines diferentes, por ejemplo al 7 y al 9.Código: Seleccionar todo
sudo shutdown -r now
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.
hola tio!
creo haberlo hecho bien, he utilizado el interruptor de una snes de interruptor.
la cosa es que, me enciende dandole al interruptor, pero apagarse no se apaga.
tiene posicion on y off
la on sin problema. pero para apagaarla no hace nada
a ver si me puedes contestar
batocera

-
- Pi Newbie
- Mensajes: 1
- Registrado: 06 Ene 2018, 11:30
- Agradecido: 0
- Agradecimiento recibido: 0
este es mi primer post en este foro con mi recien estrenada Raspi.
Tengo una Raspberry PI 3 a la que le he soldado un par de pines macho en el puerto RUN para encender con un pulsador que cierre el circuito.
Me parece la mejor solución para mi, puesto que la uso mayormente como mediacenter con KODI y la controlo con KORE desde Android y es desde esa aplicación desde donde apago la raspberry.
El caso es que "aparentemente" todo funciona OK. Apago desde la app y al pulsar el boton arranca sin problema. Pero lo raro es que me pasa como a otro compañero aquí, al cabo de un tiempo indeterminado de estar apagada, se enciende sola.
He comprobado la continuidad del circuito y del pulsador y es correcto. Abierto constante y cerrado al pulsar.
No sé a qué puede ser debido y me tiene un poco loco.
Alguien a quién le ocurra lo mismo y lo haya conseguido solucionar??
Muchas gracias por todo y un saludo!!!
Fiera_SouL
- MrBeaker
- Pi Master
- Mensajes: 277
- Registrado: 27 Dic 2016, 15:26
- Agradecido: 1 vez
- Agradecimiento recibido: 0
Hola Zoik, este tutorial está hecho para pulsadores, no para botones.. en los pulsadores la diferencia es que una vez se suelta vuelven a su posición original.zoik 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.
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
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 lineasCódigo: Seleccionar todo
sudo apt-get update
Después, creamos nuestro script con el siguiente comandoCódigo: Seleccionar todo
sudo apt-get -y install python-rpi.gpio
y dentro copiamos el siguiente fragmento de códigoCódigo: Seleccionar todo
sudo nano /home/pi/shutdown.py
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.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)
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íneaSi os pregunta, seleccionar la opción 2 (nano).Código: Seleccionar todo
sudo crontab -e
bajamos hasta el final y escribimos lo siguienteDe nuevo pulsamos Ctrl+X y decimos Y para guardar.Código: Seleccionar todo
@reboot sudo python /home/pi/shutdown.py
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íneaSi 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!Código: Seleccionar todo
sudo python /home/pi/shutdown.py
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
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 comandoy dentro copiamos el siguiente fragmento de códigoCódigo: Seleccionar todo
mkdir pi cd pi nano shutdown.py
Tras ello pulsamos Ctrl+X y decimos Y (Yes) para guardar cambios.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)
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.dUna vez aquí tenemos que darle permisos de escritura a la carpeta. Como el comando chmod tampoco funciona, la solución pasa por ejecutarCódigo: Seleccionar todo
cd /etc/init.d
Si ejecutamos el comandoCódigo: Seleccionar todo
mount -o remount, rw /
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...Código: Seleccionar todo
ls
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 comandoy copiamos el siguiente códigoCódigo: Seleccionar todo
nano S99myscript
De nuevo pulsamos Ctrl+X y decimos Y para guardar.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 $?
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íneaSi 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!Código: Seleccionar todo
/etc/init.d/S99myscript start
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
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:
Pegar esta porción de código en el fichero y guardar con Ctrl+X, después YCódigo: Seleccionar todo
mkdir /storage/scripts nano /storage/scripts/shutdown.py
Probar con el códigoCó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)
Si queremos hacer que arranque al encender la placa:Código: Seleccionar todo
python /storage/scripts/shutdown.py
Código: Seleccionar todo
nano /storage/.config/autostart.sh
Información sacada del tutorial en Inglés: http://www.barryhubbard.com/raspberry-pi/howto-raspberry-pi-openelec-power-wake-shutdown-button-using-gpio/Código: Seleccionar todo
python /storage/scripts/shutdown.py &
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)porCódigo: Seleccionar todo
sudo shutdown -h now
Obviamente el botón hay que conectarlo en otros dos pines diferentes, por ejemplo al 7 y al 9.Código: Seleccionar todo
sudo shutdown -r now
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.
hola tio!
creo haberlo hecho bien, he utilizado el interruptor de una snes de interruptor.
la cosa es que, me enciende dandole al interruptor, pero apagarse no se apaga.
tiene posicion on y off
la on sin problema. pero para apagaarla no hace nada
a ver si me puedes contestar
Para botones tendría que pensar como hacerlo, pero seguro que se puede.
Yo creo que directamente no te funciona el script, puesto que conectando un botón, sin programar nada de nada, se enciende la placa... El script es para poder apagarla.
Añadir que para apagar la Pi la pulsación que tengo que hacer es de +-1 seg., si hago una pulsación más rápida el script pasa de mi. ¿Eso es normal?
Un saludo !! Texas.
tengo una super nintendo rota que vacié, y he aprovechado el mismo boton de serie que trae, y me enciende y apaga.
que pasada!
ahora voy a ver si soy capaz de ponerle un ventilador y un led para que se encienda a la vez que la consola. y se apague.
un saludo !!!
batocera

- MrBeaker
- Pi Master
- Mensajes: 277
- Registrado: 27 Dic 2016, 15:26
- Agradecido: 1 vez
- Agradecimiento recibido: 0
Hola!zoik escribió: 11 Ene 2018, 21:18 al final lo he conseguido, entre este tutorial y un par mas en youtube.
tengo una super nintendo rota que vacié, y he aprovechado el mismo boton de serie que trae, y me enciende y apaga.
que pasada!
ahora voy a ver si soy capaz de ponerle un ventilador y un led para que se encienda a la vez que la consola. y se apague.
un saludo !!!
Lo del LED es muy fácil, es solamente conectar (sin programación ni nada) pero... conseguiste lo del ventilador?
Yo lo tengo hecho pero a través de hardware, con una plaquita que te apaga completamente la Raspberry.
Saludos!
-
- Pi Beta
- Mensajes: 166
- Registrado: 14 Nov 2016, 11:19
- Agradecido: 0
- Agradecimiento recibido: 1 vez
sudo shutdown -h now
Y
sudo shutdown -r now
Que como ves por una sola letra te reinicia en lugar de apagar, por eso era. A ver si alguien te eche un cable con otra idea
Enviado desde mi MI 5s mediante Tapatalk
-
- Pi Newbie
- Mensajes: 9
- Registrado: 11 Jul 2017, 18:48
- Agradecido: 0
- Agradecimiento recibido: 0
-
- Pi Alpha
- Mensajes: 11
- Registrado: 21 May 2018, 01:17
- Agradecido: 0
- Agradecimiento recibido: 0
He probado este , que tiene las dos cosas con el mismo boton y funciona. Pero me gustaria poner con los pines run.
Se puede?que numero tiene el "run"
https://cdn.sparkfun.com/assets/learn_t ... PiZero.png
https://raw.githubusercontent.com/gilye ... hutdown.py
-
- Pi Newbie
- Mensajes: 3
- Registrado: 15 Sep 2019, 16:29
- Agradecido: 0
- Agradecimiento recibido: 0
Estoy intentando implementar un pulsador para reiniciar una raspberry con raspbian. He encontrado varios tutoriales similares a este y en ninguno de ellos se comenta la necesidad de montar una resistencia en serie.
Entiendo que como en ningún sitio lo encuentro no hay problema, pero ¿No hay peligro en conectar directamente los pines 5 y 6 mediante un pulsador sin usar una resistencia?
Al conectar ambos pines habrá una diferencia de potencial y si la resistencia es igual a 0.....
Saludos