Lüftersteuerung für den Raspberry Pi

Nachdem ich mir einen Raspberry Pi 4 mit dem schicken Magnet Gehäuse mit den bereits integrierten Lüftern besorgt hatte, störte mich das ständige Geräusch der kleinen Lüfter.

Deshalb musste eine Lösung her, die die Lüfter deaktiviert, wenn die Temperatur ok ist.

Vorbereitung

Auf dem Raspberry Pi sollte python und die GPIO Bibliothek installiert sein. Die notwendigen Packages für Python installiert man über apt:

pi@host:~$ sudo apt install python-dev python-pip

Die GPIO Bibliothek am besten über pip:

pi@host:~$ pip install RPi.GPIO

Hardware

Zuerst habe ich mir bei Conrad den Transistor BC547B besorgt. Dazu noch ein Set mit Widerständen

Schaltung

Da das Widerstand Set keinen richtig passenden Widerstand hatte habe ich einen 4,7k Ohm und einen 1k Ohm Widerstand in Serie zusammen gelötet. Damit war der Transistor ausreichend geschützt. Schaltplan Lüftersteuerung

Python Script

Dann habe ich noch ein Python Script zusammen geklöppelt welches ich unter /opt/fancontrol abgelegt habe.

Der Name des Skripts ist “fancontrol.py”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import io
import sys

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)


while True:
        try:
                temperatureFile = open("/sys/class/thermal/thermal_zone0/temp", "r")
                temperatureString = temperatureFile.readline()
                temperatureFile.close()
                temperatureFloat = float(temperatureString)
                temperature = temperatureFloat/1000
                if temperature > 45.0:
                        GPIO.output(14, True)
                elif temperature <= 41.0:
                        GPIO.output(14, False)
                print "Temperature " + str(temperature)
                time.sleep(10.0)
        except:
                temperatureFile.close()
                GPIO.cleanup()
                sys.exit()

Die Temperatur Bereiche können individell noch angepasst werden indem man einfach die entsprechenden Werte im Skript anpasst.

Startup Skript

Damit das Python Skript auch bei jedem Neustart immer wieder gestartet wird habe ich noch folgende Zeile in die “/etc/rc.local” Datei eingefügt:

python /opt/fancontrol/fancontrol.py >/dev/null 2>&1 &