Hallo zusammen!

Heute möchte ich euch eine kleine Anleitung geben, wie ihr eine Lüftersteuerung am Raspberry Pi bauen könnt. Die Kosten, Schwierigkeit und Bauteilanzahl halten sich in Grenzen, sodass ein Nachbau nicht schwierig sein sollte.

 

Die benötigten Bauteile

Wie bei jedem Bastel-Projekt mir Hardware benötigt ihr auch für dieses ein paar Bauteile:

  1. Einen Lüfter (natürlich ;))
    Ich verwende einen alten 120mm-Lüfter, den ich vor einiger Zeit aus meinem PC ausgebaut habe. Dieser läuft standardmäßig mit 12V, sodass er beim Betrieb mit 5V (so wie es hier beschrieben wird) recht leise ist und dank der Größe trotzdem gut kühlt
  2. Einen Transistor
    Hier dürfte die Auswahl an geeigneten Bauteilen riesig sein. Damit ihr meine Anleitung direkt nutzen könnt, sollte es aber ein NPN-Transistor mit CBE-Belegung sein (das ist die Reihenfolge der Pins von links nach rechts). Ich nutze selbst einen 2N2222, den ich noch rumliegen hatte. Andere Transistoren, wie der BC547 sollten auch funktionieren, evtl. muss dann aber der Widerstand anders dimensioniert werden
  3. Einen Widerstand
    Für meine Konfiguration nutze ich einen Widerstand mit 1kΩ. Gerade wenn ihr andere Transistoren verwendet, solltet ihr euch aber erst mal vortasten. Soll heißen: Mit einem möglichst großen Widerstand beginnen und ggf. austauschen, wenn der Transistor damit nicht durchschaltet. Genaueres in der Anleitung.
  4. Ein altes USB-Kabel
    Dieses wird zur Stromversorgung verwendet. Es können zwar auch die Strompins am Raspberry Pi verwendet werden, allerdings können hier auf Grund der beschränkten Stromstärke Probleme auftreten, gerade bei größeren Lüftern und Übertaktung des Raspberry Pi. Von daher ist es empfehlenswert eine andere Stromversorgung wie eben ein USB-Kabel am aktiven Hub oder ein extra Netzteil zu verwenden.
  5. Ein Breadboard sowie Jumper-Kabel
    Alternativ kann das Breadboard auch weggelassen werden und die Jumper-Kabel direkt gesteckt werden oder die Kabel entsprechend verlötet werden. Das geht alles, solange Strom fließt. Am Einsteigerfreundlichsten ist aber wohl die Lösung mit Breadboard und Kabeln
  6. Einen Raspberry Pi
    Ohne diesen geht natürlich nichts ;)

Die Kosten für die Bauteile (neben dem Raspberry Pi) sind recht gering. Leider kann ich nur grob schätzen, da ich bereits alles zu Hause hatte, aber mit ca. 5€ für einen Lüfter und weiteren 3-4€ für die anderen Bauteile solltet ihr hinkommen.

 

Die Verkabelung

Beginnen wir mit der Vorbereitung des Stromanschlusses durch das USB-Kabel:
Dieses muss in einem ersten Schritt auf die gewünschte Länge zugeschnitten werden. Anschließend geht ihr am Besten nach dieser Anleitung vor (bis „Simple breadboard test“, diesen braucht ihr nicht machen), in der alles bebildert erklärt wird. Für unser Projekt interessant sind nur die beiden Leitungen für Masse und VCC, also Minus- und Pluspol. Diese Leitungen sind in den Kabeln i.d.R. rot (Pluspol) und schwarz (Minuspol). Die beiden Datenleitungen brauchen wir nicht. Ihr müsst übrigens keine Pfostenstecker an die Leitungen löten, sondern könnt diese entweder direkt auf das Breadboard stecken oder über female-male-Jumper-Kabel. Da wir für den Lüfter mit 5V arbeiten können, reicht es nur den ersten Absatz dieser Anleitung zu befolgen.

Anschließend geht es zur Verkabelung der gesamten Bauteile.

Hierzu habe ich euch einen kleinen Schaltplan gemacht, der euch die Verkabelung verdeutlichen und vereinfachen soll:

Steckplatine

Da meine Software zur Erstellung des Schaltplans keinen Lüfter enthielt (zumindest habe ich keinen gefunden), habe ich stattdessen einen DC-Motor platziert, der die gleiche Funktionsweise hat (nur die Rotor-Blätter fehlen).

