Temperatursensor – DS18B20 – ESP32 Tutorial

 


 

Einleitung

In diesem Artikel werden wir Ihnen ausführliche Schritt-für-Schritt-Anleitungen bieten und praktische Informationen vermitteln, um Ihnen beizubringen, wie Sie einen DS18B20 Temperatursensor erfolgreich mit einem ESP32 in der Arduino IDE programmieren können. Wir werden nicht nur die erforderlichen Komponenten und den optimalen Schaltungsaufbau behandeln, sondern auch den Code im Detail erläutern, um den Temperatursensor auszulesen und die Ergebnisse auf verständliche Weise darzustellen.

Am Ende dieses Artikels werden Sie in der Lage sein, den DS18B20 Temperatursensor effizient in Ihre Projekte mit dem ESP32 zu integrieren und eigene spannende Anwendungen zu entwickeln.

Falls das ihr erstes Projekt mit dem ESP32 ist, empfehle ich zunächst folgenden Artikel, in welchem ich das Einrichten des ESP32 zeige.
ESP32 erste Schritte

 

 

Verschaltung

Teile

1x ESP32
1x Temperatursensor – DS18B20
3x Verbindungskabel

Bibliotheken

OneWire.h

DallasTemperature.h

Code Download

 
 

Übersicht – Temperatursensor ( DS18B20 ) + ESP32

 




 

Hardware Aufbau – Verkabelung – Temperatursensor ( DS18B20 ) + ESP32

Bevor wir uns in die ESP32-Programmierung vertiefen, sollten wir zunächst den Hardware-Aufbau vorbereiten. Im kommenden Abschnitt werde ich Ihnen zeigen, wie Sie den ESP32 erfolgreich mit dem Temperatursensor DS18B20 verbinden können.

Für den Aufbau benötigen Sie 3 Verbindungen:

ESP32 3,3V Pin → Vcc
ESP32 GND Pin → GND
ESP32 Pin D23 → DQ

Die sorgfältige und korrekte Verdrahtung ist von entscheidender Bedeutung, um sicherzustellen, dass der ESP32 die Signale des DS18B20 Temperatursensors ordnungsgemäß erfassen kann.

Nachdem Sie diese Verbindungen erfolgreich hergestellt haben, sind Sie bereit, mit der Programmierung des ESP32 fortzufahren. Im nächsten Abschnitt werden wir ausführlich darauf eingehen, wie Sie die Bibliothek einbinden und den Code für den DS18B20 Temperatursensor programmieren können.

 




 

Software Programmierung – Temperatursensor ( DS18B20 ) + ESP32

Sobald der erfolgreiche Hardware-Aufbau abgeschlossen ist, können wir uns nun der ESP32-Programmierung zuwenden. In diesem Abschnitt werden wir ausführlich die essenziellen Schritte zur Codeerstellung behandeln und die Schlüsselfunktionen, die Sie verwenden werden, im Detail erläutern.

 
Schritt 1: Initialisierung

Öffnen der Arduino-IDE und Erstellen eines neuen Projekts
Um mit der Arduino-IDE zu arbeiten, öffnen Sie zunächst die Anwendung auf Ihrem Computer. Falls Sie die Arduino-IDE noch nicht installiert haben, können Sie unter folgendem Link eine Anleitung hierzu finden:
ESP32 in Arduino IDE erste Schritte

Nachdem Sie die Arduino-IDE geöffnet haben, erstellen Sie ein neues Projekt, indem Sie auf „Datei“ klicken und dann auf „Neu“. Dadurch wird ein neues Sketch-Fenster geöffnet, in dem Sie Ihren Code eingeben können.


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

void loop()
{
  // Schleife
}

 
Schritt 2: Bibliothek einbinden

Um die Daten des DS18B20 Temperatursensors auszulesen, ist es notwendig, eine geeignete Bibliothek in Ihre Arduino-IDE einzubinden. Gehen Sie dazu in der Menüleiste auf „Sketch“ und wählen Sie „Bibliothek einbinden“ aus. Klicken Sie dann auf „Bibliotheken verwalten…“.
Wir benötigen 2 Bibliotheken.

Suchen Sie einerseits nach der entsprechenden DS18B20-Bibliothek „DallasTemperature“ und fügen Sie sie Ihrem Projekt hinzu.
Zudem benötigen wir noch die „OneWire“ Bibliothek.

Nur so erhalten Sie die erforderlichen Funktionen, um die Temperaturdaten zu erfassen und auszulesen.


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

 
Schritt 3: Pin + OneWire + DallasTemperature definieren

Zunächst legen wir unseren Pin per „define“-Befehl fest damit wir diesen im folgenden Code nicht immer wiederholen müssen. In diesem Beispiel verwenden wir Pin23.
Danach das Setup der OneWire Instanz. Hier legen wir den Pin fest, welcher über OneWire kommunizieren soll.
Dann die Übergabe der OneWire-Referenz an Dallas Temperature.


// 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);

 

Schritt 4: Void Setup

Im Void Setup-Teil des Codes führen Sie die Initialisierungen durch, die nur einmal am Anfang des Programms ausgeführt werden müssen. Fügen Sie den folgenden Code hinzu:


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

Der Serial.begin(9600) Befehl initialisiert den seriellen Monitor mit einer Baudrate von 9600, sodass Sie die empfangenen Werte später auf dem Monitor angezeigt werden können.
Über pinMode wird der Pin an welchen der Temperatursensor hängt als Output definiert.
Danach wird über „sensors.begin();“ die Bibliothek gestartet.

 
Schritt 5: Loop Setup

Der Loop-Teil des Codes wird kontinuierlich wiederholt, solange der ESP32 eingeschaltet ist. Hier erfolgt die eigentliche Verarbeitung der Temperaturwerte des Temperatursensors.


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);
}

Der erste Befehlt sendet an den Temperatur die Anfrage, dass von ihm die aktuelle Temperatur haben möchten.
Danach wird die Empfangene Temperatur auf dem Serial monitor ausgegeben. Hier in grad Celsius.
Dann wird eine Pause von 1 Sekunde eingelegt. So fragen wir jede Sekunde die aktuelle Temperatur ab.

Schritt für Schritt – Zusammenfassung
→ Schritt 1: Initialisierung
Arduino-Board anschließen,
IDE öffnen
Datei -> Neu
Werkzeug -> Board -> Arduino Uno
Port -> Arduino Uno

→ Schritt 2:
Bibliothek einbinden.

→ Schritt 3:
Pin + OnWire + DallasTemperature initialisieren.

→ Schritt 4: Void Setup
Serial Monitor Initialisierung ausführen.
Pinmode definieren.
Bibliothek starten.

→ Schritt 5: Void Loop
Temperatur beim Temperatursensor anfragen.
Temperatur im Monitor ausgeben.
1 Sekunde warten.

 




 

Gesamter Programmiercode – Temperatursensor ( DS18B20 ) + ESP32

Nochmal zur Übersicht den gesamten Programmier-Code aufgezeigt.


#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 – Temperatursensor ( DS18B20 ) + ESP32

Nachdem der Code nun in die IDE eingegeben ist, muss dieser noch ausgeführt werden und auf den Arduino übertragen werden.
Hierzu geht man wie folgt vor:
Schritt 1: Überprüfen (Haken)
Schritt 2: Hochladen (Pfeil)
Schritt 3: Serieller Monitor öffnen
Schritt 4: Auf Display wird die aktuelle Temperatur anzeigt

Nachdem der ESP32 nun programmiert ist, wird die Temperatur auf dem Monitor ausgegeben. Jede Sekunde die aktuelle Temperatur.