Temperaturmessung mit Arduino und DHT11-Sensor

In diesem Experiment zeigen wir, wie man mit einem Arduino Uno R3, einem DHT11-Temperatursensor und einem 1602 LCD-Modul die Umgebungstemperatur misst und anzeigt. Zusätzlich steuern wir LEDs basierend auf der gemessenen Temperatur.

 

Benötigte Materialien:

  • Arduino Uno R3
  • DHT11-Temperatursensor
  • 1602 LCD-Modul
  • Potentiometer (10k Ohm)
  • Widerstände (wenn benötigt für LEDs)
  • 3 LEDs
  • Steckbrett und Verbindungskabel

Schaltplan:

  1. DHT11-Temperatursensor:

    • VCC -> 5V (Arduino)
    • GND -> GND (Arduino)
    • DATA -> Digital Pin 9 (Arduino)
  2. 1602 LCD-Modul:

    • VSS -> GND (Arduino)
    • VDD -> 5V (Arduino)
    • V0 -> Mittenanschluss des Potentiometers (andere zwei Anschlüsse an 5V und GND)
    • RS -> Digital Pin 12 (Arduino)
    • RW -> GND (Arduino)
    • E -> Digital Pin 11 (Arduino)
    • D4 -> Digital Pin 5 (Arduino)
    • D5 -> Digital Pin 4 (Arduino)
    • D6 -> Digital Pin 3 (Arduino)
    • D7 -> Digital Pin 2 (Arduino)
    • A -> 5V (mit einem Vorwiderstand falls nötig)
    • K -> GND (Arduino)
  3. LEDs:

    • Anoden der LEDs -> Digital Pins 6, 7, und 8 (Arduino)
    • Kathoden der LEDs -> GND (Arduino)

Schritt-für-Schritt Anleitung:

  1. Bibliotheken installieren:

    • Öffne die Arduino IDE.
    • Gehe zu Sketch > Bibliothek einbinden > Bibliotheken verwalten.
    • Suche nach "DHT sensor library" von Adafruit und installiere sie.
  2. Verbindungen herstellen:

    • Verbinde den DHT11-Temperatursensor gemäß dem Schaltplan.
    • Verbinde das 1602 LCD-Modul und justiere das Potentiometer, um den Kontrast einzustellen.
    • Verbinde die LEDs mit den digitalen Pins 6, 7 und 8.
  3. Code hochladen:

    • Kopiere den folgenden Code in die Arduino IDE und lade ihn auf dein Arduino Uno hoch: 
    • #include <DHT.h>
      #include <LiquidCrystal.h>

      // DHT11 setup
      #define DHTPIN 9     // Pin where the DHT sensor is connected
      #define DHTTYPE DHT11   // DHT11 type
      DHT dht(DHTPIN, DHTTYPE);

      // LCD setup
      LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

      int baselineTemp = 40;
      float celsius = 0.0;
      float kelvin = 0.0;

      void setup() {
        Serial.begin(9600);
        dht.begin();
        lcd.begin(16, 2);
        pinMode(6, OUTPUT);
        pinMode(7, OUTPUT);
        pinMode(8, OUTPUT);
      }

      void loop() {
        // Measure temperature in Celsius
        celsius = dht.readTemperature();

        // Check if the sensor is returning valid data
        if (isnan(celsius)) {
          Serial.println("Failed to read from DHT sensor!");
          return;
        }

        // Convert to Kelvin
        kelvin = celsius + 273.15;

        // Print temperature to the serial console
        Serial.print(celsius);
        Serial.print(" C ");
        Serial.print(kelvin);
        Serial.println(" K ");

        // Display temperature on the LCD
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(" C :");
        lcd.setCursor(5, 0);
        lcd.print(celsius);
        lcd.setCursor(0, 1);
        lcd.print(" K :");
        lcd.setCursor(5, 1);
        lcd.print(kelvin);

        // Control LEDs based on the temperature
        if (celsius < baselineTemp) {
          digitalWrite(6, LOW);
          digitalWrite(7, LOW);
          digitalWrite(8, LOW);
        } else if (celsius < baselineTemp + 10) {
          digitalWrite(6, HIGH);
          digitalWrite(7, LOW);
          digitalWrite(8, LOW);
        } else if (celsius < baselineTemp + 20) {
          digitalWrite(6, HIGH);
          digitalWrite(7, HIGH);
          digitalWrite(8, LOW);
        } else if (celsius < baselineTemp + 30) {
          digitalWrite(6, HIGH);
          digitalWrite(7, HIGH);
          digitalWrite(8, HIGH);
        } else {
          digitalWrite(6, HIGH);
          digitalWrite(7, HIGH);
          digitalWrite(8, HIGH);
        }

        delay(2000); // Wait for 2 seconds before the next measurement
      }

    •  
    •  
    • Erklärung des Codes:

      1. Bibliotheken einbinden:

        • #include <DHT.h> und #include <LiquidCrystal.h> binden die benötigten Bibliotheken ein.
      2. DHT11-Sensor und LCD initialisieren:

        • #define DHTPIN 9 definiert den Datenpin des DHT11-Sensors.
        • DHT dht(DHTPIN, DHTTYPE); erstellt eine DHT-Objektinstanz.
        • LiquidCrystal lcd(12, 11, 5, 4, 3, 2); initialisiert das LCD-Modul.
      3. Setup-Funktion:

        • Initialisiert die serielle Kommunikation, den DHT11-Sensor, das LCD und die LED-Pins.
      4. Loop-Funktion:

        • Liest die Temperaturdaten vom DHT11-Sensor.
        • Zeigt die Temperatur in Celsius und Kelvin auf dem LCD an.
        • Steuert die LEDs basierend auf der gemessenen Temperatur.

      Fazit:

      Mit diesem Experiment hast du gelernt, wie man die Temperatur mit einem Arduino Uno und einem DHT11-Sensor misst und die Ergebnisse auf einem LCD anzeigt. Zudem hast du gesehen, wie man LEDs basierend auf der Temperatur steuern kann. Dieses Projekt ist ideal für Anfänger, die ihre Fähigkeiten in der Arbeit mit Sensoren und Displays erweitern möchten.