Inhaltsverzeichnis
DS18B20 Temperatursensor
Raspberry Pi Konfiguration
Für den Temperatursensor werden die OneWire-Module benötigt. Zuerst ist eine Aktivierung im Raspberry Pi notwendig. Dafür müssen folgende Befehle im Terminal ausgeführt werden:
sudo raspi-config # unter Interfacing Options muss 1-Wire aktiviert werden # NICHT neu starten! sudo vim /etc/modules # drücke i (insert), um in den Bearbeitunsgmodus zu gelangen # drücke ESC, um den Bearbeitunsgmodus zu verlassen # schreibe :wq und drücke Enter, um die Datei zu schreiben (w für write und q für quit) # oder sudo nano /etc/modules # hier kannst du direkt schreiben und mittels Strg-O die Datei speichern und mit Strg-X das Programm verlassen # füge die folgenden beiden Zeilen ganz unten in die Datei ein: w1-gpio w1-therm # Dies veranlasst, dass der Linux-Kernel beim Starten automatisch # die Treiber (Kernelmodule) für die One-Wire-Schnittstelle lädt.
Verkabelung
Das gelbe Kabel und das rote Kabel (bzw. das rechte und mittlere Beinchen) müssen mit einem 4,7kOhm Widerstand (gelb-lila-pink-[gold]) verbunden werden. Die Pins werden von links nach rechts und oben nach unten durchnummeriert. Beachte: Die Bezeichnungen sind dabei aber völlig unterschiedlich (siehe: GPIO-Leiste Abbildung)
Für den wasserdichten Sensor mit Kabel gilt:
rotes Kabel: 3V3 (PIN 1)
schwarzes Kabel: GND (bspw. PIN 6)
gelbes Kabel: BCM/GPIO 4 (PIN 7)
Für das Bauteil gilt (flache Seite mit Beschriftung zugewandt):
linkes Beinchen: GND (bspw. PIN 6)
mittleres Beinchen: BCM/GPIO 4 (PIN 7)
rechtes Beinchen: 3V3 (PIN 1)
Beispiel
import time def get_temp(filename): f = open(filename, 'r') content = f.readlines() f.close() temp = "error" if (content[0].strip())[-3:] == "YES": index = content[-1].find('t=') if index != -1: temp = float(content[-1][index+2:-1].strip()) temp = temp/1000.0 return temp sensor_path = "/sys/bus/w1/devices/28-00000ade26e7/w1_slave" while True: print(get_temp(sensor_path)) time.sleep(1)
Beispiel 2
In diesem Beispiel wird die Temperatur mit °C und nur dann ausgegeben, wenn diese sich ändert.
import time def get_temp(filename): f = open(filename, 'r') content = f.readlines() f.close() temp = "error" if (content[0].strip())[-3:] == "YES": index = content[-1].find('t=') if index != -1: temp = float(content[-1][index+2:-1].strip()) temp = temp/1000.0 return temp sensor_path = "/sys/bus/w1/devices/28-00000ade081f/w1_slave" y = 100 while True: Temperatur = get_temp(sensor_path) Temperatur = round(Temperatur, 1) if Temperatur != y: print(str(Temperatur) + "°C") y = Temperatur