Hallo,
ich wurde von einem User gebeten ein Tutorial zu machen, wie ich den bei mir installierten Lüfter abhängig von der Temperatur steuere.
(django hat aufbauend auf meinem Tutorial ein Script geschrieben, welches es ermöglicht den Lüfter ohne Python anzusteuern, ist euch überlassen, mir was ihr lieber arbeitet, ich verlinkte dieses mal hier)
Inhalt:
1. Hardware
1.1 Lüfter ins Gehäuse bauen / befestigen
1.2 Transistor verlöten
2. Software
2.1 GPIO Steuerung per Python
2.1.1 Grundinstallation
2.1.2 Lüfter spezifisches Script
2.2 Temperaturüberwachung per Bash
2.3 Automatisierung des Scripts
3. Extras
1. Hardware
1.1 Lüfter ins Gehäuse bauen / befestigen
Ich habe mir von einer sehr alten Grafikkarte einen kleinen Lüfter abgeschraubt, welcher perfekt in das Standardgehäuse vom Raspberry passt.
Ihr könnt aber gerne auch jeden anderen beliebigen Lüfter nehmen, solange dieser 5V benötigt.
Einfach herumtüfeln, sodass der Lüfter frei läuft und nirgends anstößt.
Bei mir ist der Lüfter am Standardgehäuse vom Raspberry befestigt, ich habe einfach mit einem kleinen Gravurset oben ein paar Löscher rein geschnitten und dann den Lüfter mit 4 Schrauben befestigt.
1.2 Transistor verlöten
Ihr benötigt folgendes:
- 1x ~6,8k Ohm Widerstand
- 1x Transistor BC547
Weil ich bei mir keinen 6,8k Ohm Widerstand hatte, habe ich bei mir 3x 15K Ohm genommen und diese Parallel zusammen gelötet, sodass diese am Ende einen Widerstand von 5k Ohm darstellen.
Zitat
Zitat von orb:
damit der Transistor sauber schaltet solltest der Widerstand nicht größer als 6,8k sein, lieber kleiner 4,7k oder 3,3k sind auch ok. Unter 1,2k sollte der aber nicht haben.
So habe ich das bei mir Verlötet:
Wie ein ehem. Prof mal sagte: Paint, das beste Grafiktool für Programmierer.
Man kann nicht so viel erkennen, weil ich es mit Heiskleber umschlossen und befestigt habe, aber hier trotzdem mal ein Bild von meinem:
2. Software
2.1 GPIO Steuerung per Python
2.1.1 Grundinstallation
Zur Steuerung der GPIO Pins habe ich ein einfaches Python Script aus dem Internet genommen.
Nachzulesen auf dieser Seite: http://lwk.mjhosting.co.uk/?p=343
Ich schreibe hier kurz raus, was ich gemacht habe
Mich als Pi angemeldet und folgendes eingeben:
wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.1.0.tar.gz
tar zxf RPi.GPIO-0.1.0.tar.gz
cd RPi.GPIO-0.1.0
sudo python setup.py install
Damit ist es nun Möglich alle GPIO Pins per einfachem Pythonscript zu steuern.
2.1.2 Lüfter spezifisches Script
Nachdem man den Lüfter nun zusammengebaut hat und erfolgreich mit dem Transistor und dem Widerstand verlötet hat, schließen wir den Lüfter wie im Punkt 1.2 auf dem Bild zu sehen an unseren Pi an.
Danach erstellen wir folgendes Script um den GPIO Pin 14 an und aus zu schalten.
$ sudo nano gpio14on.py
#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.output(14, True)
$ sudo nano gpio14off.py
#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
GPIO.output(14, False)
Danach
Um zu testen ob alles funktioniert hat, starten wir den Lüfter mal:
Dazu benutzen wir das Kommando
2.2 Temperaturüberwachung per Bash
Wenn es bis hier keine Fehler gegeben hat und die manuelle Lüftersteuerung funktioniert, führt folgende Schritte aus:
Erstellt diese Datei und schreibt eine 0 hinein:
Danach das hier:
Kopiert euch bitte das Script aus dem Anhang, ich konnte es irgendwie hier nicht so posten:
[attach=301,'none','2'][/attach]
(Am besten per Copy+Paste, weil ich hier keine sh Datei hoch laden konnte.
Damit das Script funktioniert noch:
Wenn wir das Script nun mit
aufrufen, bekomme wir zwar keine Ausgabe, jedoch sieht man die aktuelle Temperatur alle 10 Sekunden in dieser Datei
/home/luefterscript/temperatur.txt
und ob der Lüfter an / aus in dieser
/home/luefterscript/luefterstatus.txt
diese beiden Dateien könnt ihr auch nutzen um sie in andere Programme einzubinden, ich habe mir z.B. eine dynamische motd geschrieben, welche mir die aktuelle Temperatur und den Lüfterstatus anzeigt.
2.3 Automatisierung des Scripts
So, zu guter letzt müssen wir das Script noch im Autostrat verknüpfen, damit dieses immer läuft:
Dazu ändern wir die /etc/inittab mit:
schreibt nur am Ende der Datei diese beiden Zeilen rein, verändert sonst nichts:
L1:0123456:respawnudo /home/luefterscript/temperaturscript.sh
L2:0123456ysinitudo python /home/luefterscript/gpio14off.py
Zur Erklärung:
L1 -> Startet das Script beim Systemstart und überwacht es, falls es abstürzt, wird es automatisch neu gestartet.
L2 -> Schaltet den Lüfter nach einem Neustart aus.
Der Grund dafür ist, dass der Lüfter/GPIO 14 beim Starten angeschaltet wird. Nun steht in der luefterstatus.txt eine 0 für aus und der Lüfter ist an. Somit würde der Lüfter durchgehend laufen. Um dies zu verhindern schalten wir den Lüfter nach dem Neustart aus.
So sieht das Ganze dann am Ende aus, zumindest bei mir:
3. Extras
Bei dem Script schaltet der Lüfter sich für 60 Sekunden bei einer Temperatur von 45°C ein.
Falls ihr andere Werte haben wollt, dann ändert in der "temperaturscript.sh" diese Werte:
Zeile 4:
Max_Temp=45000; (45000 = 45°C; z.B. 51000 = 51°C)
Zeile 20:
sleep 60 (Schaltet das Script für 60 Sekunden in den "Schlafmodus" wodurch der Lüfter 60 Sekunden durchläuft=
So viel Spaß damit, ich hoffe ihr kommt klar, mit dem ganzen was ich geschrieben habe, für fragen stehe ich gerne zur Verfügung.
Verbesserungsvorschläge etc. auch gerne gesehen.
Ich möchte noch Orb, Fr34k und b-r danken, für die Hilfe, bei den Problemen, welche ich bei der "Entwicklung" hatte.
Falls es jemanden Interessiert, hier mein Thema:
https://www.forum-raspberrypi.de/Thread-lüfter-automatisch-an-und-ausschalten?pid=3243
Mfg.
Logan517