Hola! a continuación un pequeño tutorial de cómo añadir un pequeño ventilador a un orange pi para mantener a raya la temperatura del procesador. Dependiendo del uso que le vayas a dar a tu Orange Pi, puede ser necesario añadirle un pequeño ventilador. Si sólo quieres que se encienda el ventilador cuando la temperatura del procesador suba, sigue leyendo

Conectar ventilador a la Orange Pi

Vamos a hacer uso de una de las GPIO de la Orange Pi para enviar una señal al ventilador y otros dos pines para alimentarlo. El esquema es el siguiente:

Hay esquemas mas sofisticados. Yo he elegido el mas sencillo. Sólo nesitamos un transistor de baja potencia NPN. Por ejemplo un 2N2222 y una resistencia de 1K (aprox). Utilizo el GPIO 7 para enviar la señal para activar/desactivar el ventilador, pero por supuesto se puede usar el GPIO que querais. Yo tengo una Orange Pi Zero. Aqui teneis el conexionado

Y asi quedaria una vez instalado

Programación del ventilador

Primero hay que comprobar si funciona el comando gpio. Nos conectamos por ssh y tecleamos lo siguiente:

Sino reconoce gpio entonces aqui las instrucciones para instalarlo.

El siguente paso es crear una carpeta que se llame Fan y dentro de la carpeta crear un fichero fancontrol.sh con permisos de ejecución (chmod +x fancontrol.sh) que contendrá el siguiente script:

#!/bin/bash

echo "Pres CTRL+C to stop..."
gpio mode 7 out

for (( ; ; ))
do

   temperature=$(< /sys/devices/virtual/thermal/thermal_zone0/temp)
   gpio=$(gpio read 7)

   if [ $gpio -eq "0" ]
   then
     if [ $temperature -gt 67000 ]
     then
       echo "temperature: $temperature > FAN ON"
       gpio write 7 1
     fi
   else
     if [ $temperature -lt 49000 ]
     then
       echo "temperature: $temperature > FAN OFF"
       gpio write 7 0
     fi
   fi

   sleep 10s
done

Este script lo que hace es obtener cada 10 segundos la temperatura del procesador. Si excede los 67ºC envia una señal de encendido por el GPIO 7. Cuando la temperatura baja de los 49ºC envia una señal de apagado.

Crear un servicio

Por último queremos que este script corra siempre en el sistema. Necesitamos instalar el script como servicio. En este link explico cómo hacer esto.

El primer paso es crear un fichero en /etc/systemd/system con extensión .service

cd /etc/systemd/system/
touch fancontrol.service

Con el siguiente contenido.

[Unit]
Description=FanControl
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=5
User=root
ExecStart=/root/Fan/fancontrol.sh

[Install]
WantedBy=multi-user.target

Y por último registramos y arrancamos el servicio

systemctl enable fancontrol.service
systemctl start fancontrol.service

Averiguar el estado del servicio

Para averiguar el estado del servicio y comprobar cuando se arranca y para el ventilador, podemos hacer uso de systemctl status.