In diesem Beitrag möchte ich dir zeigen wie du den Temperatursensor DS18B20 am ESP32 programmierst.
Diesen Sensor habe ich dir bereits in diversen Beiträgen vorgestellt und gezeigt, wie dieser am Arduino programmiert wird. Dieser Beitrag ist die Ergänzung zum ESP32 und somit die kleine Lücke schließen.
Für die Programmiersprache MicroPython habe ich dir dieses kleine Projekt bereits im Beitrag Programmieren mit MicroPython #6: digitaler Temperatursensor DS18B20 am ESP32 gezeigt, in der Arduino IDE programmierst du jedoch in C/C++.
Benötigte Ressourcen für dieses Projekt
Wenn du das kleine Projekt nachbauen möchtest, dann benötigst du:
- ein ESP32,
- ein Micro-USB Datenkabel,
- einen Temperatursensor DS18B20,
- drei Breadboardkabel, männlich-männlich,
- ein 400 Pin Breadboard
Den Temperatursensor DS18B20 bekommst du als einzelnen Baustein im TO-92 Format und auf einer Platine mit einer fertigen Schaltung für diesen.
Solltest du den Baustein verwenden, so musst du zusätzlich noch einen 4,7 kOhm Widerstand.
Technische Daten des Temperatursensors DS18B20
Zunächst zu den technischen Daten des Sensors:
- Betriebsspannung – 3.0V bis 5.5V
- Messbarer Temperaturbereich von -55 °C bis +125 °C
- Toleranz – ±0.5 °C
- Auflösung des Thermometers von 9 bis 12Bit
- jeder Sensor hat einen eindeutigen und einmaligen 64Bit Code auf dem onboard ROM
Aufbau der Schaltung am ESP32 mit TO-92 Baustein
Wenn du den Baustein einzeln hast, dann musst du einen 4,7 kOhm Widerstand von dem Data-Pin zur 5 V Versorgungsspannung stecken.
In meinem Fall verwende ich den Sensor auf einer Platine und somit entfällt die kleine Schaltung.
Pinout des Sensors
Der Temperatursensor verfügt über 3 Beinchen, welche wie in der nachfolgenden Grafik belegt sind.
Besonders ist darauf zu achten, dass die eine Seite des Gehäuses abgeflacht ist, daran erkennt man auch wie dieser angeschlossen / verkabelt wird.
ESP32 von AZ-Delivery
Für die Schaltung verwende ich den ESP32 im Formfaktor des Arduino UNO. Dieses Format erlaubt die Verwendung von Shields welche direkt auf den Mikrocontroller gesteckt werden und auch selbst gedruckte Adapter, welche die zusätzliche Aufnahme von Breadboards ermöglicht.
Diesen Mikrocontroller habe ich dir bereits im Beitrag AZ-Delivery D1 Board mit ESP32 Chip vorgestellt.
Programmieren in der Arduino IDE 2.0
Damit wir den Sensor auslesen können, benötigen eine Bibliothek. Diese Bibliothek lässt sich sehr einfach über den internen Bibliotheksverwalter installieren.
Den Bibliotheksverwalter erreichst du über das Symbol (1) auf der linken Seite. Im nächsten Schritt suchst du nach “ds18b20” (2) und wählst die Schaltfläche “INSTALL” (3) am Eintrag “DS18B20_int by Rob Tillaart”.
Wenn die Installation abgeschlossen ist, dann erscheint der Text “INSTALLED” (4).
Nun können wir die Bibliothek über Sketch > Include Library > DS18B20_int einbinden.
Nachfolgend nun das kleine Programm zum lesen der Temperatur vom Sensor.
Die gelesene Temperatur wird zusätzlich in Fahrenheit und Kelvin ausgegeben.
#include <DS18B20_INT.h> #define sensorPin 14 OneWire oneWire(sensorPin); DS18B20_INT sensor(&oneWire); void setup() { Serial.begin(115200); sensor.begin(); } void loop() { sensor.requestTemperatures(); int tempC = sensor.getTempC(); int tempF = tempC + 32; float tempK = tempC + 273.15; Serial.print("Temperatur "); Serial.print(String(tempC)); Serial.print("°C"); Serial.print(" | "); Serial.print(String(tempF)); Serial.print("°F"); Serial.print(" | "); Serial.print(String(tempK, 2)); Serial.print("°K"); Serial.println(); delay(2500); }