INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
10.02.2013, 11:46 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2013 07:56 von Lazzard.)
Beitrag #1
Information [Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
Hallo Leute,

ich möchte euch an einem kleinen Beispiel mal demonstrieren, wie ihr die Temperatur und die Luftfeuchtigkeit mit Hilfe eines DHT22 auslest und die Daten auf einem I2C 1602 LCD ausgebt und zusätzlich am seriellen Monitor euch ansehen könnt.

Folgende Bauteile habe ich verwendet:
1x SainSmart I2C 1602 Serial LCD Module
1x DHT22 Temperatur Luftfeuchte-Sensor
1x 10k Widerstand
ein paar Anschlusskabel

Angeschlossen werden die Komponenten wie folgt:
   

Folgende Library habe ich verwendet:
Library für DHT22
Library für I2C 1602 LCD
Library Wire aus Arduino 1.0.3

Hier der verwendete Sketch mit Hinweisen:
Code:
// Einbinden des DHT22
#include "DHT.h"                            // Library für DHT Sensor aufgerufen
#define DHTPIN 9                            // DHT Sensor wird aus PIN 9 ausgelesen
#define DHTTYPE DHT22                       // DHT Type wird auf DHT22 festgelegt
DHT dht22(DHTPIN, DHTTYPE);                 // DHTPIN und DHTTYE in dht22 definiert

// Einbinden des LCD
#include "Wire.h"                           // Library für I2C aufgerufen
#include "LiquidCrystal_I2C.h"              // Library für LCD aufgerufen
LiquidCrystal_I2C lcd(0x27,16,2);           // LCD Adresse auf 0x27 gesetzt, 16 Zeichen / 2 Zeilen LCD
// SainSmart IIC/I2C/TWI 1602 Serial LCD Module wie folgt angeschlossen
// LCD GND -> GND ARDUINO
// LCD VCC -> 5V  ARDUINO
// LCD SDA -> A4  ARDUINO
// LCD SCL -> A5  ARDUINO

void setup()
{
  Serial.begin(9600);                       // Serielle Ausgabe beginnen mit 9600baud
  Serial.println("DHT22 Serielle Ausgabe"); // Begrüßung beim Aufruf vom seriellen Monitor
dht22.begin();                              // Auslesen des DHT22 beginnt
lcd.init();                                 // Initialisierung des LCD                                            
lcd.backlight();                            // LCD Hintergrundbeleuchtung aktivieren
}

void loop()
{
  float t = dht22.readTemperature();        // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();           // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
  
  Serial.print("Temperatur: ");             // Ausgabe im Seriellen Monitor
  Serial.print(t);                          // Ausgabe im Seriellen Monitor
  Serial.print(" C\t");                     // Ausgabe im Seriellen Monitor  
  Serial.print("Luftfeuchte: ");            // Ausgabe im Seriellen Monitor
  Serial.print(h);                          // Ausgabe im Seriellen Monitor
  Serial.println(" %");                     // Ausgabe im Seriellen Monitor
  
lcd.setCursor(0, 0);                       // Anfang auf Stelle 0, Zeile 0 setzen
lcd.print("Temp. :");                      // Temp. : auf LCD ausgeben
lcd.setCursor(9, 0);                       // Anfang auf Stelle 9, Zeile 0 setzen
lcd.print(t);                              // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(15, 0);                      // Anfang auf Stelle 15, Zeile 0 setzen
lcd.print("C");                            // C auf LCD ausgeben
lcd.setCursor(0, 1);                       // Anfang auf Stelle 0, Zeile 1 setzen
lcd.print("Luftf.:");                      // Luft.: auf LCD ausgeben
lcd.setCursor(9, 1);                       // Anfang auf Stelle 9, Zeile 1 setzen
lcd.print(h);                              // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(15, 1);                      // Anfang auf Stelle 15, Zeile 1 setzen
lcd.print("%");                            // % auf LCD ausgeben
}

Ich denke, durch die Hinweise sollte man schnell herauslesen, für was welche Zeile im Sketch steht.

Und hier mal ein Foto, wenn alles glatt gegangen ist Smile
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.05.2013, 21:53
Beitrag #2
RE: [Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
Hallo habe es dank deiner Anleitung auch hin bekommen, musste nur ein bischen abwandeln.

Code:
// Einbinden des DHT22
#include "DHT.h"                            // Library für DHT Sensor aufgerufen
#define DHTPIN 2                            // DHT Sensor wird aus PIN 9 ausgelesen
#define DHTTYPE DHT22                       // DHT Type wird auf DHT22 festgelegt
DHT dht22(DHTPIN, DHTTYPE);                 // DHTPIN und DHTTYE in dht22 definiert

// Einbinden des LCD
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

int n = 1;

LiquidCrystal_I2C    lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);


void setup()
{
  Serial.begin(9600);                       // Serielle Ausgabe beginnen mit 9600baud
  Serial.println("DHT22 Serielle Ausgabe"); // Begrüßung beim Aufruf vom seriellen Monitor
dht22.begin();                              // Auslesen des DHT22 beginnt
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go home

  lcd.begin(16, 2);              // LCD Hintergrundbeleuchtung aktivieren
}

void loop()
{
  float t = dht22.readTemperature();        // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();           // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
  
  Serial.print("Temperatur: ");             // Ausgabe im Seriellen Monitor
  Serial.print(t);                          // Ausgabe im Seriellen Monitor
  Serial.print(" C\t");                     // Ausgabe im Seriellen Monitor  
  Serial.print("Luftfeuchte: ");            // Ausgabe im Seriellen Monitor
  Serial.print(h);                          // Ausgabe im Seriellen Monitor
  Serial.println(" %");                     // Ausgabe im Seriellen Monitor
  
lcd.setCursor(0, 0);                       // Anfang auf Stelle 0, Zeile 0 setzen
lcd.print("Temp. :");                      // Temp. : auf LCD ausgeben
lcd.setCursor(9, 0);                       // Anfang auf Stelle 9, Zeile 0 setzen
lcd.print(t);                              // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(15, 0);                      // Anfang auf Stelle 15, Zeile 0 setzen
lcd.print("C");                            // C auf LCD ausgeben
lcd.setCursor(0, 1);                       // Anfang auf Stelle 0, Zeile 1 setzen
lcd.print("Luftf.:");                      // Luft.: auf LCD ausgeben
lcd.setCursor(9, 1);                       // Anfang auf Stelle 9, Zeile 1 setzen
lcd.print(h);                              // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(15, 1);                      // Anfang auf Stelle 15, Zeile 1 setzen
lcd.print("%");                            // % auf LCD ausgeben
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.06.2013, 09:00
Beitrag #3
RE: [Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
Das ist schön, dass meine Anleitung helfen konnte, denn genau dafür ist sie da.
Also alles richtig gemacht Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2013, 20:36
Beitrag #4
RE: [Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
Hallo

Ich habe folgendes Projekt vor
1 Adruino MEGA
3 DHT22
3 LCD Display´s

Es soll je Sensor ein Display, welches die Werte anzeigt, genutzt werden.

Ist dies so möglich?
Ich habe bisher leider nur Sketch´s gefunden welches einen Sensor behandelt.
Bei einfachen Tempsensoren DS18s 20 kann man dies über die Adresse realisieren.
Wie ist dies bei den DHT22 bzw. DHT33.
Leitungslänge wird wohl ca. 50Meter werden, da könnte es Probleme geben mit dem DHT22 ich möchte dies aber erst einmal testen notfalls muss ich doch zum etwas teureren DHT33 wechseln.

Vielleicht könnt ihr mir einen Tipp geben um dieses Projekt zu realisieren.

Grüße der Arne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.11.2013, 00:22
Beitrag #5
RE: [Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
Hallo Arne.

Du solltest die Displays über I2C ansteuern, sonst gibt das ein Leitungschaos, das keiner mehr Überblickt und brauchst für diese Aufgabe schon einen Mega2560. Über I2C reicht ein Nano oder Pro Mini.

Die Eingangspins der DHT sind flexibel, nur solltest bei deiner Leitungslänge den Widerstand (unter 20 m stand da was von 1kO ?? im Datenblatt) anpassen.

Mit ein bischen Tüfteln sollte das machbar sein.

Uwe

Martin Luther King sagte am 28 August 1963 :

I have a Dream !!

Ich bin weiter:

I have a Schaltplan !!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.03.2015, 13:43
Beitrag #6
RE: [Tutorial] Temperatur / Luftfeuchte messen und auf LCD ausgeben
Hallo zusammen,
ich habe da mal eine Frage an die, die sich mit dem DHT22 bereits beschäftigt haben:
in meinem letzten Arduino Projekt habe ich auch einen DHT22 verbaut und leider nach einigen Wochen festgestellt, dass die Werte anscheinend nicht sonderlich genau sind. Bereits nach 2 Wochen hat sich die Abweichung zu einem Referenzgerät erheblich vergrößert. Als ich den DHT22 dann ersetzt habe hatte ich dann festgestellt, dass die Abweichung des zweiten Sensors anscheinend konstant 5% rel. hum. zum Referenzgerät ist. (die genaue Beschreibung auch des Projektes kann man im BLOG nachlesen: http://dbrenk.blogspot.de/2015/03/calibr...ensor.html)

Wofür verwendet ihr den Sensor?
Welche Anforderungen habt ihr an die Genauigkeit des Sensors?
Kennt ihr genauere Alternativen?

Vielen Dank für eure Tipps,
Grüße,
doctorwhy

If you are interested in my other Arduino and RaspberryPi projects, visit my BLOG on: http://dbrenk.blogspot.de/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste