Der DS18B20 Temperatursensor am ESP8266 D1 Mini - Einfache Temperaturmessung

von cooper.bin
veröffentlicht am 05.03.2024 aktualisiert am 05.03.2024

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.

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:

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.

OneWire Library Arduino IDE ><

DallasTemperature Library Arduino IDE ><

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:

ds18b20-verdrahtung-esp8266-d1-mini ><

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.

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

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

Die Themen arduino-ide und smarthome gibt es auch auf dem makesmart Discord-Server! Trete bei, um dich auszutauschen.

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 D1 Mini programmieren - Der Start mit der Arduino IDE

Erfahre, wie du den ESP8266 D1 Mini mit der Arduino IDE programmierst. Dank den kostenlosen Entwicklungswerkzeugen und der microUSB-Buchse ist das für jeden ein Kinderspiel.

cooper.bin am 10.02.2024

HC-SR04 und JSN-SR04T - Entfernungen messen mit Ultraschallsensoren am ESP8266

Lerne in diesem Tutorial, wie die Ultraschallsensoren HC-SR04 und JSN-SR04T mit ESP8266 D1 Mini für Distanzmessungen eingesetzt werden, die Grundlagen, Anwendungen und mehr.

cooper.bin am 09.03.2024

Der DHT22 am ESP8266 - Wie man die Temperatur und Luftfeuchtigkeit misst

In diesem Tutorial lernst du, wie du mit einem DHT22 und einem ESP8266 D1 Mini die Luftfeuchtigkeit und die Temperatur einfach messen kannst.

cooper.bin am 12.03.2024

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

cooper.bin am 13.02.2024

ESP8266 Webserver: GET-Variablen auslesen

GET-Parameter sind Variablen, die über die URL übergeben werden. Diese Variablen können auf einem ESP8266 ausgelesen werden, um bestimmte Aktionen in der Software auszulösen.

cooper.bin am 17.02.2024