Der GPIO14 in der Skizze ist auf einen Raspberry Pi Modell B Rev. 2 bezogen, bei anderen Modellen solltet ihr euch erst erkundigen, ob der entsprechende Pin an der gleichen Stelle ist und wenn nicht, wo er stattdessen platziert wurde.

Bei meinen Versuchen hat sich ein 1kΩ-Widerstand als brauchbar erwiesen, ihr solltet euch allerdings bei dem Wert erst einmal vortasten. Am Besten beginnt ihr mit 10kΩ und probiert die Anleitung damit weiter, dann mit 7kΩ, mit 5kΩ usw.. Sobald ihr einen Wert gefunden habt, bei dem der Transistor in eurer Konfiguration durchschaltet, könnt ihr diesen verwenden.

 

Die Software

Nachdem ihr alles verkabelt und den Raspberry Pi gestartet habt, geht es an die Software. Da ich gerne in Python programmiere, habe ich mich für eine komplette Umsetzung in Python entschieden. Ladet euch dazu erst einmal RPi.GPIO herunter (aktuell 0.5.6). Das macht ihr einfach über das Terminal auf eurem Raspberry Pi über wget:

wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.6.tar.gz

Anschließend entpackt ihr die heruntergeladene Datei:

tar zxf RPi.GPIO-0.5.6.tar.gz

Um sie zu installieren, wechselt ihr über cd RPi.GPIO-0.5.6 in den durch die Entpackung erstellten Ordner und installiert sie über

sudo python setup.py install

Damit sind alle Vorbereitungen getroffen, um über ein eigenes Python-Script den Lüfter an- und ausschalten zu können. Für einen ersten Test legen wir uns ein Python-Script an mit folgendem Inhalt:

und speichern es unter fan_test.py. Dieses nun über

sudo python fan_test.py

aufrufen. Der Lüfter sollte nun eingeschaltet und nach 10 Sekunden wieder ausgeschaltet werden. Ist das nicht der Fall, könnt ihr nun den Widerstand gegen ein kleineres Modell ersetzen und das Script nochmals aufrufen. Sobald ihr einen geeigneten Widerstand gefunden habt, könnt ihr weitermachen.

Um die Lüfteraktivität zu automatisieren (anschalten bei hohen CPU-Temperaturen), habe ich ein Python-Script gebastelt, das ich per cron alle 10 Minuten starte.

Hier der entsprechende Code:

Speichert euch das Script an einen beliebigen Ort unter dem Namen „fan_control.py“. Anschließend könnt ihr es über

sudo python fan_control.py

aufrufen. Ihr solltet nun auf der Konsole die aktuelle Temperatur angezeigt bekommen und der Lüfter sollte ab einer Temperatur von 47°C (Schwellwert kann natürlich angepasst werden) angeschaltet werden für 3 Minuten (kann auch geändert werden; 180s = 3min – immer in Sekunden angeben!). Anschließend solltet ihr die nun aktuelle CPU-Temperatur angezeigt bekommen und der Lüfter sollte ausgeschaltet werden. Ist die CPU-Temperatur eures Raspberry Pi unter 47°C, so sollte der Lüfter nicht anspringen und das Script sollte sich beenden.

Ich habe noch die Funktion eingebaut, dass ihr das Script jederzeit über Strg+C beendet werden kann und der Lüfter dann wieder ausgeschaltet wird sowie die aktuelle CPU-Temperatur angezeigt wird.

Um das Script automatisiert zu starten, könnt ihr euch noch einen cronjob anlegen. Da das Script root-Rechte benötigt, erstellt ihr über sudo crontab e  einen neuen cronjob mit dem Inhalt

*/10 * * * * /pfad/zum/script/fan_control.py

Damit wird das Script alle 10 Minuten aufgerufen. Das Intervall und Einschränkungen auf bestimmte Stunden/Tage könnt ihr nach belieben ändern. Achtet nur darauf, dass die Intervalle nicht zu eng beieinander liegen, da das Script 3 Minuten läuft.


Somit dürfet ihr eine vollautomatisierte, kleine Lüftersteuerung für euren Raspberry Pi und Gehäuse haben. Gerade in der warmen Jahreszeit sinnvoll bei Benutzung von Gehäusen für den Raspberry.

Bei Fragen, Probleme, Anregungen usw. dürft ihr gerne das Kommentarfeld unten benutzen.

Gutes Gelingen und viel Spaß mit dem Projekt!