Deine eigene Wetterstation

Lektion
Downloads

In diesem Projekt verbindest du deine Erfahrung mit dem DHT11 und deinem LCD-Display – indem du dir deine eigene Wetterstation baust. Du misst die Temperatur und Luftfeuchtigkeit und stellst die Werte auf deinem LCD-Display dar. Los geht’s!

Die Wetterstation aufbauen

Wenn du dein LCD-Display samt Verbindung zum Arduino noch auf dem Breadboard hast – wunderbar! Ansonsten erwarten dich noch einmal ein paar Minuten intensives Verkabeln. 😉 Damit wird es ziemlich voll auf deinem Breadboard. Orientiere dich beim Aufbau an folgender Skizze.

Wetterstation DHT11

Wie du siehst, ist hier einiges los auf dem Breadboard. Vergewissere dich bitte, dass alle Anschlüsse richtig sind, bevor du mit dem Sketch fortfährst.

___STEADY_PAYWALL___

Der Sketch für die Wetterstation

Du beginnst wie üblich mit den Bibliotheken, einigen Definitionen und Variablen und dem Erstellen von Objekten. Du kennst diese Zeilen bereits aus den vorangegangen Lektionen – achte jedoch bitte auf eine Änderung: Dein Temperatursensor ist diesmal mit dem Digital-Pin 7 deines Arduinos verbunden und entsprechend im Sketch definiert:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#include "DHT.h"
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

float temp;
float humidity;

Auch in der Setup-Funktion erwartet dich nichts Neues. Du „startest“ hier den Seriellen Monitor, das LCD-Display und den Sensor:

void setup() {

  Serial.begin(9600);
  lcd.begin(16, 2);
  dht.begin();
}

Der Loop

Im Loop misst du zuerst die Temperatur und die Luftfeuchtigkeit:

temp = dht.readTemperature();
humidity = dht.readHumidity();

Und gibst sie danach zunächst in deinem Seriellen Monitor aus:

Serial.print("Temperatur: ");
Serial.print(temp);
Serial.println(" *C");
Serial.print("Luftfeuchtigkeit: ");
Serial.print(humidity);
Serial.println(" %");
Serial.println();

Nun möchtest du die Daten natürlich nicht in deinem Seriellen Monitor „verstecken“, sondern sie auf dem LCD-Display anzeigen. Zunächst die Temperatur:

lcd.setCursor(0, 0);
lcd.print(temp + String(" C"));

Hier setzt du zunächst den Cursor des Displays in das erste Feld der ersten Zeile. Anschließend gibst du mit der Funktion lcd.print() die Temperatur aus, die in der Variablen temp gespeichert ist. Hier ist allerdings nur die Zahl gespeichert. Um dahinter noch ein C für Celsius anzuzeigen, benötigst du einen kleinen Trick.

Mit der Funktion String() konvertierst du das Zeichen C in den Datentyp String. Wenn du ausschließlich Zeichen ausgeben möchtest, musst du diese Konvertierung nicht durchführen. Wenn du allerdings, wie hier, eine Variable des Typs float mit Zeichen mischen möchtest, ist sie unabdingbar.

Dasselbe gilt für die Luftfeuchtigkeit. Hier setzt du zunächst den Cursor eine Zeile tiefer und gibst den Wert samt Prozentzeichen auf dem Display aus.

lcd.setCursor(0, 1);
lcd.print(humidity + String(" %"));

Jetzt fehlt nur noch ein Delay. Wähle hier die Zeitspanne, nach der die Messung aktualisiert werden soll – z.B. 10 Sekunden:

delay(10000);

Und das ist alles, was du für deine Wetterstation benötigst. Angenommen, du befindest dich einem warmen und trockenen Raum, könnte dein Projekt nur wie folgt aussehen:

Lade den Sketch aus den Downloads auf deinen Arduino und probiere gleich einmal aus, welche Werte bei dir erscheinen.

Wenn du möchtest, erweitere deine Wetterstation noch um eine Funktion. Wie wäre es, wenn dein Piezo anfängt zu tönen, sobald ein bestimmter Wert über- oder unterschritten wird? Du hast hierfür alle Fähigkeiten bereits gelernt. 🙂 Viel Spaß beim Experimentieren!