Die Messung von Temperaturen spielt in so manchen DIY- und Elektronikprojekten eine zentrale Rolle – sei es beim Aufbau smarter Wetterstationen, in der Hausautomation oder bei der Temperaturüberwachung sensibler Komponenten. Und genau hier kommt der DS18B20 Temperatursensor ins Spiel.
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
Da es den DS18B20 in verschiedenen Ausführungen gibt, ist dieser sehr vielseitig einsetzbar. Gängig sind hierbei Shields für spezifische Boards - genauso gibt es den DS18B20 aber auch als Temperaturfühler, um die Temperatur abseits des Prozessors zu erfassen, oder als Knopf, um ihn direkt auf Platinen zu verwenden.
Egal ob Fühler, Knopf oder Shield - das Auslesen des DS18B20 funktioniert immer auf die gleiche Art und Weise.
Zum Kapitel springen Hardware
Um dieses Tutorial nachzubauen, werden folgende Komponenten benötigt:
- Ein ESP8266 D1 Mini oder ein baugleiches ESP8266 Board
- Einen DS18B20 in einer beliebigen Bauform
- Optional: Jumper Kabel
- Optional: Breadboard
Zum Kapitel springen Bibliotheken installieren
Bibliotheken bieten Sammlungen von vordefinierten Funktionen und Routinen. Sie erlauben es uns, komplexe Aufgaben einfacher zu bewältigen. Ohne diese müssten wir den Code für grundlegende Operationen jedes Mal von Grund auf neu schreiben.
Im Falle des OneWire-Bus ermöglicht uns die Bibliothek, die Kommunikation mit Geräten, die diesen Bus verwenden. Um die Temperatur des Sensors über den OneWire-Bus auslesen zu können, müssen also zunächst die erforderlichen Bibliotheken installiert werden. Die Installation von Libraries in der Arduino IDE erfolgt stets auf die gleiche Weise, und zwar über den Bibliotheksverwalter:
Arduino IDE
└─Werkzeuge
└─Bibliotheken verwalten ...
Für das Auslesen der Temperatur sind zwei spezifische Bibliotheken notwendig: OneWire
und DallasTemperature
. Diese Bibliotheken können leicht gefunden werden, indem ihr in der Suchleiste des Bibliotheksverwalters exakt diese Begriffe eingebt.
Die OneWire
-Library ermöglicht wie bereits erwähnt die Kommunikation mit OneWire-kompatiblen Geräten, während die DallasTemperature
-Library speziell für die Interaktion mit Dallas Temperature Sensoren wie dem DS18B20 entwickelt wurde.
Bei der Suche einfach die entsprechenden Libraries auswählen und installieren.
Zum Kapitel springen Die Verdrahtung
Eine der benutzerfreundlichsten Methoden, um einen DS18B20 mit dem D1 Mini zu verbinden, ist die Verwendung eines speziellen Shields. Ein Shield ist eine Erweiterungsplatine, die direkt auf den D1 Mini gesteckt werden kann, ohne dass komplexe Verdrahtungen notwendig sind. Dies macht das Shield ideal für Anfänger oder Projekte, bei denen eine schnelle und einfache Lösung bevorzugt wird.
Das DS18B20 Shield ist speziell dafür konzipiert, nahtlos mit dem D1 Mini zu arbeiten, und erfordert keine weiteren Verkabelungen – eine echte Plug-and-Play-Lösung.
Für diejenigen, die eine direkte Verdrahtung des DS18B20 am D1 Mini bevorzugen, gibt es hier einen Schaltplan zur Verdrahtung:
ESP8266 D1 Mini | DS18B20 |
---|---|
5V | VCC |
GND | GND |
D4 | BUS / DATA / DQ |
Zum Kapitel springen Alternative Pins für die Datenleitung
Solltest du den Pin D4
bereits in Verwendung haben, dann hast du noch weitere Möglichkeiten den DS18B20 zu verwenden. Dafür benötigst du jedoch einen zusätzlichen Widerstand. Ich empfehle dir einen 2 - 5 kΩ Widerstand.
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
Der Widerstand muss zwischen der Datenleitung und der positiven Leitung angebracht werden. Wenn du das getan hast, kannst du eine ganze Reihe anderer Pins am D1 Mini zum Auslesen der Temperatur verwenden. Als Alternative zu D4 eignen sich folgende Pins als Datenleitung:
D1 | D2 | D3 | D5 | D6 | D7 |
---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Beachte, dass du den folgenden Programmcode dann entsprechend deines alternativ gewählten Datenpins anpassen musst.
Zum Kapitel springen Programmcode
Um die Temperaturmessung mit dem DS18B20 am ESP8266 D1 Mini durchzuführen, benötigen wir nun noch den passenden Programmcode. Er initialisiert die Kommunikation zwischen dem D1 Mini und dem Temperatursensor, liest die gemessenen Werte aus und gibt sie auf dem seriellen Monitor aus.
/*
DS18B20 Basic Code
Temperatur auslesen mit einem DS18B20 Temperaturfühlers
Created by cooper.bin, 2020
https://makesmart.net/
*/
#include <OneWire.h>
#include <DallasTemperature.h>
// Der PIN D4 wird als Daten-Pin verwendet
#define ONE_WIRE_BUS D4
OneWire oneWire( ONE_WIRE_BUS );
DallasTemperature DS18B20( &oneWire );
// In dieser Variable wird die Temperatur gespeichert
float temperature;
void setup(){
// Seriellen Monitor initialisieren
Serial.begin(115200);
// DS18B20 initialisieren
DS18B20.begin();
}
void loop(){
// Temperatur auslesen
DS18B20.requestTemperatures( );
// Temperatur in einer Variable speichern
temperature = DS18B20.getTempCByIndex( 0 );
// Die Ausgabe über den seriellen Monitor
Serial.println( String( temperature ) + " °C");
// 5 Sekunden Pause
delay( 5000 );
}
Das Ergebnis ist die aktuelle Temperatur im seriellen Monitor - aktualisiert alle 5 Sekunden.
20.81 °C
20.81 °C
20.81 °C
20.81 °C