Data Logger

Hello community,

To take advantage of the high temperatures of the past few days, I removed the light well cover from my basement and opened the window, hoping to bring some moisture outside.

Due to the great demand for our practical DataLogger Shield  we would like to use today's blog post to show how easy it is to record measurement data. In principle, the shield contains everything you need to record data in order to evaluate it later graphically. Excel offers almost unlimited possibilities. We even have the option of a small circuit directly on that Shield to solder on. It doesn't matter which sensor we use. I chose a DHT22 for my basement.

We use Stephan Fink's RTC Libary for the shield and the standard SD Libary which is included in the Arduino IDE. As an example, we close ours DHT22  and log the data together with the built-in RTC.

We format the SD card with fat32 file system.

If you have problems setting the RTC, we recommend our e-book DS3231.

The DHT, as a module, we connect to pin 2 of the shield.

Here is the sample code:

 

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

#define DHTPIN 2     // pin for DHT
#define DHTTYPE DHT22 

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

const int chipSelect = 10; // for AZ-Delivery Data-Logger Shield
const int time = 5000; // measurement interval

long temperature;
long humidity;

void set up() {      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 (time);   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 ("Degrees at");   Serial.print (",");   Serial.print (" ");   Serial.print (humidity);   Serial.print (" %");   Serial.println(); 
}

 

 

For arduinoProduktvorstellungenSensors

16 comments

Alexander Wiederker

Alexander Wiederker

Hallo miteinander,
ich habe das Problem, dass meine SD karte nicht initialisiert werden kann und es kommt immer “initialization failed”. Ich hab schon alles probiert von unterschiedlichen SD karten bis hin zu verschiedenen Formatierungen (ich weiß, dass meine SD Karte in Format FAT16/35 sein muss funktioniert trotzdem nicht) hat einer eine Idee woran es liegen könnte und hat eine Lösung? Vielen dank für eure Hilfe.

Matthias

Matthias

Hi! Ich hab das gleiche Problem. Ich habe 2 Megas und leider nur einen UNO. Beim UNO funktionierts einwandfrei, aber bei den Megas nicht. Wenn man eine andere Bibliothek braucht, würde ich mich freuen wenn jemand mir diese nennen kann und auch wie sich die Pinbelegung ändert:D. Danke!

anton

anton

@Dirk Jenßen
Habe das shield auf meine mega2560 installiert. man benötigt dafür eine leicht andere Bibliothek die ähnlich funktioniert. Man muss die Pinbelegung bei der Initialisierung ein wenig abändern, ist aber ähnlich leicht.
Der Name der Bibliothek ist mit leider entfallen

Dirk Jenßen

Dirk Jenßen

Moin,
habe 5 Ihrer Shields gekauf; klappt gut auf einem UNO.
Für 2 Logger benötige ich aber mehr Pins und will die Logger auf einem Mega2560 betreiben. Klappt leider nicht!
Sind die Steckpins inkompatibel?
Haben Sie eine Lösung?

Gruß
D. Jenßen

Heribert Houben

Heribert Houben

…würd mich mal interessieren was der Datenlogger im Keller dann angezeigt hat. Ich vermute sehr stark, dass die Feuchtigkeit im Keller zugenommen und nicht abgenommen hat :-)) Dampfdruckgefälle geht immer zum kühleren Raum…

Heino Müller

Heino Müller

Hallo,
Ich habe dies Projekt gut am Laufen. Danke dafür. Nun wollte ich euer kleines Oled via I2C noch anschließen und bekomme den Speicher des Oled nicht initialisiert. Das Adafruit Beispiel läuft allerdings. Kommen sich hier die Schnittstellen in die Quere oder kann man das zum Laufen bringen? Würde gern die Temperatur und Luftfeuchtigkeit anzeigen.
Freundliche Grüße
Heino Müller

Walter

Walter

Ich bin recht neu in der ARDUINO-Familie und habe schon lange nach einer Lösung gesucht, Temperatur auf eine SD-Karte zu speichern. Nach vielen Versuchen, wo entweder Temperatur ODER Zeit gespeichert werden (wahrscheinlich ein Konflikt auf I2C, wo ich mich erst einlesen muss) kam ich auf Eure Seite. Es klappte auch recht schnell mit dem Sketch. leider bekomme ich aber nicht die richtige Daten von Datum und Zeit auf die SD-Karte. Was ich auch mache, im seriellen Monitor ist immer 1.1.2000 und 0:0:0 gespeichert, die Temperatur jedoch stimmt. Habt Ihr mir da eine Lösung ?
Gruß Walter

michael

michael

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

Markus Neumann

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

michael

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

Moritz

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

Daniel Schröter

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

Peter Necas

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

Moritz Spranger

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

Ulrich Kaiser

Ulrich Kaiser

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

Markus Renner

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.

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. Install ESP32 now from the board manager
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP programming via WLAN