[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

jalomur escribió:https://az835927.vo.msecnd.net/sites/io ... Pinout.png
En esta imagen el 29 y 31 son el gpio5 y gpio5 que son los que necesito no?
No no, a ver... una cosa es la numeración de los pines y otra la numeración de los GPIO.

Tu necesitas conectarlo en los pines 5 y 6, correspondientes al GPIO3 y a GROUND. :D

EDIT: Acabo de leer tu comentario de arriba :victoria
Última edición por MrBeaker el 20 Mar 2017, 09:27, editado 1 vez en total.
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

jalomur escribió:Ultima pregunta sobre el tema,jeje

Mi idea era poner un pulsador para reset y un interruptor on/off para encender apagar, de hecho es lo que compré para hacer pruebas. El pulsador si me funciona, pero el interruptor, a falta de probarlo, dudo que vaya a funcionar. De todos modos, a fin de cuentas, hacer un reset o un encendido/apagado viene a ser lo mismo no? salvo por el hecho de tener que pulsar 2 veces...
Yo apuesto a que no va a funcionar, al menos con este sistema, ya que el pulsador se queda en circuito abierto (no pasa corriente) cuando no está pulsado, y cuando se pulsa entonces cierra el circuito y pasa la corriente necesaria para realizar la acción. Por otro lado, el interruptor se queda abierto o cerrado según la posición, no siendo momentaneo como en el caso del pulsador.

Yo estuve mirando para hacerlo como pretendes pero al final decidí hacerlo así.
jalomur
Pi Beta
Pi Beta
Mensajes: 166
Registrado: 14 Nov 2016, 11:19
Agradecido: 0
Agradecimiento recibido: 1 vez

pues muchas gracias, entonces lo dejaré asi, con un único pulsador al fin y al cabo me es suficiente
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

jalomur escribió:pues muchas gracias, entonces lo dejaré asi, con un único pulsador al fin y al cabo me es suficiente
Si el pulsador lo quieres para hacer el reset únicamente puedes cambiar el comando del script de shutdown -h now a shutdown -r now. Eso en vez de apagar reinicia.

Pruebalo y me dices :)
jalomur
Pi Beta
Pi Beta
Mensajes: 166
Registrado: 14 Nov 2016, 11:19
Agradecido: 0
Agradecimiento recibido: 1 vez

Mi gozo en un pozo...., todo ete procedimiento lo he hecho en la raspberry bajo raspbian, pero claro ..., mi raspberry en principio no va a estar corriendo raspbian si no mas bien el 95% del tiempo con LibreElec. Lo hice en raspbian por aquello de hacerlo en la terminal directamente en vez de por shh.
Ahora me conecto para repetir el proceso en LibreElec y mi sorpresa...., libreElec no permite usar apt-get, porque no permite instalar nada.... :( Asi que ni botón, ni vpn, ni na de na...
Avatar de Usuario
albertoertipo
Pi Alpha
Pi Alpha
Mensajes: 17
Registrado: 23 Mar 2017, 15:20
Agradecido: 0
Agradecimiento recibido: 0
Contactar:

Entonces la configuración no queda en la Raspberry para todos los sistemas? Es decir... si uso recalbox el 99% del tiempo, pero quiero ponerme windows10 por ejemplo.. el botón no tendría utilidad? Soy nuevo, llevo 2 días con la raspberry pi 3 :D
jalomur
Pi Beta
Pi Beta
Mensajes: 166
Registrado: 14 Nov 2016, 11:19
Agradecido: 0
Agradecimiento recibido: 1 vez

Yo lo que te puedo decir es que tengo berryboot y lo instale en raspbian. Encender y apagar funciona perfectamente. Ahora, cuando entré ayer en LibreElec no me funcionaba, asi que pensé que tendrá que ver con la distribucion instalada.
Eso si, una vez apagada desde LibreElec sí que la pude encender con el boton..., algo es algo...
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

albertoertipo escribió:Entonces la configuración no queda en la Raspberry para todos los sistemas? Es decir... si uso recalbox el 99% del tiempo, pero quiero ponerme windows10 por ejemplo.. el botón no tendría utilidad? Soy nuevo, llevo 2 días con la raspberry pi 3 :D
Olvidate de windows 10 en la raspberry jejeje.
Si cambias de distribución tienes que volver a hacer el tutorial para que quede instalado el programilla.
jalomur
Pi Beta
Pi Beta
Mensajes: 166
Registrado: 14 Nov 2016, 11:19
Agradecido: 0
Agradecimiento recibido: 1 vez

@MrBeaker y en lo que respecta a LibreElec nada, verdad?

Enviado desde mi SM-G920F mediante Tapatalk
Jorgefelix43
Pi Newbie
Pi Newbie
Mensajes: 1
Registrado: 27 Mar 2017, 20:44
Agradecido: 0
Agradecimiento recibido: 0

Una duda amigo, alguna razón en particular por la que el GPIO sea el 3? Intente utilizar el 20, pero solo me funciona el apagado y al querer encenderla ya no puedo.
En el GPIO 3 si funciona bien, ya hice esa prueba, pero lo estoy utilizando para otra tarea.
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

jalomur escribió:@MrBeaker y en lo que respecta a LibreElec nada, verdad?

Enviado desde mi SM-G920F mediante Tapatalk
Ni idea compañero...
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

Jorgefelix43 escribió:Una duda amigo, alguna razón en particular por la que el GPIO sea el 3? Intente utilizar el 20, pero solo me funciona el apagado y al querer encenderla ya no puedo.
En el GPIO 3 si funciona bien, ya hice esa prueba, pero lo estoy utilizando para otra tarea.
Puedes utilizar el GPIO que quieras, pero tienes que indicarlo en el script.
Si quieres utilizar el 20 tienes que modificar el script para que la acción quede escuchando en el 20 en vez del 3, para ello solo tienes que cambiar donde aparezca un 3 por un 20.

Pruébalo y me dices. :victoria
butarda66
Pi Alpha
Pi Alpha
Mensajes: 37
Registrado: 08 Dic 2016, 07:22
Agradecido: 0
Agradecimiento recibido: 0

Una pregunta rápida MrBeaker.
¿Seria posible insertar que se ejecute un comando cuando soltamos el botón o hacemos la llamada a shutdown?
¿O agregar en un script python la ejecución de un comando cuando hace la llamada?
Me vendría muy bien, el poder hacer alguna de las dos cosas para mi proyecto del monitor de temperatura.
Gracias de antemano.
eleaefe
Pi Omega
Pi Omega
Mensajes: 54
Registrado: 03 Abr 2017, 04:20
Agradecido: 0
Agradecimiento recibido: 0

Muy bueno, esto se puede hacer con una placa encoder usb donde van los joysticks arcade?
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

butarda66 escribió:Una pregunta rápida MrBeaker.
¿Seria posible insertar que se ejecute un comando cuando soltamos el botón o hacemos la llamada a shutdown?
¿O agregar en un script python la ejecución de un comando cuando hace la llamada?
Me vendría muy bien, el poder hacer alguna de las dos cosas para mi proyecto del monitor de temperatura.
Gracias de antemano.
Que es lo que quieres ejecutar exactamente?
El script lo puedes modificar y poner como accion cualquier linea de codigo que tu quieras, por lo que en vez de que apague puedes hacer que reinicie, te muestre configuracion de red, etc etc etc... Lo que le das es funcionalidad al botón, en este caso de apagado por la linea shutdown -h, pero sustituyendo esa linea le indicas que quieres hacer otra cosa.
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

eleaefe escribió:Muy bueno, esto se puede hacer con una placa encoder usb donde van los joysticks arcade?
No se decirte, porque el script (al menos este en especifico) está pensado para el GPIO de Raspberry. Si hubiera alguna forma de mapear el puerto USB para distinguir que botón se pulsa en cada momento pues me imagino que se podrí hacer, pero así a bote pronto ni idea compañero.
butarda66
Pi Alpha
Pi Alpha
Mensajes: 37
Registrado: 08 Dic 2016, 07:22
Agradecido: 0
Agradecimiento recibido: 0

MrBeaker escribió: Que es lo que quieres ejecutar exactamente?
El script lo puedes modificar y poner como accion cualquier linea de codigo que tu quieras, por lo que en vez de que apague puedes hacer que reinicie, te muestre configuracion de red, etc etc etc... Lo que le das es funcionalidad al botón, en este caso de apagado por la linea shutdown -h, pero sustituyendo esa linea le indicas que quieres hacer otra cosa.
Te explico.
Este es el script que he construido y que ya funciona:

Código: Seleccionar todo

#!/usr/bin/python
# led control cpu temp
import time
import commands

#Temperature Read
def get_cpu_temp():
    tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = tempFile.read()
    tempFile.close()
    return float(cpu_temp)/1000

#what's the temp?
try:
 while True:
  #Blue Color, When we have: 30*<=>34*
  if get_cpu_temp() >= 30 and get_cpu_temp() <= 34:
   import os
   os.system("neouart -q -s16 3c000000 3c000040")
  #Light Blue Color, When we have: 35*<=>40*
  elif get_cpu_temp() >= 35 and get_cpu_temp() <= 40:
   import os
   os.system("neouart -q -s16 3c000000 3c002040")
  #Light Green Color, When we have: 41*<=>44*
  elif get_cpu_temp() >= 41 and get_cpu_temp() <= 44:
   import os
   os.system("neouart -q -s16 3c000000 3c004020")
  #Green Color, When we have: 45*<=>55*
  elif get_cpu_temp() >= 45 and get_cpu_temp() <= 55:
   import os
   os.system("neouart -q -s16 3c000000 3c004000")
  #Yello Color, When we have: 56*<=>65*
  elif get_cpu_temp() >= 56 and get_cpu_temp() <= 65:
   import os
   os.system("neouart -q -s16 3c000000 3c404000")
  #Orange Color, When we have: 66*<=>70*
  elif get_cpu_temp() >= 66 and get_cpu_temp() <= 70:
   import os
   os.system("neouart -q -s16 3c000000 3c402000")
  #Violet Color, When we have: 71*<=>75*
  elif get_cpu_temp() >= 71 and get_cpu_temp() <= 75:
   import os
   os.system("neouart -q -s16 3c000000 3c400040")
  #Bright Red Color, When we have: 76*<=>90*
  elif get_cpu_temp() >= 76 and get_cpu_temp() <= 90:
   import os
   os.system("neouart -q <sos.nua")
  #check every 3 secons (change to crontab)
  time.sleep(3)

except KeyboardInterrupt:
 import os
 os.system('neouart -q -s16 ff050000')
 print("Exit")
Me gustaría añadir una linea, que cuando se haga la llamada a shutdown o reboot. Ya sea con el pulsador o por consola se ejecute la orden: " neouart -q -s16 3c050000 000000 3c050000"
¿Es posible hacer eso? Mis conocimientos en programación son nulos.
Muchas gracias.
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

butarda66 escribió:
MrBeaker escribió: Que es lo que quieres ejecutar exactamente?
El script lo puedes modificar y poner como accion cualquier linea de codigo que tu quieras, por lo que en vez de que apague puedes hacer que reinicie, te muestre configuracion de red, etc etc etc... Lo que le das es funcionalidad al botón, en este caso de apagado por la linea shutdown -h, pero sustituyendo esa linea le indicas que quieres hacer otra cosa.
Te explico.
Este es el script que he construido y que ya funciona:

Código: Seleccionar todo

#!/usr/bin/python
# led control cpu temp
import time
import commands

#Temperature Read
def get_cpu_temp():
    tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = tempFile.read()
    tempFile.close()
    return float(cpu_temp)/1000

#what's the temp?
try:
 while True:
  #Blue Color, When we have: 30*<=>34*
  if get_cpu_temp() >= 30 and get_cpu_temp() <= 34:
   import os
   os.system("neouart -q -s16 3c000000 3c000040")
  #Light Blue Color, When we have: 35*<=>40*
  elif get_cpu_temp() >= 35 and get_cpu_temp() <= 40:
   import os
   os.system("neouart -q -s16 3c000000 3c002040")
  #Light Green Color, When we have: 41*<=>44*
  elif get_cpu_temp() >= 41 and get_cpu_temp() <= 44:
   import os
   os.system("neouart -q -s16 3c000000 3c004020")
  #Green Color, When we have: 45*<=>55*
  elif get_cpu_temp() >= 45 and get_cpu_temp() <= 55:
   import os
   os.system("neouart -q -s16 3c000000 3c004000")
  #Yello Color, When we have: 56*<=>65*
  elif get_cpu_temp() >= 56 and get_cpu_temp() <= 65:
   import os
   os.system("neouart -q -s16 3c000000 3c404000")
  #Orange Color, When we have: 66*<=>70*
  elif get_cpu_temp() >= 66 and get_cpu_temp() <= 70:
   import os
   os.system("neouart -q -s16 3c000000 3c402000")
  #Violet Color, When we have: 71*<=>75*
  elif get_cpu_temp() >= 71 and get_cpu_temp() <= 75:
   import os
   os.system("neouart -q -s16 3c000000 3c400040")
  #Bright Red Color, When we have: 76*<=>90*
  elif get_cpu_temp() >= 76 and get_cpu_temp() <= 90:
   import os
   os.system("neouart -q <sos.nua")
  #check every 3 secons (change to crontab)
  time.sleep(3)

except KeyboardInterrupt:
 import os
 os.system('neouart -q -s16 ff050000')
 print("Exit")
Me gustaría añadir una linea, que cuando se haga la llamada a shutdown o reboot. Ya sea con el pulsador o por consola se ejecute la orden: " neouart -q -s16 3c050000 000000 3c050000"
¿Es posible hacer eso? Mis conocimientos en programación son nulos.
Muchas gracias.
Pero mi pregunta es... además de esa orden quieres que se apague la raspberry? O hacer que el botón ejecute eso sin más?
butarda66
Pi Alpha
Pi Alpha
Mensajes: 37
Registrado: 08 Dic 2016, 07:22
Agradecido: 0
Agradecimiento recibido: 0

MrBeaker escribió: Pero mi pregunta es... además de esa orden quieres que se apague la raspberry? O hacer que el botón ejecute eso sin más?
Si claro.Quiero que apague y ademas se ejecute la orden.
No se si añadiendo el shutdown como excepción en mi script funcionaria. Pero no se como hacerlo ni como expresarlo sin que me arroje un error de sintaxis.
ultrasfc
Pi Omega
Pi Omega
Mensajes: 52
Registrado: 14 Dic 2016, 19:23
Agradecido: 0
Agradecimiento recibido: 0

Buenas, alguien a probado este metodo?
https://www.youtube.com/watch?v=eo0eS5vDtsI
Responder