Praxis

 

Praxis 16: Optische Anzeige der Temperaturbereiche durch LEDs

 

Benötigtes Material:

  • ESP32 Dev Modul mit USB-Kabel
  • Breadboard
  • fünf Kabelstück (männlich↔männlich)
  • sechs Kabelstücke (weiblich↔männlich)
  • DHT11-Sensor
  • vier Widerstände mit je 220 Ohm
  • je eine LED in rot, grün und blau
  • später: einstellige 7-Segment-Anzeige

 

 

 

 

Die Ausgabe der Messwerte über die Serielle Konsole ist in vielen Fällen nicht ausreichend, da hierfür ein PC dauerhaft laufen müsste. Daher sollen nun drei LED (rot, grün und blau) verwendet werden, die den Temperaturbereich direkt auf dem Breadboard anzeigen können. Dabei soll die grüne LED den „Komfortbereich“ anzeigen. Ist es (zu) kalt, soll die blaue LED leuchten und wenn es (zu) warm ist, die rote.

Die rechte Darstellung zeigt, wie man das Breadboard bestücken könnte. Die LEDs sind dabei an GPIO02(rot), GPIO04(grün) und GPIO16(blau) angeschlossen.

#include <Arduino.h>
/* -------------------------------------
    Praxis 16
    DHT11-Messung
    Ausgabe über drei LEDs und
                   Seriellen Monitor
  -----------------------------------*/

#include <DHT.h>
#define DHT_SENSOR_PIN 26       // ESP32 Pin GIOP26 führt zu DHT11 Sensor
#define DHT_SENSOR_TYPE DHT11   // Es ist ein DHT11

DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
int LEDrot = 2;
int LEDgru = 4;
int LEDbla = 16;
const float kalt = 19;          // Schwelle zum Einschalten der blauen LED
const float warm = 22;          // Schwelle zum Einschalten der roten LED

void setup() {
  pinMode(LEDrot, OUTPUT);
  pinMode(LEDgru, OUTPUT);
  pinMode(LEDbla, OUTPUT);
  Serial.begin(115200);
  dht_sensor.begin();
}

void loop() {
  float humi = dht_sensor.readHumidity();
  float tempC = dht_sensor.readTemperature();
  if ( isnan(tempC) || isnan(humi)) {
    Serial.println("Fehler beim Lesen der Sensordaten!");
  } else {
    Serial.print("Feuchtigkeit: ");
    Serial.print(humi);
    Serial.print("% | Temperatur: ");
    Serial.print(tempC);
    Serial.println("°C ");
    if (tempC <= kalt) {
      digitalWrite(LEDrot, LOW);
      digitalWrite(LEDgru, LOW);
      digitalWrite(LEDbla, HIGH);
    } else {
      if (tempC <= warm) {
        digitalWrite(LEDrot, LOW);
        digitalWrite(LEDgru, HIGH);
        digitalWrite(LEDbla, LOW);
      } else {
        digitalWrite(LEDrot, HIGH);
        digitalWrite(LEDgru, LOW);
        digitalWrite(LEDbla, LOW);
      }
    }
  }
  delay(2000);
}

Sollte beim Kompilieren zu einem Fehler kommen, der sich auf die Datei „DHT.h“ bezieht, findet man auf den vorherigen Seiten den Hinweis, wie zusätzliche Bibliotheken in die IDE eingebunden werden können.

 

Aufgaben

  1. Bauen Sie die die Schaltung mit den LEDs auf einem Breadboard auf.
    Beachten Sie dabei die Polung der LEDs.
  2. Geben Sie den Sketch in die IDE ein.
  3. Fügen Sie die benötigte DHT Sensor Library zum Projekt hinzu, oder laden Sie sie in die IDE.
  4. Kompilieren und Übertragen Sie das Programm auf den ESP32.
    Direkt nach dem Start sollte eine der drei LED leuchten.
  5. Verwenden Sie statt der drei farbigen LEDs eine 7-Segment-Anzeige, die Sie so schalten, dass die Anzeige sich wie folgt verhält:
    Temperaturbereich Anzeige
    (zu) kalt
    Komfort
    (zu) warm
    Wenn Sie den Umbau der Schaltung geschickt vornehmen, ist keine Änderung des Sketches notwendig.