Luftfeuchte und Temperatur mit Arduino, DHT11 und Anzeigemodul

In Vorbereitung eines größeren Projekts – die Spannung steigt – hab ich mit verschiedenen Grundlagen-Themen beschäftigt und hier ist das Ergebnis:

Mit einem Arduino Mega 2560, einem 16×2 LCD-Display mit I2C-Ansteuerung, sowie mit einem DHT11-Sensor für Luftfeuchte und Temperatur habe ich eine minimalistische Anzeige realisiert.

Das Foto zeigt alle Komponenten:

  • Arduino Mega 2560 mit Stromversorgung (und Programmierung) via USB
  • 16×2 LCD-Display mit I2C-Ansteuerung basierend auf LCM1602
  • DHT11-Sensor für Luftfeuchte und Temparatur mit 10kΩ-Wiederstand zu beschalten

So sieht die Beschaltung aus:

  • Der DHT11-Sensor wird zwischen Pin 1(links) und Pin 2 mit einem 10kΩ-Widerstand überbrückt.
  • Pin 1 wird dann auf 5V am Arduino geschaltet.
  • Pin 2 geht auf A2 am Arduino (oder einen anderen Pin, dazu muss das Programm angepasst werden.
  • Pin 3 bleibt frei
  • Pin 4 geht auf GND

Das Display wird beim Arduino Mega 2560 jeweils mit den analogen Pins beschaltet. Bei anderen Arduino-Modellen muss hier ggfls. eine andere Beschaltung gewählt werden.

  • 5V auf 5V (bzw. VCC genannt am Display)
  • GND auf GND
  • SCL and SCL (Clock)
  • SDA an SDA (Signal)

Jetzt fehlt noch der Code für den Arduino:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // Library fuer LCD
#include <DHT.h> // Library für DHT11
#define DHTPIN A2 // DHT11 an PIN 2  
#define DHTTYPE DHT11 // Sensortyp

DHT dht(DHTPIN, DHTTYPE);  //Der Sensor wird ab jetzt mit „dth“ angesprochen

LiquidCrystal_I2C lcd(0x27, 16, 2);  // I2C Addresse 0x27, 16x2 

void setup() {
  lcd.init(); // LCD initialisieren
  lcd.backlight(); //Hintergrundbeleuchtung einschalten
  lcd.setCursor(0, 0); // Cursor oben links
  lcd.println("Temp 7C  Luftf % "); // Überschrift setzen mit codiertem Grad-Zeichen
  lcd.setCursor(0, 1); // Cursor in zweite Zeile
  lcd.print("Init Sensor"); // Warten anzeigen
  Serial.begin(9600); // Serielle Verbindung initiieren
  dht.begin(); // Sensor starten
  delay(2000); //Zwei Sekunden warten bis der Sensor bereit ist
}

void loop() {
  lcd.setCursor(0, 0); // Cursor oben links
  lcd.println("Temp 7C  Luftf % "); // Überschrift setzen mit codiertem Grad-Zeichen
  lcd.setCursor(0, 1); // Cursor in zweite Zeile
  delay(1000);  // Eine Sekunde warten bis zur nächsten Messung
  float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und speichern
  float Temperatur = dht.readTemperature(); //die Temperatur auslesen und speichern
  lcd.print(" "+ String(Temperatur) + "    " + String(Luftfeuchtigkeit) +"   "); // Ausgabe
}

Zur richtigen Funktion müssen die entsprechenden Libraries passend zu den Hardware-Komponenten hochgeladen werden.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert