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
// 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.