Libreelec con ventilador ruidoso


Se trata de un post para control del ventilador de la Raspberry Pi con la distribución Libreelec. En mi caso la raspberry está siempre encendida porque tiene instalada un servidor Bittorrent (Transmission) funcionando todo el día. Es una solución fantástica pero en el verano necesita del ventilador ya que se calienta mucho, lo malo es que genera un pequeño ruido después de estar un tiempo encendida, así que después de revisar lo que hay al respecto  por internet, he encontrado una solución ideal que describo a continuación.

  •  Instalar Add-ons Raspberry Pi Tools, disponible desde los repositorios por defecto por lo que en una simple búsqueda aparecerá. Este add-on contiene las funciones de control en Python RPi.GPIO que permite controlar el pineado GPIO de la raspberry.

Raspberry Tools Add-ons

  • Añadir script en python de control que activará/desactivará ventilador según temperatura con nombre autoexec.py y en la ubicación /storage/.kodi/userdata/autoexec.py:

#!/usr/bin/env python
# Original Author: Edoardo Paolo Scalafiotti <edoardo849@gmail.com>
# Modified to work on libreElec by Gary Beldon

import os
import time
import signal
import sys
sys.path.append(‘/storage/.kodi/addons/virtual.rpi-tools/lib’)
import RPi.GPIO as GPIO
import subprocess

maxTemp = 55 # The temperature in Celsius after which we trigger the fan
minTemp = 45 # Temp when we turn the fan off
sleepTime = 10 # Read the temperature every n sec, increase or decrease this limit if you want

logfile = «/storage/.kodi/temp/power.log»
pin = 18 # The pin ID, edit here to change it
fanRunning = False

def setup():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
logging(«Initializing.»)
return()

def getCPUtemperature():
temp = subprocess.check_output([‘vcgencmd’, ‘measure_temp’])[5:-3]
return temp
def fanON():
GPIO.output(pin, True)
return()
def fanOFF():
GPIO.output(pin, False)
return()
def checkTemp():
global fanRunning
CPUtemp = float(getCPUtemperature())
if fanRunning==False and CPUtemp>maxTemp:
fanRunning = True
fanON()
logging(«Temp=» + str(CPUtemp) + «C. Switching fan On.»)
if fanRunning==True and CPUtemp<minTemp:
fanRunning = False
fanOFF()
logging(«Temp=» + str(CPUtemp) + «C. Switching fan Off.»)
return()
def logging(message):
logfilehandle=open(logfile,’a’)
logfilehandle.write(time.strftime(«%c») + » :- » + message + «\n»)
logfilehandle.close()
return();

try:
setup()
while True:
checkTemp()
time.sleep(sleepTime)

except KeyboardInterrupt: # trap a CTRL+C keyboard interrupt
logging(«Terminating.»)
GPIO.cleanup() # resets all GPIO ports used by this program

  • Añadir un transistor S8050 conectado al ventilador.  Se puede conseguir por Amazon por unos 2 euros y que dejo a continuación con mi enlace de afiliado:

amazon_transistor  10X Transistor S8050 40V 1,5A 1500mA TO-92

El conexionado del transistor con el ventilador sería el siguiente:

conexionado_raspberry_fan
En mi caso he reciclado un cable de audio interno de los antiguos CDROM de PC, quedando para las pruebas de la siguiente forma:

Una vez montado solo queda ver que funciona, para ello se puede monitorizar las entradas del log configurado en el script:

frambu2:~ # tail -f /storage/.kodi/temp/power.log

Wed Jun 27 15:43:49 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 15:48:02 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 15:55:36 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 15:59:49 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:06:53 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:10:56 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:17:10 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:20:42 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:28:26 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:32:39 2018 :- Temp=44.5C. Switching fan Off.

Wed Jun 27 16:40:03 2018 :- Temp=55.3C. Switching fan On.

Wed Jun 27 16:45:06 2018 :- Temp=44.5C. Switching fan Off.

Con unas bridas pequeñas y silicona caliente se quedó al final así:

raspberrypi-control-fan-final

Fuentes:

Para instalar las RPi.GPIO y script en python se explica en foro de proyecto Libreelec:

https://forum.libreelec.tv/thread/9472-cooling-fan-control-raspberry-pi-libreelec/

Para el conexionado del transistor y ventilador:

https://github.com/KyleRoss/rpi-fan-controller

Para comprar el transistor S8050 por Amazon:

https://www.amazon.es/gp/product/B01M9CJ4CL/ref=as_li_tl?ie=UTF8&camp=3638&creative=24630&creativeASIN=B01M9CJ4CL&linkCode=as2&tag=ventanasolead-21&linkId=cea12262ce9864c330768f325049d993

Anuncio publicitario

2 pensamientos en “Libreelec con ventilador ruidoso

  1. Pingback: Orange Pi Zero y control de ventilador – Una ventana soleada

  2. Muy buen post.
    Una pregunta, ¿En algún sitio está lo del script explicado paso a paso para principiantes? A poder ser en castellano.
    Instalo el pi tools, conecto con la Raspberry vía SSH, pero ahora estoy un poco perdido. Muchas gracias.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.