Añado el script del ventilador, seguro que hay un millón de formas mejor para hacerlo pero bueno, menos es nada.
El script en php:
<?php
define('MIN_TEMP', 40);
define('MAX_TEMP', 50);
function getTemp(){
$stringTemp = shell_exec('/opt/vc/bin/vcgencmd measure_temp');
$arrayTemp = explode('=',$stringTemp);
$arrayCleanTemp = explode('\'',$arrayTemp[1]);
return $arrayCleanTemp[0];
}
shell_exec('echo 15 > /sys/class/gpio/export');
shell_exec('echo out > /sys/class/gpio/gpio15/direction');
$activo = 0;
while(1){
if(getTemp() > MAX_TEMP && !$activo){
shell_exec('echo 1 > /sys/class/gpio/gpio15/value');
$activo = 1;
}
if(getTemp() < MIN_TEMP && $activo){
shell_exec('echo 0 > /sys/class/gpio/gpio15/value');
$activo = 0;
}
sleep(5);
}
?>
Podéis modificar los valores de temperatura máxima y mínima.
Lo ejecuto al iniciar la raspberry añadiendo lo siguiente al archivo /etc/rc.local
# Ventilador
php /usr/scripts/fan.php &
exit 0
Y libero los recursos del gpio antes de que se apague la raspberry editando el archivo /etc/rc0.local
#!/bin/sh -e
#Liberar recursos gpio
echo 0 > /sys/class/gpio/gpio15/value
echo 15 > /sys/class/gpio/unexport
Utilizo el gpio 15, pero podéis usar el que queráis, use ese porque tengo un conectar que encaja justo en los pines 4 (5v), 6 (GND) y 10 (GPIO 15)
Podeís probar un led conectado al gpio 15 al principio para ver que funciona y se enciende la luz cuando pasa de 50º la cpu y se apaga cuando baja de 40º.
Mañana pongo el esquema del circuito electrónico para manejar el ventilador con los 3,3v de la salida de los puertos gpio.