Temperatur und Luftfeuchtigkeit messen mit dem Arduino I

Vor ein paar Tagen habe ich mir zwei DHT22 Sensoren bei Watterott bestellt, die sowohl Temperatur als auch Luftfeuchtigkeit mit ausreichender Genauigkeit messen können.

Im ersten Sketch lese ich die Daten aus und gebe sie seriell sowohl auf einem angeschlossenen Sparkfun LCD als auch über die serielle Schnittstelle aus. Zum Auslesen des Sensors gibt es von Adafruit eine Bibliothek, die folgende Seite zeigt auch die Beschaltung: http://learn.adafruit.com/dht/connecting-to-a-dhtxx-sensor

IMG_8173

// Beispielcode, um Temperatur/Luftfeuchtigkeit
// eines DHT22 auf einem Sparkfun SerialLCD auszugeben
 
#include "DHT.h"
#include <SoftwareSerial.h>
 
#define DHTPIN 2     // Pin für den DHT22
SoftwareSerial mySerial(4,3); // SoftwareSerial für das LCD
 
#define DHTTYPE DHT22   // DHT 22  (AM2302)
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  mySerial.begin(9600); // starte LCD Verbindung
  Serial.begin(9600); // starte zus. serielle Verbindung
  delay(500); // wait for display to boot up
 
  mySerial.write(254); // setze Cursor in die erste Zeile
  mySerial.write(128);
 
  mySerial.write("                "); // clear LCD
  mySerial.write("                ");
  delay(500);
  mySerial.write("  DHT22 Sensor");
 
  dht.begin();
}
 
char tempstring[10], humstring[10];
 
void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  delay(5000); // lese alle 5 Sekunden ein
 
  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    mySerial.write(254); // move cursor to beginning of first line
    mySerial.write(128);
    mySerial.println("DHT22 nicht gefunden");
  } else {
    mySerial.write(254); // move cursor to beginning of first line
    mySerial.write(128);
    mySerial.write("                "); // clear display
    mySerial.write("                ");
    mySerial.write(254); // move cursor to beginning of first line
    mySerial.write(128); 
    mySerial.print("Luftf: ");  
    mySerial.print(h);
    mySerial.print(" %");      
    Serial.println(h);
    mySerial.write(254); // move cursor to beginning of 2nd line
    mySerial.write(192);
    mySerial.print("Temp: ");  
    mySerial.print(t);
    mySerial.print(" *C");   
    Serial.println(t);
  }
}

Im nächsten Schritt werde ich die Daten per WLAN oder Ethernet in eine Datenbank schreiben.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website