Temperatursensor – DS18B20 – ESP8266 Tutorial

 


 

Einleitung

In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie den präzisen DS18B20 Temperatursensor mit dem beliebten ESP8266 Mikrocontroller verbinden und programmieren können, um genaue Temperaturmessungen zu erhalten. Diese Anleitung führt Sie durch den gesamten Prozess, von den benötigten Komponenten und dem einfachen Schaltungsaufbau über die detaillierte Erklärung des in der Arduino IDE geschriebenen Codes bis hin zur praktischen Anwendung. Sie lernen, wie Sie den DS18B20 Sensor an den ESP8266 anschließen, die notwendige Software einrichten und die ausgelesenen Temperaturdaten anzuzeigen.

 

 

 

 

 



 

Pinout des DS18B20 Sensors

Der DS18B20 Temperatursensor ist ein kleiner Sensor mit nur drei Pins, was die Verbindung mit dem ESP8266 sehr einfach macht. Diese drei Anschlüsse sind:

Vcc: Dieser Pin dient zur Spannungsversorgung des Sensors.
GND: Dies ist der Masseanschluss.
Daten: Über diesen Pin erfolgt die serielle Datenkommunikation mit dem ESP8266.

Ein Blick auf das folgende Bild verdeutlicht die Anordnung dieser Pins am DS18B20.

 



 

Übersicht des ESP8266 und des DS18B20

1x ESP8266
1x Temperatursensor – DS18B20
3x Verbindungskabel

 



 

Hardware Aufbau / Verkabelung / Schaltungsaufbau

Um den DS18B20 Temperatursensor erfolgreich mit dem ESP8266 zu verbinden, sind lediglich drei einfache Verbindungen notwendig. Der 3,3V Ausgang des ESP8266 wird mit dem Vcc-Pin des DS18B20 verbunden, während die GND-Pins beider Komponenten miteinander verbunden werden. Für die Datenübertragung wird der DQ-Pin des DS18B20 mit einem digitalen Pin des ESP8266 verbunden, im folgenden Beispiel nutzen wir den D5-Pin.

Eine korrekte und sorgfältige Verdrahtung ist essentiell, damit der ESP8266 die Signale des DS18B20 Temperatursensors fehlerfrei empfangen kann. Sind diese Verbindungen hergestellt, kann mit der Software-Programmierung für den ESP8266 begonnen werden. Im nächsten Abschnitt zeigen wir detailliert, wie die notwendige Bibliothek eingebunden und der Code für das Auslesen des DS18B20 Sensors auf dem ESP8266 implementiert wird.

 

Software Programmierung für den ESP8266 mit dem DS18B20

Nachdem der Hardware-Aufbau erfolgreich abgeschlossen wurde, wenden wir uns nun der Programmierung des ESP8266 zu, um die Daten des DS18B20 auszulesen. In diesem Abschnitt werden die wesentlichen Schritte zur Erstellung des Codes detailliert beschrieben und die zentralen Funktionen erläutert, die dabei zum Einsatz kommen.
Schritt 1: IDE Projekt
Um mit der Programmierung für den ESP8266 zu beginnen, öffnen Sie zunächst die Arduino IDE auf Ihrem Computer. Sollten Sie die Arduino IDE noch nicht installiert haben, finden Sie unter folgendem Link eine Anleitung zur Installation: [Hier Link zur Installationsanleitung einfügen].
Nach dem Start der Arduino IDE erstellen Sie ein neues Projekt, indem Sie im Menü auf „Datei“ und anschließend auf „Neu“ klicken. Dadurch öffnet sich ein leeres Sketch-Fenster, in das Sie Ihren Code eingeben werden.


// Hier kommt dein Code
void setup(){
  // Initialisierung
}

void loop(){
  // Schleife
}

Schritt 2: Bibliothek einbinden
Für das Auslesen der Daten des DS18B20 Temperatursensors ist die Einbindung spezifischer Bibliotheken in Ihre Arduino IDE notwendig. Gehen Sie hierfür im Menü auf „Sketch“, wählen Sie „Bibliothek einbinden“ und klicken Sie dann auf „Bibliotheken verwalten…“.
Wir benötigen zwei Bibliotheken für dieses Projekt: „DallasTemperature“ und „OneWire“. Suchen Sie im Bibliotheksverwalter nach diesen beiden Begriffen und installieren Sie die jeweils neueste Version. Nur durch die Installation dieser Bibliotheken stehen Ihnen die notwendigen Funktionen zur Verfügung, um die Temperaturdaten des DS18B20 mit dem ESP8266 zu erfassen und zu verarbeiten.


#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 23
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

Schritt 3: Initialisierung
Bevor die void setup() Funktion ausgeführt wird, werden globale Variablen und Objekte deklariert. Hier werden die Bibliotheken OneWire.h und DallasTemperature.h eingebunden, die für die Kommunikation mit dem DS18B20 notwendig sind. Anschließend wird der Daten-Pin des ESP8266, an dem der DS18B20 angeschlossen ist (in diesem Fall Pin D5), als ONE_WIRE_BUS definiert. Danach werden Objekte der Klassen OneWire und DallasTemperature instanziiert, um die Kommunikation mit dem Sensor zu ermöglichen.

Schritt 4: Void Setup
Im void setup() Block werdenInitialisierungen durchgeführt, die nur einmal beim Start des ESP8266 ausgeführt werden. Zuerst wird die serielle Kommunikation mit einer Baudrate von 9600 Baud gestartet, was für die Ausgabe von Debug-Informationen und den Temperaturwerten im seriellen Monitor nützlich ist. Anschließend wird der für den OneWire-Bus verwendete Pin (D5) als Ausgang deklariert. Zuletzt wird die sensors.begin() Funktion aufgerufen, welche die DallasTemperature Bibliothek initialisiert und den DS18B20 Sensor startet.


void setup()
{
  Serial.begin(9600); //Initialize serial monitor
  pinMode(ONE_WIRE_BUS, OUTPUT);
  sensors.begin(); //Start up the library
}

Schritt 5: Loop Setup
Der void loop() Block enthält den Code, der kontinuierlich vom ESP8266 ausgeführt wird. Hier wird zuerst mit sensors.requestTemperatures() eine Anfrage an den DS18B20 gesendet, um die aktuelle Temperaturmessung zu starten. Anschließend wird der gemessene Temperaturwert in Grad Celsius des ersten gefundenen Sensors (Index 0) über die serielle Schnittstelle ausgegeben. Eine Verzögerung von 1000 Millisekunden (eine Sekunde) sorgt dafür, dass die Messungen nicht zu schnell aufeinander folgen.


void loop()
{
  sensors.requestTemperatures(); //Call sensor to request the Temperature
  Serial.println("Temperature is: " + String(sensors.getTempCByIndex(0)) + "°C"); //Output the values on the monitor
  delay(1000);
}

 

Gesamter Code für den ESP8266 mit dem DS18B20

Zur besseren Übersicht präsentieren wir hier noch einmal den vollständigen Programmcode, der für die Ansteuerung des DS18B20 Temperatursensors mit dem ESP8266 verwendet wird:


#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 23 on the Arduino
#define ONE_WIRE_BUS 23

// Setup a OneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass OneWire reference to Dallas Temperature
DallasTemperature sensors(&oneWire);

void setup()
{
  Serial.begin(9600); //Initialize serial monitor
  pinMode(ONE_WIRE_BUS, OUTPUT);
  sensors.begin(); //Start up the library
}

void loop()
{
  sensors.requestTemperatures(); //Call sensor to request the Temperature
  Serial.println("Temperature is: " + String(sensors.getTempCByIndex(0)) + "°C"); //Output the values on the monitor
  delay(1000);
}

 

Ausführung / Anwendung des DS18B20 mit dem ESP8266

Sobald der Programmcode in der Arduino IDE eingegeben wurde, muss dieser kompiliert und anschließend auf den ESP8266 übertragen werden, um die Temperaturdaten des DS18B20 auszulesen.
Die Vorgehensweise hierfür ist wie folgt:
Kompilieren: Klicken Sie in der Arduino IDE auf die Schaltfläche mit dem Häkchen-Symbol, um den Code auf Fehler zu überprüfen.
Hochladen: Ist die Kompilierung erfolgreich, klicken Sie auf die Schaltfläche mit dem Pfeil-Symbol, um den Code auf Ihren ESP8266 hochzuladen. Stellen Sie sicher, dass der ESP8266 korrekt mit Ihrem Computer verbunden und in der IDE ausgewählt ist.
Seriellen Monitor öffnen: Nach dem Hochladen öffnen Sie den seriellen Monitor der Arduino IDE (Werkzeuge -> Serieller Monitor oder das Lupen-Symbol rechts oben).
Temperaturanzeige: Im seriellen Monitor wird nun in regelmäßigen Abständen die aktuelle Temperatur angezeigt, die vom DS18B20 Sensor gemessen wird.