Raspberry Pi Lüftersteuerung Jugend Programmiert Lüftersteuerung Raspberry Pi Vorwort Alle Schaltungen, Programme und Bauteile wurden vorher von uns Geprüft. Trotzdem können wir leider Fehler im Buch, den Schaltungen oder Programmen nicht ausschließen. Bei Fragen oder Problemen gibt es unten die Kontaktmöglichkeiten. Mehr Informationen findest du auch auf der Internetadresse der Seitenzahl. LEDs sollten nicht aus naher Entfernung direkt angesehen werden, ein direkter Blick kann zu Schäden an den Netzhäuten führen. Diese kann gefährlich sein, auch wenn sie nicht sofort klar erkennbar sind. Die LEDs dürfen nur wie in den Anleitungen beschrieben verwendet werden, höhere Ströme oder Stromspannungen sind zu vermeiden. Dieses Produkt entspricht den geltenden Europäischen Richtlinien und trägt ein CE-Kennzeichen. Der richtige Gebrauch ist in dem Beiliegenden Buch erklärt. Bauen sie Schaltungen immer wie beschrieben auch, achten sie auf die Verschiedenen GPIO Pins vom Raspberry Pi. Herausgeber Jugend Programmiert Coding World UG (haftungsbeschränkt) | Homwer.com Obdrupstraße 23 A, 24986 Mittelangeln www.codingworld.io Support: [email protected] Feedback: [email protected] → cw42.de/luefter/1 Lüftersteuerung Raspberry Pi Raspberry Pi Lüfter steuern Wir freuen uns das du dich für ein Jugend Programmiert Kit entschieden hast. Programme sind überall, sichtbar und unsichtbar. Als Programmierer verstehst du die moderne Welt und hast die Macht diese etwas besser zu machen. Viel Spaß mit diesem praxisorientierten Python3 Hardware programmieren Tutorial, wünscht die das Team von Jugend Programmiert. In dieser Anleitung zeigen wir dir wie man die einen Lüfter und drei Status LEDs an den Pi anschließt und steuert. Mit den LEDs zeigen wir wie warm dein Pi ist. Wird er zu heiß, schalten wir den Lüfter an. Wenn der Pi kalt ist schalten wir den Lüfter wieder aus. Wir benutzen Pyrthon3 als Programmiersprache. Einen Einstieg in Python3 bekommst du in unserem Starterkit. Vor dem Start: Du brauchst einen Raspberry Pi mit installiertem Raspbian. Alle Informationen zum Installieren, Updaten, Upgraden und einrichten deines Systems bekommst du im Raspberry Pi 3 Starter Guide aus dem Pi3 Starter Set (link) Was wir machen: In dieser Anleitung zeigen wir die die Grundlagen von Python3 beim steuern von GPIO Pins. In dem Raspberry Pi Temperatursteuerungs Kit, findest du die Hardware die du benötigst. Schritt für Schritt erklären wir dir, wir du deine Steuerung programmierst und aufbaust. Am Anfang programmieren wir das Auslesen der CPU Temperatur deines Raspberry Pi. Dann legen wir drei Temperaturbereiche fest. Mit LEDs zeigen wir an in welchem Temperatur-Bereich dein Pi gerade ist. Falls der Pi zu warm wird, schalten wir den Lüfter ein. 1: Temperatur auslesen In diesem Teil lesen wir die Temperatur des Pi aus und vergleichen diese mit drei Werten für normal, warm und heiß. Wir geben eine Meldung aus wie warm der Pi gerade ist und welcher Temperaturbereich das ist. Hardware brauchst du dafür nicht, die nutzen wir im zweiten Teil. Öffne ein Terminal oder logge dich über SSH auf der Konsole deines Pi ein. → cw42.de/luefter/2 Lüftersteuerung Raspberry Pi Als erstes wollen wir die Temperatur auslesen. Die Temperatur deiner CPU steht in der Datei /sys/class/thermal/thermal_zone0/temp . Auslesen und ausgeben der Temperatur geht z.B. mit dem Befehl cat /sys/class/thermal/thermal_zone0/temp Das Ergebnis wird ohne , dargestellt aber mit 3 dezimalen. Zum Beispiel; 45622 das sind 45,622 Grad Celsius. Jetzt wir wissen in welcher Datei die CPU Temperatur gespeichert ist. Diese Datei wollen wir mit Python auslesen. Unser Programm heißt Temperatur.py und sollte im Verzeichnis /home/pi liegen. Erstelle oder öffne eine neue Datei mit dem Befehl nano Temperatur.py Falls es Datei schon gibt, wird diese geöffnet, falls nicht, erstellt der Pi eine neue leere Datei. Mit ctrl+o speicherst du die Datei. ctrl+x schließt du die Datei. Du kannst auch einen anderen Editor verwenden falls du nano nicht magst. In die erste Zeile schreiben wir einen Kommentar. Kommentare fangen immer mit # an und werden beim ausführen des Programms ignoriert. Schreibe in die erste Zeile: Python 1 2 #Lüftersteuerung Version 1. #Geschrieben von – Dein Name - Es ist eine gute Idee Kommentare in dein Programm zu schreiben. Dann weist du später was dein Programm an dieser stelle macht. Wir fangen mit dem ersten Teil an, dem einlesen der Temperatur und der Ausgabe in der Konsole. 1 2 3 4 5 Python tempData = "/sys/class/thermal/thermal_zone0/temp" dateilesen = open(tempData, "r") temperatur = dateilesen.readline(2) dateilesen.close() print("Deine CPU hat " + temperatur + " Grad") Erst speichern wir den Pfad der zu öffnenden Datei in einer Variable. Dann öffnen wir die Datei mit Python. Das geschieht in Zeile 2. dateilesen = → cw42.de/luefter/3 Lüftersteuerung Raspberry Pi open(„Pfad zu der Datei die du lesen willst“, „r“) das , „r“ steht für das englische Wort Read. Wir wollen die Datei ja nur lesen. In der dritten Zeile lesen wir die erste Zeile unserer Datei und speichern den Wert in eine variable mit dem Namen temperatur . Die (2) ist die Anzahl der Zeichen dir wir einlesen wollen. Ohne die 2 wird die ganze Zeile eingelesen, auch der nicht sichtbare Zeilenumbruch am Ende. Das kannst du einfach mal ausprobieren. Mit dateilesen.close() schließen wir die Datei, wir brauchen Sie nicht mehr. Der Wert, die Temperatur, haben wir ja gerade in die Variable temperatur geschrieben. Die 5. Zeile gibt unsere Temperatur aus. Damit es schöner aussieht haben wir vor und hinter der Temperatur noch etwas Text geschrieben. Damit dich dieser erste Teil nicht überfordert fassen wir das ganze noch mal zusammen. Wir öffnen eine Datei. Lesen aus dieser die erste Zeile aus und schreiben den Inhalt dieser Zeile in eine Variable. Wir schließen die Datei. Dann geben wir einen Text in der Konsole aus, dann die Variable und noch mehr Text. Jetzt starten wir dein Programm. Das machst du mit dem Befehl python3 Temperatur.py Es sollte dir diesen Satz ausgeben: Deine CPU hat 45 Grad 2. Temperaturen festlegen Jetzt wissen wir wir warm der Pi ist. Abhängig von der Temperatur wollen wir den Lüfter ein oder aus machen und eine oder mehr LEDs zum leuchten bringen. Wir müssen unserem Programm sagen welche Temperatur normal, warm oder heiß ist. Dafür öffnest du wieder dein Programm mit nano und schreibst folgende Zeilen rein. Python 1 normal = 30 2 3 warm = 50 heiss = 60 → cw42.de/luefter/4 Lüftersteuerung Raspberry Pi Diese Werte könnt Ihr frei anpassen, achtet darauf, dass normal kälter als warm ist und warm kälter als heiss. In Python werden Werte in Variablen gespeichert. Diese unterscheiden zwischen Text (String) und Nummern (Integer). Es gibt Variablen in denen stehen Sachen wie „Ich bin ein Text“ und andere in denen stehen Nummern zum Beispiel 5132. Unsere Temperaturen sind Nummern, also Integer. Aus der CPU Temperatur Datei bekommen wir einen Text. (String). Zum Glück ist der String eine Nummer. Wir wandeln den String in einen Integer um mit den Zeilen: Python 1 temperatur = int(temperatur) Jetzt vergleichen wir die Temperatur mit unseren Werten: Python 1 if temperatur <= normal: 2 3 print ("Die CPU ist normal, grüne LED an.") if temperatur <= warm: 4 5 6 7 print ("Die CPU ist warm, gelbe LED an") if temperatur >= heiss: print ("Die CPU heiss! Rote LED an!") print ("Den Lüfter schalten wir auch an.") Eine If abfrage vergleicht zwei Werte und führt Befehle aus falls diese zutreffen oder nicht. In der ersten Zeile sagen wir if temperatur <= normal geben die folgende Zeile aus. Falls die Temperatur nicht kleiner ist, wird der Befehl nicht ausgeführt. In der nächsten Zeile fragen wir ob die Temperatur > (größer) als warm ist und falls das zutrifft führen wir den nächsten Befehl aus. Die letzte Abfrage schaut ob die Temperatur größer oder gleich heiss ist und führt einen Befehl aus, oder auch nicht. Achtet darauf dass der Code der ausgeführt werden soll mit SPACE (Leertaste) oder Tab eingerückt werden muss. Wir listen dir noch mal alle Vergleichsoperatoren auf. Python kann nicht nur kleiner, größer, usw. sonder auch == (ist gleich) und != ist nicht gleich. → cw42.de/luefter/5 Lüftersteuerung Raspberry Pi Vergleiche in Python kleiner als < größer als > kleiner oder gleich als <= größer oder kleiner als >= gleich == nicht gleich != Jetzt haben wir schon eine funktionierende Temperatur Anzeige. Führe dein Programm aus mit python3 Temperatur.py . Im nächsten Teil bringen wir die GPIOs ins Spiel und lassen die LEDs leuchten. 3: LED Aufbau In diesem Teil zeigen wir dir wie man die GPIO Pins des Raspberry Pi benutzt. Mit diesen bringen wir unsere LEDs zum leuchten und steuern den Lüfter. Auf dem Bild siehst du den Aufbau. Schalte deinen Pi aus und baue den → cw42.de/luefter/6 Lüftersteuerung Raspberry Pi Aufbau mit den mitgelieferten Teilen nach. Anstatt des Lüfters verwenden wir erstmal eine LED. Die LEDs solltest du immer über Widerstand anschließen, ansonsten können sie kaputt gehen. Das lange Bein der LED ist die Anode (+) und das kurze Bein die Kathode (-). Der Aufbau ist immer Pin, Widerstand, LED, und dann zu GND (Ground oder Minus) Pin 2 Widerstand 56 Ohm Grüne LED langes Bein 3 Widerstand 56 Ohm Gelbe LED langes Bein 4 Widerstand 56 Ohm Rote LED langes Bein 17 Widerstand 56 Ohm LED langes Bein GND Verbindest du mit Minus auf dem Breadboard Die kurzen Beine der LED verbindest du direkt mit Ground (minus) auf dem Breadboard. Super jetzt wollen wir die LEDs zum leuchten bringen. Starte deinen Pi. 4: Lüfter und LEDs über Steuern Damit wir die GPIOs mit Python steuern, brauchen wir die GPIO Bibliothek. Diese binden wir am Anfang unseres Scripts ein. Außerdem importieren wir die Bibliothek time . Diese ermöglicht uns den Zugriff auf Befehle wie z.B. time.sleep(10) was unser Programm 10 Sekunden schlafen lässt. Python 1 import RPi.GPIO as GPIO 2 import time Jetzt definieren wir die Pins die wir belegen wollen. Für jedes Signal → cw42.de/luefter/7 Lüftersteuerung Raspberry Pi brauchen wir einen Pin. Wir benutzen 3 LEDs. Grün, gelb, rot und den Lüfter wir brauchen also 4 Pins. Dazu kommen noch + und - . Die GPIO Pins können als Eingang oder Ausgang benutzt werden. Eingänge sind für Signale z.B.von Temperatursensoren. Mit Ausgängen kann man Dinge mit Energie versorgen. Für unsere LEDs und den Lüfter brauchen wir Ausgänge. Es gibt verschiedene Möglichkeiten um die 40. Pins auf dem Pi zu zählen. Wir benutzen BCM. Das ist die Belegung auf dem roten Referenzbord aus dem Starter Kit und auf der kleinen Karte die im Set liegt. Wie wir die Pins ansprechen definieren wir mit der Zeile GPIO.setmode(GPIO.BCM) . Jetzt müssen wir noch festlegen welche Pins wir benutzen wollen. Jeden Pin müssen wir einzeln aktivieren. Wir nutzen 2,3,4 und 17 als Ausgänge. Python 1 2 GPIO.setmode(GPIO.BCM) GPIO.setup(2, GPIO.OUT) 3 GPIO.setup(3, GPIO.OUT) 4 5 GPIO.setup(4, GPIO.OUT) GPIO.setup(17, GPIO.OUT) Das Programm weiß nun, dass wir diese Pins als Ausgang nutzen. Ein Ausgang kann zwei Zustände haben. An (high) oder aus (low). Wir machen erst mal alle Pins aus. Python 1 GPIO.output(2, GPIO.LOW) 2 GPIO.output(3, GPIO.LOW) GPIO.output(4, GPIO.LOW) 3 4 GPIO.output(17, GPIO.LOW) Mit diesen Zeilen schalten wir die GPIO.output Pins mit den Nummern 2,3,4,17 auf LOW, also auf aus. Du kannst die Pins auch auf HIGH stellen, der Code sieht dann so aus: GPIO.output(5, GPIO.HIGH) Stelle sicher dass deine LEDs richtig angeschlossen sind und schalte sie an und aus. Zwischen dem an und aus kannst du Pausen einbauen, ohne pause schaltet die LED so schnell, dass du das nicht sehen kannst. → cw42.de/luefter/8