Data Logger

Hallo Community,

um den hohen Temperaturen der letzten Tage etwas Gutes abzugewinnen habe ich die Lichtschachtabdeckung meines Kellers entfernt und das Fenster geöffnet, in der Hoffnung etwas Feuchtigkeit nach draußen zu bringen.

Aufgrund der großen Nachfrage für unser praktisches DataLogger Shield möchten wir den heutigen Blogbeitrag nutzen um zu zeigen, wie einfach sich damit Messdaten aufzeichnen lassen. Im Prinzip enthält das Shield alles was man zum aufzeichnen von Daten benötigt um diese später grafisch auszuwerten. Excel bietet hierbei nahezu unbegrenzte Möglichkeiten. Wir haben sogar die Möglichkeit eine kleine Schaltung direkt auf das Shield aufzulöten. Es spielt dabei keine große Rolle welchen Sensor wir benutzen. Für meinen Keller habe ich mich für einen DHT22 entschieden.

Wir verwenden für das Shield die RTC-Libary von Stephan Fink und die Standart-SD-Libary welche in der Arduino IDE enthalten ist. Als Beispiel schließen wir unseren DHT22 an und loggen die Daten zusammen mit der eingebauten RTC.

Die SD-Karte formatieren wir mit fat32 Dateisystem.

Sollten Sie Probleme beim Einstellen der RTC haben empfehlen wir Ihnen unser E-Book zu DS3231.

Den DHT, als Modul, verbinden wir an Pin 2 des Shields. 

Hier der Beispielcode:

 

#include <Wire.h>
#include "RTClib.h"
#include "DHT.h"
#include <SPI.h>
#include <SD.h>

#define DHTPIN 2     //Pin für DHT
#define DHTTYPE DHT22 

DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
File logFile;

const int chipSelect = 10; //für AZ-Delivery Data-Logger Shield
const int zeit = 5000; //Messintervall

long temperature;
long humidity;

void setup() {
  
  pinMode(10, OUTPUT);
  Serial.begin(9600);
  dht.begin();
  rtc.begin();
  SD.begin (chipSelect);


  char filename[] = "LOGGER00.CSV";                       
  for (uint8_t i = 0; i < 100; i++) {
    filename[6] = i/10 + '0';
    filename[7] = i%10 + '0';
    if (! SD.exists(filename)) {
      // only open a new file if it doesn't exist
      logFile = SD.open(filename, FILE_WRITE); 
      break;  // leave the loop!
    }
  }
  if (!logFile) {
    Serial.println("could not create file");
  }
  Serial.print("Start logging: ");
  Serial.println(filename);
  logFile.print ("Start logging");
  logFile.println();
}


void loop() {
  delay (zeit);
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  DateTime now = rtc.now();
  logFile.print(now.day(), DEC);
  logFile.print('/');
  logFile.print(now.month(), DEC);
  logFile.print('/');
  logFile.print(now.year(), DEC);
  logFile.print(',');
  logFile.print(' ');
  logFile.print(now.hour(), DEC);
  logFile.print(':');
  logFile.print(now.minute(), DEC);
  logFile.print(':');
  logFile.print(now.second(), DEC);
  logFile.print (",");
  logFile.print (" ");
  logFile.print (temperature);
  logFile.print (",");
  logFile.print (" ");
  logFile.print (humidity);
  logFile.println();
  logFile.flush();
  Serial.print(now.day(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.year(), DEC);
  Serial.print(',');
  Serial.print(' ');
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.print (",");
  Serial.print (" ");
  Serial.print (temperature);
  Serial.print (" Grad bei");
  Serial.print (",");
  Serial.print (" ");
  Serial.print (humidity);
  Serial.print (" %");
  Serial.println(); 
}

 

 

Letzter Artikel ESP32 jetzt über den Boardverwalter installieren
Neuer Artikel ATTiny85 als USB Eingabegerät

Kommentar

michael - Oktober 10, 2018

So habe jetzt alles genau so aufgebaut wie oben angezeigt.
Nur mit der Programm hochladung funkt es nicht. Bekomme immer wieder diese Meldungen:

In file included from C:\A6\1Eigene Programme\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

C:\A6\1Eigene Programme\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

#include ^

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Was mache ich falsch….kann doch nicht so schwer sein…..zum verzweifeln.

Grüße michael

Markus Neumann - August 17, 2018

Hallo Michael,
Die Zeile “Adafruit SD shields and modules: pin 10” ist keine Befehlszeile, sondern ein Kommentar. Die Zeile sollte daher mit // beginnen.

Die Zeilen im Code die mit // beginnen sind Kommentarzeilen. In diesem Teil listen sie die verschiedenen Modelle von Datenlogger-Shields auf, mit der jeweiligen Pin Nummer.
Unterhalb der Kommentare wird dann mit der Zeile “const int chipSelect = 10;” der jeweilige Pin festgelegt. In unserem Beispiel also Pin 10 für das Adafruit SD shield.

michael - August 10, 2018

Hallo habe das Programm so abgeändert wie im PDF-Buch beschrieben:
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 10;

bekomme beim hochladen immer den Fehler angezeigt:
exit status 1
‘Adafruit’ does not name a type

Welchen Namen such das Prog denn nun?

Moritz - August 10, 2018

Wow, der meistkommentierte Blogbeitrag…. Wie sich die Feuchtigkeit in meinem Keller entwickelt wollte ich eigendlich von meinem Datalogger hören :-D

Ich finde es bemerkenswert, dass die Luftfeuchte meines Kellers diskussionswürdiger ist als der Datalogger mit Code – was das eigentliche Thema sein sollte :-D

Da jedoch so viel Interesse an meinem Keller da zu sein scheint möchte ich allen Interessierten mitteilen, dass der Wert im Vergleich der letzten Tage um ca. 6% angestiegen ist.

Vielen Dank für die rege Rückmeldung :-)

Daniel Schröter - August 10, 2018

Ich möchte mich Ulrich Kaiser anschließen – Der Hintergrund ist, dass warme Luft mehr Wasser aufnehmen kann, als kalte Luft.

Bringt man im Sommer warme, vermeintlich trockene Luft in den kühlen Keller, wird sie sich dort abkühlen – im kalten Zustand kann sie weniger Wasser tragen – daher steigt deren relative Luftfeuchtigkeit an und sie kondensiert im schlimmsten Fall am kalten Mauerwerk aus, wodurch man noch mehr Feuchtigkeit in den Keller gebracht hätte.

Keller kann man im Winter am effektivsten trocknen, in dem man an trockenen Tagen kalte Luft mit niedriger Luftfeuchtigkeit in den dann wärmeren Keller lässt. Diese wird dann im Keller erwärmt, wodurch ihre relative Luftfeuchtigkeit noch mehr sinkt und sie die Feuchtigkeit von Kellerwänden etc. aufnimmt und beim nächsten Lüften nach draußen befördert.

Peter Necas - August 10, 2018

Im Sommer ein Kellerfenster öffnen erhöht die Feuchte im Keller. Hoffentlich wird das durch das vorliegende Projekt rechtzeitig angezeigt.
Sonst super!
LG Peter

Moritz Spranger - August 7, 2018

Vielen Dank für die Rückmeldung :-) eigentlich interessiert mich nur der Verlauf der Luftfeuchtigkeit. Für Vergleichsdaten und zur grafischen Auswertung.

Ulrich Kaiser - August 7, 2018

Leider funktioniert das mit dem Lueften nicht so einfach.

Wenn es im Keller kaelter ist als draussen, dann kommt eher Luftfeuchte von draussen herein in den Keller und kondensiert an den Kellerwaenden. Damit bekommt man dann Schimmel im Keller, wenn es schlecht laeuft.

Im Winter kann man besser den Keller lueften, weil dann bei trockenem, kalten Wetter die Luftfeuchte aus dem Keller heraus kommt.

Es kommt also gar nicht auf die Temperaturdifferenzen an sondern auf die Feuchtedifferenzen….

Conclusion: Den Datalogger mit zwei Feuchtemessern ausstatten; einen drinnen und einen draussen. Und dann am Besten noch das Fenster steuern ;-)

Cheers, Uli

Markus Renner - August 7, 2018

Eine gute Idee … sowas bräuchte ich für meinen Speicher. Wäre interessiert wie dort der
Temperaturverlauf so wäre.
Müsste ich mal auf einen RasPi umsetzen.

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe