Montag, 2025-07-14_IoT-Netzwerktechnik-WIT¶
Sensoren & Mikrocontroller: SR04, DHT22, ESP32-WROOM-32¶
Wichtiger Hinweis:
Neue Bauteile nur bei getrennter Stromzufuhr (USB) ins Steckbrett einsetzen.
Überblick: Programmstruktur¶
- setup()
- Initialisierung der Sensoren
- Pin-Definition
-
Start der seriellen Kommunikation
-
loop()
- Temperatur und Luftfeuchtigkeit auslesen
- Abstand messen
- Ergebnisse seriell ausgeben
- 3 Sekunden Pause
Verwendete Sensoren¶
DHT22 (Temperatur- & Feuchtesensor)¶
- Digitaler Sensor
- Liefert float-Werte
readHumidity()readTemperature()- Maximal ca. 1–2 Messungen pro Sekunde
HC-SR04 (Ultraschallsensor)¶
- Funktioniert nach dem Echoprinzip
- Sendet 10 µs Triggerimpuls
- Misst Laufzeit des reflektierten Signals
- Abstandberechnung:
Abstand (cm) = Dauer / 58.2
Warum ESP32-WROOM-32?¶
- 3.3 V Logikpegel (empfindlicher als 5 V-Systeme)
- Mehr Rechenleistung und Speicher
- Integriertes WLAN & Bluetooth
- Viele digitale I/O-Pins
- Ideal für IoT-Projekte
Arduino-Code (kommentiert)¶
#include "DHT.h"
#define DHTPIN 22
#define Trigger_AusgangsPin 23
#define Echo_EingangsPin 21
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int maximumRange = 600;
int minimumRange = 2;
int Abstand;
long Dauer;
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(Trigger_AusgangsPin, OUTPUT);
pinMode(Echo_EingangsPin, INPUT);
}
void loop() {
Serial.println("---------Temperatur und Luftfeuchtigkeit (DHT22) ----------");
float h = dht.readHumidity();
float t1 = dht.readTemperature();
if (isnan(h) || isnan(t1)) {
Serial.println("Fehler beim Lesen des Sensors");
return;
}
Serial.print("Luftfeuchtigkeit: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatur: ");
Serial.print(t1);
Serial.print(char(186));
Serial.println("C");
Serial.println("-----------------------------------------------------------");
digitalWrite(Trigger_AusgangsPin, HIGH);
delayMicroseconds(10);
digitalWrite(Trigger_AusgangsPin, LOW);
Dauer = pulseIn(Echo_EingangsPin, HIGH);
Abstand = Dauer / 58.2;
if (Abstand >= maximumRange || Abstand <= minimumRange) {
Serial.println("Abstand außerhalb des Messbereichs");
} else {
Serial.print("Der Abstand beträgt: ");
Serial.print(Abstand);
Serial.println(" cm");
Serial.print("Die Dauer beträgt: ");
Serial.print(Dauer);
Serial.println(" µs");
}
Serial.println("-----------------------------------------------------------");
delay(3000);
}
Erklärung: Datentypen & Ressourcen¶
int→ 2 Byte (bis 32.767)long→ 4 Byte- Für Zentimeterwerte reicht
intvöllig aus pulseIn()liefert Zeit in MikrosekundenSerial.begin()gehört ausschließlich insetup()
Technische Hinweise¶
- ESP32-Pinbelegung prüfen
- HC-SR04 startet mit 10 µs Triggerimpuls
delay(3000)blockiert den Controllerchar(186)dient der Grad-Symbol-Ausgabe- Fehlerhafte Sensorwerte werden mit
isnan()abgefangen
Verständnisfragen (AP1-relevant)¶
- Was macht
pulseIn()genau? - Warum wird durch 58.2 geteilt?
- Unterschied
intvs.long? - Was passiert bei
isnan()? - Warum darf
Serial.begin()nicht imloop()stehen? - Welche Vorteile bietet der ESP32 gegenüber dem Arduino Uno?
Metadaten anzeigen
Teil der FIAE-Umschulung (2025-2027) am BFW Muehlenbeck.
Diese Mitschrift entstand im Unterricht am 14.07.2025 mit WIT.
Sie basiert auf gemeinsam erarbeiteten Inhalten und ergaenzenden Uebungsbeispielen vom 14.07.2025.
Die Version wurde inhaltlich ueberarbeitet, strukturell optimiert und technisch ergaenzt,
um Lernerfolg, Pruefungsrelevanz und Nachvollziehbarkeit zu foerdern.
Quelle: Eigene Mitschrift & Unterrichtsinhalte
Autor: Sean Conroy
Lizenz: CC BY-NC-SA 4.0