Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Programmieren mit MicroPython #6: digitaler Temperatursensor DS18B20 am ESP32

Posted on 5. Juli 20219. März 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie du den digitalen Temperatursensor DS18B20 am ESP32 mit MicroPython programmierst. 

Temperatursensor DS18B20

Zunächst einmal zeige ich dir wie du den digitalen Temperatursensor mit dem ESP32 verbindest und danach wie du dir ein einfaches Programm schreibst und die Werte des Sensors auf der Konsole anzeigen lassen kannst.

  • Bezug eines DS18B20
  • Technische Daten des Temperatursensors DS18B20
  • Aufbau & Schaltung – ESP32 mit DS18B20
    • Schaltung auf dem Breadboard
  • Programmieren des Temperatursensors DS18B20 am ESP32 mit MicroPython
  • Video

Bezug eines DS18B20

Den Temperatursensor DS18B20 erhältst du in zwei Ausführungen (jedenfalls kenne ich diese beiden), zum einen als offenes Bauteil oder aber als vergossenes, wasserdichtes Gehäuse. 

Sensorebay.de* amazon.de*aliexpress.com**conrad.dereichelt.deelv.de
DS18B20, offenes Bauteil 2,75 €  4,87 € 0,32 € 4,82 € 2,20 € –
DS18B20, wasserdichtes Gehäuse 3,95 € 3,82 € 0,90 € 7,13 € 6,99 € 5,95 €

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

** Auf der Plattform aliexpress.com erhält man kleine Elektronikartikel sehr günstig, jedoch muss man bei den Versandkosten aufpassen, diese können sehr stark variieren.

Für die Plattformen ebay.de sowie amazon.de habe ich dir passende Links zu den Suchen hinterlegt.

Technische Daten des Temperatursensors DS18B20

Den digitalen Temperatursensor habe ich bereits im Beitrag Arduino Lektion 48: Temperatursensor DS18B20 für den Arduino UNO vorgestellt, in diesem Beitrag verwende ich das gleiche Bauteil und somit ergeben sich auch folgende technische Daten:

  • 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 & Schaltung – ESP32 mit DS18B20

Der Temperatursensor DS18B20 verfügt über 3 Beinchen, welche wie folgt belegt sind:

Pinout – Temperatursensor DS18B20

Für den Aufbau der Schaltung benötigst du:

  • einen ESP32,
  • einen digitalen Temperatursensor DS18B20,
  • ein 4,7 kOhm Widerstand,
  • drei Breadboardkabel,
  • ein 400 Pin Breadboard

An Werkzeugen benötigst du ggf. nur einen Seitenschneider um die Beinchen des Widerstandes etwas zu kürzen, ansonsten werden alle Bauteile auf das Breadboard, lötfrei gesteckt.

digitaler Temperatursensor DS18B20 am ESP32
digitaler Temperatursensor DS18B20 am ESP32

Schaltung auf dem Breadboard

Schaltung - digitaler Temperatursensor DS18B20 am ESP32
Schaltung – digitaler Temperatursensor DS18B20 am ESP32

Programmieren des Temperatursensors DS18B20 am ESP32 mit MicroPython

from machine import Pin
from onewire import OneWire
from ds18x20 import DS18X20
from time import sleep

#digitaler Temperatursensor DS18B20 am GPIO 4 angeschlossen
pin = Pin(4)
#erstellen eines Objektes zum Zugriff auf die / den Temperatursensor
tempSensor = DS18X20(OneWire(pin))
#suchen der Sensoren
sensors = tempSensor.scan()
#ausgeben der Liste der gefundenen Sensoren
print('gefundende(r) Sensor / Sensoren: ', len(sensors))

#Wenn min. 1 Sensor gefunden wurde dann...
if(sensors):
  #Ausgabe der Tabellenüberschriften
  print("Sensor\t\t\t|Celsius\t|Fahrenheit\t|Kelvin")
  #eine Endlosschleife starten
  while True:
    #empfangen und umwandeln des Sensorwertes
    tempSensor.convert_temp()
    #eine kleine Pause von 0,5 Sekunden
    sleep(0.5)
    #Anzahl der Nachkommastellen für das runden der Temperaturwerte
    digits = 2
    
    #Für jeden gefundenen Sensor mache...
    for sensor in sensors:
      #lesen und runden des Temperaturwertes in Grad Celsius
      tempCelsius = round(tempSensor.read_temp(sensor),digits)
      #berechnen des Temperaturwertes in Grad Fahrenheit aus Grad Celsius
      tempFahrenheit = round((tempCelsius * 9/5)+32,digits)
      #berechnen des Temperaturwertes in Grad Kelvin aus Grad Celsius
      tempKelvin = round(tempCelsius + 273.15, digits)
      #Ausgeben der Temperaturwerte
      print(sensor, "\t|", tempCelsius,"\t|", tempFahrenheit,"\t|", tempKelvin )
      #eine kleine Pause von 2 Sekunden
    sleep(2)
else:
  #Wenn keine Temperatursensoren vom Typ DS18B20 gefunden wurden dann soll eine Fehlermeldung ausgegeben werden.
  print("Es wurden keine Sensoren vom Typ DS18B20 gefunden!")

Video

5 thoughts on “Programmieren mit MicroPython #6: digitaler Temperatursensor DS18B20 am ESP32”

  1. Manfred Prefi sagt:
    25. Juni 2023 um 21:37 Uhr

    Das ist ja richtig einfach. Folgende Fragen noch dazu:

    Kann man die Ausgabe auch in eine Datei umleiten (am besten durch Anhängen)?
    Kann man auch Datum und Uhrzeit angeben?
    Kann man das ganze Programm (etwa ab ’suchen der Sensoren‘ in einer Endlosschleife nach jeder Stunde – also 3600 sek) ablaufen lassen?
    Danke

    Antworten
    1. Stefan Draeger sagt:
      26. Juni 2023 um 11:51 Uhr

      Hi Manfred,

      dein kleines Projekt hört sich recht easy an (jedenfalls für mich, sorry).
      Du benötigst dann entweder eine RealTimeClock DS3231 oder du nutzt die WiFi-Funktion
      des ESP32 und holst dir den Zeitstempel von einem NTP-Server.

      Um die Daten auf eine SD-Card zu schreiben, benötigst du ein entsprechendes Modul, diese gibt es
      für beide Formfaktoren, welche jedoch gleichermaßen per SPI verbunden wird.

      Gruß, Stefan

      Antworten
  2. Pingback: Datenlogging mit MicroPython und ESP32: Speichere Sensorwerte mit Zeitstempel auf eine SD-Karte - Technik Blog
  3. Pingback: Arduino UNO R3 mit DS18B20 Sensor & Relais - Technik Blog
  4. Pingback: Shelly 1 #2 - Temperatursensor DS18B20 anschließen - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}