Getestet mit:RPi3; Raspbian Stretch; Python3
Voraussetzungen:Raspberry Pi mit Raspbian Jessie und Internetverbindung (siehe Schritte 1-7 in der Einfuehrung)
Bauteile:4.7k Ohm Widerstand
DS18B20
Steckplatine und Jumperkabel
0

Temperatur messen und aufzeichnen mit dem 1-Wire Sensor DS18B20 und einem Raspberry Pi

Eine interessante Alternative zu dem hochpreisigen Temperatursensor DHT22 ist der 1-Wire-Sensor DS18B20 (Datenblatt), der nur ca. die Haelfte kostet, dafuer aber keine Feuchtigkeit misst. 1-Wire ist ein Kommunikationsprotokoll, bei dem eine grosse Anzahl von Sensoren mittels einer einzigen Leitung ausgelesen werden kann.

Steckplatinen-Schaltkreis
Schalte den Raspberry Pi aus, dann verbinde ihn mit dem folgenden Schaltkreis:

DS18B20 circuit

DS18B20 Schaltkreis


Dabei wird der linke Pin des Sensors an Pin 6 (GND), der mittlere Pin ueber einen PullUp-Widerstand von 4.7k Ohm an Pin 7 und der rechte Pin an Pin 1 (3.3V) des Raspberry Pi in BOARD-Nummerierung angeschlossen.

Installation
Oeffne die Datei config.txt mit

und fuege am Ende der Datei die folgende Zeile ein:

Gib dann im Terminal ein

Temperatur messen
Lade das Demoscript herunter mit

und fuehre dann aus:

Die aktuelle Temperatur wird jetzt im Terminal ausgegeben.

Temperatur aufzeichen
Falls die Temperatur kontinuierlich gemessen werden soll, starte das Script so:

Dabei wird alle 5 Sekunden die aktuelle Temperatur gemessen und im Numpy-Datenformat .npy fuer eine spaetere Auswertung gespeichert.

Code Erklaerung
Jeder angeschlossene Sensor wird durch ein Verzeichnis in /sys/bus/w1/devices/ repraesentiert. In diesem Verzeichnis gibt es eine Datei w1_slave mit dem Ergebnis der Temperaturmessung:

DS18B20 Output

DS18B20 Ausgabe

Der Temperatursensor ist eine Python-Klasse und nimmt das Zielverzeichnis, den Dateinamen und einen Standardwert fuer Fehlmessungen als Argumente an:
Mit dem Modul glob kann die Linux-*-Syntax aufgeloest werden:
Das Verzeichnis des Temperatursensors beginnt immer mit 28, gefolgt einer hexadezimalen Sensorkennung. Da nur ein Sensor angeschlossen ist, bezeichnet 28* diesen. Dann wird die Datei mit der letzten Sensormessung als data geoeffnet und mit
die Temperatur extrahiert (alle Zeichen nach t=) und in Celsius konvertiert.

Gesamtes Script
Klicke auf Ganzes Script um das ganze Programm anzuzeigen.

Links
1-Wire Wiki: https://en.wikipedia.org/wiki/1-Wire
Temperatursensor Tutorial: http://www.knight-of-pi.org/de/temperatur-und-feuchtigkeit-mit-dem-sensor-dht22-am2302-messen/
Maxim Integrated DS18B20 Datenblatt: https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

Knight of Pi

Johannes Bergs aka Knight of Pi. Diploma in Bioinformatics, some Webdesign and Python coding then. Living in the beautiful city of Vienna.

Kommentar

Time limit is exhausted. Please reload CAPTCHA.