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 |
