Benutzer-Werkzeuge

Webseiten-Werkzeuge


wetterstation:ds18b20

Dies ist eine alte Version des Dokuments!


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

GPIO-Leiste Abbildung

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.

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)

Die Pins werden von links nach rechts und oben nach unten durchnummeriert. Die Bezeichnungen sind dabei aber völlig unterschiedlich.

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)
wetterstation/ds18b20.1573577642.txt.gz · Zuletzt geändert: 2019/11/12 16:54 von admin