Temperaturmessung mit einem Raspberry Pi und 1-Wire-Temperatursensoren

Zielsetzung ist das Messen der aktuellen Außentemperatur und Bereitstellung der Daten mittels Netzwerk bzw. der Upload auf einen Webserver

Benötigte Teile

  • Raspberry Pi mit installiertem Raspbian

  • Netzteil

  • 1-Wire Temperatursensor (DS18B20)

  • WLAN-Stick (USB)

  • Gehäuse IP65

 

Grundlegende Funktion

Der Raspberry Pi ermittelt im Minutentakt die aktuelle Temperatur mittels des Temperatursensors und speichert diese in einer RRD-Datenbank. Zusätzlich werden diese Daten noch im CSV-Format in eine Textdatei geschrieben.

Alle 10 Minuten wird aus den Daten der RRD-Datenbank ein Diagramm erzeugt, welches auf einen Webserver übertragen wird.

 

Mit dem neuen Kernel 3.18 in Raspian hält jetzt Device Tree-Unterstützung Einzug, was einige kleinere Änderungen gegenüber älteren Kerneln notwendig macht.

 

In die Datei /boot/config.txt muss folgende Zeile eingefügt werden, um die 1-Wire-Sensoren ansprechen und abfragen zu können:

dtoverlay=w1-gpio, gpiopin=4

 

Des weiteren müssen die 1-Wire-Kernelmodule beim Start geladen werden:

In Datei /etc/modules

w1-gpio

w1-therm

In neueren Raspbian-Versionen kann dies auch vom Tool raspi-config erledigt werden. Hierzu einfach im Menüpunkt "5 Interfacing Options" den Punkt "P7 1-Wire" auf enable setzen. Nach einem Neustart sind die entsprechenden Einstellungen dann gesetzt.

Nun kann mittels

cat /sys/bus/w1/devices/w1_bus_master1/28-000004118a7f/w1_slave (je nach Geräteadresse unterschiedlich)

der Sensor ausgelesen werden.

Die folgende Belegung am RJ-45 ist nicht zwingend oder genormt, ich habe das nur für mich so festgelegt. An den GPIOs auf dem Raspberry muss die Belegung allerdings so eingehalten werden, es sei denn, man ändert in der Datei /boot/config.txt den entsprechenden GPIO-Pin.