Alternative zu DHT22: Der SHTC3 als I2C-Temperatursensor für deinen ESP32

Jeder, der mit Mikrocontrollern bastelt, kennt ihn: den DHT22. Er ist günstig und steckt in fast jedem Anfänger-Set. Aber wenn die Projekte größer werden, zeigt der weiße Klassiker auch schonmal seine Schwächen. Er ist langsam und blockiert einen Digitalen Pin.

Heute zeige ich euch eine moderne, schnelle und präzise Alternative für den ESP32 (einen leistungsstarken Mikrocontroller von Espressif Systems): Den SHTC3 Sensor von Sensirion.

Das Beste daran? Er kommuniziert über den I2C-Bus (Inter-Integrated Circuit). Das bedeutet, wir brauchen nur zwei Datenleitungen, an die wir später sogar noch weitere Geräte wie kleine Displays anschließen können!

Die Sensoren im Vergleich

EigenschaftSHTC3 (Sensirion)DHT22 (auch AM2302)
Messbereich Temperatur-40 °C bis +125 °C-40 °C bis +80 °C
Temperatur-Genauigkeit±0,2 °C *±0,5 °C *
Messbereich Luftfeuchtigkeit0 % bis 100 %0 % bis 100 %
Luftfeuchte-Genauigkeit±2 % *±2 % bis ±5 % (schwankt stark je nach Modul) *
Schnittstelle (Protokoll)I2C (Inter-Integrated Circuit)1-Wire (Herstellerspezifisches Protokoll)
Betriebsspannung1,62 V bis 3,6 V3,3 V bis 5,5 V
Auslese-Geschwindigkeitsehr schnell (unter 20 Millisekunden)langsam (maximal alle 2 Sekunden)
Stromverbrauchniedrig (ca. 0,5 µA im Standby)höher (ca. 40 bis 50 µA im Standby)

* Die garantierte Genauigkeit in der Praxis: Die größte Stärke des Sensors liegt jedoch in der Präzision bei alltäglichen Bedingungen. Wenn du den Sensor nicht gerade in einem Backofen oder einer Tiefkühltruhe betreibst, liefert er herausragende Werte:

  • Bei einer Temperatur zwischen 5 °C und 60 °C liegt die Abweichung bei maximal ±0,2 °C.
  • Bei einer Luftfeuchtigkeit zwischen 20 % und 80 % RH liegt die Abweichung bei maximal ±2 %.

Was du für dieses Projekt brauchst

  • ESP32 Mikrocontroller
  • SHTC3 Sensor (Oft als kleine Platine, ein sogenanntes „Breakout-Board“, oder als Exot sogar im vertrauten weißen Plastikgehäuse zu finden)
  • Ein paar Jumper-Kabel (Verbindungskabel) zum Stecken

Schritt 1: Die Verkabelung (Hardware)

Der I2C-Bus nutzt zwei Leitungen für die Daten: SDA (Serial Data = Datenleitung) und SCL (Serial Clock = Taktleitung). Beim ESP32 liegen diese Funktionen standardmäßig auf festen Pins, sogenannten GPIOs (General Purpose Input/Output).

Verbinde den Sensor einfach nach diesem Schema:

SHTC3 SensorESP32 PinWas macht das Kabel?
VIN / VCC3.3VStromversorgung (Pluspol)
GNDGNDMasse (Minuspol)
SDAGPIO 21Daten fließen hier hin und her
SCLGPIO 22Gibt den Takt für die Daten vor

Wichtiger Tipp für die Praxis: Schließe den Sensor bitte niemals an 5 Volt an! Der SHTC3 arbeitet intern mit maximal 3,3 Volt. Zu viel Spannung zerstört den kleinen Chip sofort.

Schritt 2: Die Bibliothek installieren

Damit wir nicht mühsam jedes einzelne Datenpaket selbst entschlüsseln müssen, nutzen wir eine vorgefertigte Bibliothek.

  1. Öffne deine IDE (Integrated Development Environment / Entwicklungsumgebung), zum Beispiel die Arduino IDE.
  2. Gehe in den Bibliotheksverwalter.
  3. Suche nach Adafruit SHTC3.
  4. Klicke auf Installieren (und installiere eventuell angebotene Abhängigkeiten einfach mit).

Schritt 3: Der Programmcode (Software)

Hier ist Beispiel Sketch aus der Library, das den Sensor ausliest. Lade diesen Code auf deinen ESP32 hoch:

/*************************************************** 
  This is an example for the SHTC3 Humidity & Temp Sensor

  Designed specifically to work with the SHTC3 sensor from Adafruit
  ----> https://www.adafruit.com/products/4636

  These sensors use I2C to communicate, 2 pins are required to  
  interface
 ****************************************************/

#include "Adafruit_SHTC3.h"

Adafruit_SHTC3 shtc3 = Adafruit_SHTC3();

void setup() {
  Serial.begin(115200);

  while (!Serial)
    delay(10);     // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("SHTC3 test");
  if (! shtc3.begin()) {
    Serial.println("Couldn't find SHTC3");
    while (1) delay(1);
  }
  Serial.println("Found SHTC3 sensor");
}


void loop() {
  sensors_event_t humidity, temp;
  
  shtc3.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
  
  Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C");
  Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");

  delay(1000);
}

Serielle Ausgabe:

Fazit: Warum sich der Wechsel lohnt

Wenn du den Code hochgeladen und den Seriellen Monitor (oben rechts in der IDE) geöffnet hast, siehst du nun jede Sekunde frische Messwerte.

Im Gegensatz zum alten DHT22 liefert der SHTC3 seine Werte in wenigen Millisekunden. Er misst genauer, verbraucht weniger Strom und durch den I2C-Bus sparen wir uns wertvolle Anschlüsse am ESP32. Gerade für Smart-Home-Basteleien oder eigene Wetterstationen ist dieser Sensor ein massives Upgrade, das einem im Code viel Kopfschmerzen erspart. Für 5V Arduino‘s aber nicht zu gebrauchen.

, ,
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzerkomfort bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst und hilft uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.