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