Mit dem 1wire-Sensor DS18B20 lässt sich kostengünstig die Wassertemperatur messen. Er ist bereits ab 2-3€ verfügbar und kann recht einfach mit dem Raspberry verbunden werden. Diese Sensoren lösen nach und nach meine alten USB-Sensoren TEMPer1 ab, da diese bereits in die Tage gekommen sind. Zudem sind diese Module deutlich teurer als der DS18B20-Sensor. Das Anschließen sowie die Einrichtung am Raspberry wird in diesem Beitrag beschrieben.
Zunächst sei erwähnt, dass der DS18B20-Sensor über dem 1wire-Bus kommuniziert. Das stellt für die Himbeere kein Problem dar, jedoch gibt es einige Punkte zu beachten. Wenn mehrere 1wire-Sensoren angeschlossen werden sollen, geschieht dies immer über den gleichen GPIO-Port, weil im späteren Verlauf der Anleitung der GPIO Port 4 als 1wire-Bus konfiguriert wird. An der Himbeere sind grundsätzlich maximal 10 Geräte an diesem Bus nutzbar, wobei man sich mit acht Geräten auf der sicheren Seite bewegt, da sonst die 3,3V-Spannungsversorgung an ihre Grenzen stößt.
Sensoren verbinden
Sämtliche Sensoren teilen sich den GPIO-Port 4, sowie die Spannungsversorgung. Zwischen der 3,3V-Versorgung und Ground (GND) setzen wir einmalig einen 4,7K Ohm-Widerstand. Daraus ergibt sich folgendes Schaltbild:
Oder in einer alternativen Darstellung:
Konfiguration
Nachdem der Sensor bzw. die Sensoren angeschlossen wurden, starten wir den Raspberry Pi. Raspbian bringt die notwendigen Treiber bereits mit, so dass hier kein Handlungsbedarf besteht. Jedoch müssen wir die entsprechenden Kernel-Module nachladen. Das geschieht manuell durch
modprobe w1-gpio
modprobe w1-therm
Wenn wir die entsprechenden Module beim Systemstart mitladen möchten, editieren wir die Datei „/etc/modules“ und fügen folgende Zeilen hinzu:
w1-gpio
w1-therm
Falls auf dem System der device-tree aktiviert ist, müssen wir die Datei „/boot/config.txt“ wie folgt ergänzen:
dtoverlay=w1-gpio,gpiopin=4
Alternativ kann der device-tree mit dem Tool „raspi-config“ (am einfachsten unter „Advanced Options“ => „Device Tree„) deaktiviert werden.
Sensoren auslesen
Nachdem der Raspberry neu gestartet wurde oder die Kernelmodule per Hand geladen wurden, prüfen wir nun, ob die Sensoren im System zur Verfügung stehen:
ls /sys/bus/w1/devices/
Wie wir im folgenden Screenshot erkennen können, wurden zwei Sensoren am Bus erkannt. Die Ordnernamen mit den Zahlen ist die jeweilige ID des Sensors und sollte für spätere Zwecke dokumentiert werden.
Nun schauen wir uns an, was uns die jeweiligen Sensoren mitzuteilen haben:
cat /sys/bus/w1/devices/ID_DES_SENSORS/w1_slave
Wie wir im folgenden Screenshot erkennen, erhalten wir eine Antwort des Sensors. Die letzten Ziffern (rot eingekreist) geben die gemessene Temperatur an, in diesem Fall gemütliche 4,437°C.
Um die Temperatur nun besser lesbar auszugeben, basteln wir uns ein kleines Script, beispielsweise „/scripts/ds18b20.sh„:
#! /bin/bash
#Pruefen, ob Suffix angegeben
if [ -z "$1" ] ;then
echo "So geht das nicht"
exit 1;
fi
# Temperatur des Sensors auslesen
temp=$(awk "BEGIN {print $(/bin/cat /sys/bus/w1/devices/$1/w1_slave |tail -n1 |cut -d"=" -f2)/1000}")
# Wert ausgeben
echo "Gemessene Temperatur des Sensors: ${temp} °C"
Die Ausführung des Scripts erlauben wir mit
chmod +x /scripts/ds18b20.sh
und starten es mit
/scripts/ds18b20.sh ID_DES_SENSORS
Nun erscheint die gemessene Temperatur in einem verständlichen Format:
Diese Werte können wir nun in Datenbanken speichern, per Mail versenden oder in openHAB verwenden.
Temperatursensor DS18B20 am Raspberry
Mit dem 1wire-Sensor DS18B20 lässt sich kostengünstig die Wassertemperatur messen. Er ist bereits ab 2-3€ verfügbar und kann recht einfach mit dem Raspberry verbunden werden. Diese Sensoren lösen nach und nach meine alten USB-Sensoren TEMPer1 ab, da diese bereits in die Tage gekommen sind. Zudem sind diese Module deutlich teurer als der DS18B20-Sensor. Das Anschließen sowie die Einrichtung am Raspberry wird in diesem Beitrag beschrieben.
Grundsätzliches
Zunächst sei erwähnt, dass der DS18B20-Sensor über dem 1wire-Bus kommuniziert. Das stellt für die Himbeere kein Problem dar, jedoch gibt es einige Punkte zu beachten. Wenn mehrere 1wire-Sensoren angeschlossen werden sollen, geschieht dies immer über den gleichen GPIO-Port, weil im späteren Verlauf der Anleitung der GPIO Port 4 als 1wire-Bus konfiguriert wird. An der Himbeere sind grundsätzlich maximal 10 Geräte an diesem Bus nutzbar, wobei man sich mit acht Geräten auf der sicheren Seite bewegt, da sonst die 3,3V-Spannungsversorgung an ihre Grenzen stößt.
Sensoren verbinden
Sämtliche Sensoren teilen sich den GPIO-Port 4, sowie die Spannungsversorgung. Zwischen der 3,3V-Versorgung und Ground (GND) setzen wir einmalig einen 4,7K Ohm-Widerstand. Daraus ergibt sich folgendes Schaltbild:
Oder in einer alternativen Darstellung:
Konfiguration
Nachdem der Sensor bzw. die Sensoren angeschlossen wurden, starten wir den Raspberry Pi. Raspbian bringt die notwendigen Treiber bereits mit, so dass hier kein Handlungsbedarf besteht. Jedoch müssen wir die entsprechenden Kernel-Module nachladen. Das geschieht manuell durch
Wenn wir die entsprechenden Module beim Systemstart mitladen möchten, editieren wir die Datei „/etc/modules“ und fügen folgende Zeilen hinzu:
Falls auf dem System der device-tree aktiviert ist, müssen wir die Datei „/boot/config.txt“ wie folgt ergänzen:
Alternativ kann der device-tree mit dem Tool „raspi-config“ (am einfachsten unter „Advanced Options“ => „Device Tree„) deaktiviert werden.
Sensoren auslesen
Nachdem der Raspberry neu gestartet wurde oder die Kernelmodule per Hand geladen wurden, prüfen wir nun, ob die Sensoren im System zur Verfügung stehen:
Wie wir im folgenden Screenshot erkennen können, wurden zwei Sensoren am Bus erkannt. Die Ordnernamen mit den Zahlen ist die jeweilige ID des Sensors und sollte für spätere Zwecke dokumentiert werden.
Nun schauen wir uns an, was uns die jeweiligen Sensoren mitzuteilen haben:
Wie wir im folgenden Screenshot erkennen, erhalten wir eine Antwort des Sensors. Die letzten Ziffern (rot eingekreist) geben die gemessene Temperatur an, in diesem Fall gemütliche 4,437°C.
Um die Temperatur nun besser lesbar auszugeben, basteln wir uns ein kleines Script, beispielsweise „/scripts/ds18b20.sh„:
Die Ausführung des Scripts erlauben wir mit
und starten es mit
Nun erscheint die gemessene Temperatur in einem verständlichen Format:
Diese Werte können wir nun in Datenbanken speichern, per Mail versenden oder in openHAB verwenden.
Verwandte Beiträge
In diesem Beitrag wurde der 1wire-Sensor DS18B20 vorgestellt und erläutert, wie man diesen an einem…
In diesem Beitrag möchte ich zeigen, wie der sehr günstige Temperatursensor DS18B20 an einem PoKeys-Modul…
In einem früheren Beitrag habe ich darüber berichtet, wie man den Temperatur- und Luftfeuchtigkeitssensor DHT22…
Als ich mich für ein neues Projekt auf die Suche nach der Pin-Belegung der einzelnen…
Sehr oft wird der relativ günstige Sensor DHT22 (oder auch AM2302) eingesetzt, um am Raspberry…