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
Capítulo Anterior | Capítulo Siguiente |