Raspberry (12): Control de la temperatura en la Raspberry Pi.

Tras varios capítulos en los que hemos configurado nuestra Raspberry Pi para realizar acciones muy diversas, llega el momento de usar ese conocimiento para detectar cuando alcanza temperaturas altas (debido a su uso) y en ese caso avisarnos de ello, encender un ventilador, o incluso apagarla para que no sufra peligro.

Contenido de los ficheros para que puedas “copiar/pegar“:

 

Fichero “ventilador.py”:

# import para detectar el movimiento.
import RPi.GPIO as GPIO
import time as pausa

# Constantes globales
GPIO_ventilador = 23
TemperaturaMaxima = 70

# Inicializaciones del detector de movimiento:
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_ventilador, GPIO.OUT) # Ventilador

print('Activando el sensor de temperatura con ventilador')

try:
  while True:
    # Leo la temperatura:
    f = open("/sys/class/thermal/thermal_zone0/temp", "r")
    temperatura = f.read(2)
    f.close()
    temperatura = int(temperatura)

    # Si la temperatura es alta, pongo el ventilador
    if temperatura > TemperaturaMaxima:
      print (' - Temperatura ALTA: ',temperatura)
      GPIO.output(GPIO_ventilador, True) # Enciendo el VENTILADOR.
    else:
      print (' - Temperatura baja: ',temperatura)
      GPIO.output(GPIO_ventilador, False) # Apago el VENTILADOR.

    pausa.sleep(1) # Compruebo la temperatura cada segundo.

except: # Para detectar cuando se pulsa "Ctrl + C"
  GPIO.cleanup()
  print("Fin..")
  quit()

Fichero “ventilador.sh”:

#!/bin/bash
#Preparamos la entrada.
echo 23 > /sys/class/gpio/export
sleep 0.5 # Nos esperamos un poco para que realice el "export"

#Le indico que el GPIO es de salida:
echo out > /sys/class/gpio/gpio23/direction

# Capturo "Ctrl+C" para liberar el PIN.
int_handler()
  {
  #Eliminaremos la entrada GPIO para libera el pin
  echo 23 > /sys/class/gpio/unexport
  echo "Proceso finalizado."
  exit 1
  }

trap 'int_handler' INT

#Bucle infinito
while [ 1 ]
  do
    # Cojo los dos primeros números del fichero con la temperatura
    Valor=$(cat /sys/class/thermal/thermal_zone0/temp | cut -c 1-2)
    if test $Valor -gt 70 ;
    then
      echo "Temperatura ALTA: " $Valor " grados."
      #Encendemos el ventilador
      echo 1 > /sys/class/gpio/gpio23/value
    else
      echo "Temperatura baja: " $Valor " grados."
      #Apagamos el ventilador
      echo 0 > /sys/class/gpio/gpio23/value
    fi
    sleep 1

  done

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *