DS1820 One-Wire Temperatursensor an Raspberry Pi GPIO anschließen
Innen- oder Außentemperatur mit einem Raspberry Pi zu überwachen, geht mit minimalem Setup. Dieser Guide zeigt, wie man einen DS18S20 (DS1820) 1-Wire Sensor direkt an einen GPIO-Pin verdrahtet, Temperaturen per Software ausliest und die Daten mit RRDtool loggt.
Raspberry Pi und 1-Wire
DS18S20, DS18B20 und DS1822 sind alles 1-Wire Temperatursensoren im TO-92 Gehäuse, die Sensor, ADC und Serial Interface kombinieren. Obwohl sie denselben Pinout und Software-Interface teilen, unterscheiden sie sich in Kosten und Genauigkeit – der DS18S20 bietet ±0,5 °C Genauigkeit, der DS18B20 ±0,5 °C, und der DS1822 ebenfalls ±0,5 °C, ist aber günstiger.
Jedes Gerät hat drei Pins: Ground (GND, Pin 1), Data (DQ, Pin 2) und Power (VDD, Pin 3). Eine parasitäre Stromversorgung (3–5 V) erlaubt dem Sensor, ausschließlich über die Datenleitung mittels Pull-Up-Widerstand betrieben zu werden.
Nur ein Widerstand
Sensors DQ-Pin an GPIO 4 am Pi anschließen. GND an Pi's Ground und VDD an GND verbinden, um parasitäre Stromversorgung zu aktivieren. 4,7 kΩ Pull-Up zwischen 3,3 V und GPIO 4 platzieren. Kleines Breadboard oder Right-Angle-Header hält Verkabelung ordentlich und passt in Pis offizielles Gehäuse.
1-Wire Software-Treiber
Auf Raspberry Pi OS (oder jedem Debian-basierten Distro) Kernel-Module laden mit:
sudo modprobe w1-gpio pullup=1 sudo modprobe w1-therm
Der pullup=1 Parameter teilt dem Treiber mit, dass der Sensor über den Pull-Up-Widerstand mit Strom versorgt wird. Nach dem Laden erscheint jeder Sensor als Unterverzeichnis unter /sys/bus/w1/devices. Der Verzeichnisname besteht aus Family-Code und der einzigartigen 64-Bit-ID des Sensors: DS18S20/DS1820 nutzen Family-Code 10, DS18B20 nutzt 28, und DS1822 nutzt 22.
In jedem Verzeichnis liegt w1_slave, das zwei Zeilen enthält. Die erste zeigt den rohen Register-Dump und CRC-Check. Die zweite endet mit t=xxxx, der Temperatur in Milligrad Celsius. Beispiel:
cd /sys/bus/w1/devices cd 10-000801b5* cat w1_slave 0f 00 4b 46 ff ff 06 10 0c : crc=0c YES 0f 00 4b 46 ff ff 06 10 0c t=7375
Der Wert 7375 entspricht 7,375 °C. Beachten Sie, dass das Datenblatt eine Genauigkeit von ±0,5 °C spezifiziert, die tatsächliche Temperatur also innerhalb ±0,5 °C der Messung liegt.
Um sicherzustellen, dass die Module beim Boot laden, zu /etc/modules hinzufügen:
# /etc/modules w1-gpio pullup=1 w1-therm
Round-Robin Database (RRDtool)
Für Langzeitspeicherung und Visualisierung ist RRDtool ideal. Installieren mit:
sudo apt-get install rrdtool python-rrdtool
Datenbank definieren, die alle 15 Minuten einen Wert aufzeichnet und tägliche Aggregate für zehn Jahre behält:
rrdtool create temperature.rrd --step 900 \ DS:temp0:GAUGE:1200:-40:80 \ DS:temp1:GAUGE:1200:-40:80 \ RRA:AVERAGE:0.5:1:960 \ RRA:MIN:0.5:96:3600 \ RRA:MAX:0.5:96:3600 \ RRA:AVERAGE:0.5:96:3600
Datenerfassung mit Python
Unten ein minimales Python-Skript, das w1_slave ausliest und den Wert in die RRDtool-Datenbank einfügt. Sensor-Pfade und Datenbank-Dateiname nach Bedarf anpassen.
import os
import rrdtool
W1_PATH = '/sys/bus/w1/devices'
DB_FILE = 'temperature.rrd'
def read_temp(sensor_id):
with open(f'{W1_PATH}/{sensor_id}/w1_slave') as f:
lines = f.readlines()
if lines[1].strip().endswith('YES'):
temp_milli = int(lines[1].strip().split('t=')[-1])
return temp_milli / 1000.0
return None
# Beispiel für zwei Sensoren
temps = {
'temp0': read_temp('10-000801b5'),
'temp1': read_temp('28-0000045e')
}
rrdtool.update(DB_FILE, ','.join(str(t) for t in temps.values()))
Skript periodisch ausführen (z. B. via cron), um Datenbank aktuell zu halten.
Herstellungsprozess
- Raspberry Pi Temperaturlogger mit 5 $ I2C Sensor bauen
- Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
- Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
- TMP006 Infrarot-Temperatursensor mit Raspberry Pi: Python Library & Setup Guide
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- HC-SR04 Ultraschallsensor an Raspberry Pi 3 anschließen – Komplettanleitung