Die Temperatur misst man am besten mit einem DS18B20
DS18B20-2.jpg (3.38 KiB) 10412 mal betrachtet
Der DS18B20 ist ein digitaler Temperatursensor mit einer einstellbaren Auflösung von 9-12bit und eine Messgenauigkeit von ±0.5°C im Bereich von -10°C bis +85°C. Am besten versorgt man den Sensor mit 5V. Dann benötigt man noch einen Pull-Up Widerstand von 4,7K Ohm zwischen 5V und GND. Die Datenleitung zum ESP32
ESP32-USB.jpg (32.56 KiB) 10403 mal betrachtet
schliesst man an D4 (GIOP4) an.
tmperatur.jpg (33.61 KiB) 10332 mal betrachtet
Dieses Micro-Python-Programm erkennt wie viele Sensoren angeschlossen sind und gibt die Temperatur im Terminal aus.
from machine import Pin
import onewire
import ds18x20
import time
# DS18B20 an GPIO 4 (D4) initialisieren
datapin = Pin(4)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(datapin))
# Sensoren suchen
roms = ds_sensor.scan()
print('Gefundene DS18B20 Sensoren:', roms)
def read_temperature():
try:
ds_sensor.convert_temp()
time.sleep_ms(750) # Warten auf Messung
for rom in roms:
temp = ds_sensor.read_temp(rom)
return temp
except Exception as e:
print('Fehler beim Auslesen:', e)
return None
# Dauerschleife
while True:
temperature = read_temperature()
if temperature is not None:
print('Temperatur: {:.2f}°C'.format(temperature))
else:
print('Fehler beim Auslesen der Temperatur')
time.sleep(2)
Screenshot_2025-10-22_12-23-15.jpg (7.35 KiB) 10247 mal betrachtet
Ich arbeite gerne mit Klassen welche ich mit Thonny auf dem ESO32-Board speichere und dann einfach aufrufe:
PS: DS1820=9Bit, DS18B20=9..12Bit Auflösung
from DS18B20_temp_class import DS18B20
import time
# Verwendung
sensor = DS18B20(4) # Sensor instanzieren
while True:
temps = sensor.read_temp() # Temperatur messen
if temps:
for i, temp in enumerate(temps):
print(f'Sensor {i}: {temp:.1f}°C') # und formatiert ausgeben
time.sleep(2) # im 2 Sekunden Takt
PS. Am gleichen Bus können auch mehrere Sensoren parallel angeschlossen werden.