Wie lese ich Temperatur- und Luftfeuchtigkeitsdaten auf einem Mikrocontroller?
Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.
Das Auslesen von Temperatur- und Luftfeuchtigkeitsdaten mit einem Mikrocontroller erfordert in der Regel einen Sensor (wie DHT11, DHT22 oder SHT31) und die Verbindung mit deinem Mikrocontroller (z. B. Arduino, ESP32, STM32 oder Raspberry Pi Pico). Hier ist eine Schritt-für-Schritt-Anleitung:
1. Wähle einen Sensor
Häufig verwendete Temperatur- und Luftfeuchtigkeitssensoren:
-
DHT11 – Günstig, Genauigkeit ±2°C, Messbereich 20–80 % Luftfeuchtigkeit.
-
DHT22 (AM2302) – Bessere Genauigkeit (±0,5°C), Messbereich 0–100 % Luftfeuchtigkeit.
-
SHT31 – Hohe Genauigkeit (±0,2°C), I²C/SPI-Schnittstelle.
-
BME280 – Misst Temperatur, Luftfeuchtigkeit und Luftdruck (I²C/SPI).
-
AHT10/AHT20 – Digitaler I²C-Sensor, gut für ESP32/RPi Pico.
2. Verdrahtung des Sensors
Die meisten Sensoren nutzen I²C oder 1-Wire-Kommunikation.
Beispiel für DHT11/DHT22 (1-Wire):
DHT-Pin | Mikrocontroller |
---|---|
VCC | 3,3V / 5V |
GND | GND |
DATA | Digitaler GPIO-Pin |
Für I²C-Sensoren (SHT31, BME280):
Sensor-Pin | Mikrocontroller |
---|---|
VCC | 3,3V / 5V |
GND | GND |
SDA | I²C SDA (z. B. GPIO21 bei ESP32) |
SCL | I²C SCL (z. B. GPIO22 bei ESP32) |
*(Füge bei DHT-Sensoren einen 4,7-kΩ-Pull-up-Widerstand zwischen DATA und VCC hinzu.)*
3. Installiere die erforderlichen Bibliotheken
-
Arduino IDE:
-
Für DHT-Sensoren: Installiere die "DHT sensor library" von Adafruit.
-
Für I²C-Sensoren: Installiere die "Adafruit SHT31 Library" oder "BME280"-Bibliothek.
Gehe zu Sketch > Bibliothek einbinden > Bibliotheken verwalten und suche nach der Bibliothek.
-
-
MicroPython (RPi Pico/ESP32):
-
Nutze das
dht
-Modul für DHT-Sensoren. -
Für I²C-Sensoren verwende
machine.I2C
und sensorspezifische Bibliotheken.
-
4. Code-Beispiele
A. Arduino (DHT11/DHT22)
#include <DHT.h> #define DHTPIN 2 // GPIO-Pin, an den der DHT angeschlossen ist #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); } void loop() { float humidity = dht.readHumidity(); // Luftfeuchtigkeit auslesen (%) float temp = dht.readTemperature(); // Temperatur auslesen (°C) if (isnan(humidity) || isnan(temp)) { Serial.println("Fehler beim Auslesen des Sensors!"); return; } Serial.print("Temperatur: "); Serial.print(temp); Serial.print("°C"); Serial.print(" Luftfeuchtigkeit: "); Serial.print(humidity); Serial.println("%"); delay(2000); // Warte 2 Sekunden zwischen den Messungen }
B. ESP32/Arduino (I²C - SHT31)
#include <Wire.h> #include <Adafruit_SHT31.h> Adafruit_SHT31 sht31 = Adafruit_SHT31(); void setup() { Serial.begin(9600); if (!sht31.begin(0x44)) { // Standard-I²C-Adresse (0x44 oder 0x45) Serial.println("SHT31 nicht gefunden!"); while (1); } } void loop() { float temp = sht31.readTemperature(); float humidity = sht31.readHumidity(); Serial.print("Temperatur: "); Serial.print(temp); Serial.print("°C"); Serial.print(" Luftfeuchtigkeit: "); Serial.print(humidity); Serial.println("%"); delay(1000); }
C. MicroPython (DHT11 auf Raspberry Pi Pico)
from machine import Pin import dht import time d = dht.DHT11(Pin(2)) # DHT11 an GPIO2 anschließen while True: d.measure() temp = d.temperature() # °C hum = d.humidity() # % print(f"Temperatur: {temp}°C, Luftfeuchtigkeit: {hum}%") time.sleep(2)
5. Fehlerbehebung
-
"Fehler beim Auslesen des Sensors" → Überprüfe die Verdrahtung, Pull-up-Widerstand und Stromversorgung.
-
I²C-Probleme → Überprüfe die I²C-Adresse (
0x44
,0x76
usw.) mit einem I²C-Scanner. -
Falsche Werte → Stelle sicher, dass der richtige Sensortyp (DHT11 vs DHT22) im Code definiert ist.
6. Erweiterte Optionen
-
Nutze WiFi/Bluetooth (ESP32), um Daten an einen Server zu senden.
-
Speichere Daten auf einer SD-Karte oder zeige sie auf einem OLED-Display an.
-
Implementiere Energiesparmodi für batteriebetriebene Projekte.
Verwandte Artikel
- ·Was soll ich tun, wenn Arduino den seriellen Port nicht erkennt?
- ·Wie kann man einen Raspberry Pi für IoT-Projekte nutzen?
- ·Bodenqualitätsüberwachungssystem basierend auf STM32-Mikrocontroller
- ·Was sind die am häufigsten verwendeten Sensoren in Embedded-Systemen?
- ·Wie implementiert man DSP (digitale Signalverarbeitung) auf einem Mikrocontroller (MCU)?
- ·Wie steuern Sie eine LED oder ein Relais mit Arduino?
- ·Was sind die wichtigsten STM32-Serien und wie unterscheiden sich sie?
- ·Was sind die gängigen Embedded Development Plattformen? Was ist seine spezifische Anwendung?
- ·Was sind die Unterschiede zwischen den gängigen MCU-Familien (z.B. ARM Cortex-M, AVR, PIC, ESP32)?