Arduino erste Anwendung

Mit dem Arduino Uno R3, einem Shield mit SD Card und einen Temperatur / Luftfeuchte Sensor wurde ein „Schimmelwächter“ gebaut:

Datei 09.02.16, 15 02 02

Das Steckbrett dazu ist sehr einfach, es musste nur ein 1M Ohm Widerstand eingelötet werden und die Stromversorgung:

Datenlogger_Steckplatine

Der dazu gehörige Programmcode, der Logfile wird nur geschrieben wenn sich die neue Messung von der vorherigen unterscheidet:

#include // SD-Karten Bibliothek
#include "DHT.h" // Temperatur Sensor Bibliothek
#include // RealTime Bibliothek

RTC_DS1307 RTC; // Typ der RealTimeClock
DHT dht; // Typ des Sensors

const int chipSelect = 10; // Anschluss der SD-Karte
// Variablen definieren
int i = 0;
float h_neu = 0; // neuer Messwert
float t_neu = 0; // neuer Messwert
float h_alt = 0; // vorheriger Messwert
float t_alt = 0; // vorheriger Messwert

void setup() {
dht.setup(2); // data pin 2
Serial.begin(9600); //
RTC.begin();
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
while (1) ;
}
Serial.println("card initialized.");
//neue Datei
File dataFile = SD.open("datalog.csv", FILE_WRITE);
String dataString = "Datum Zeit;Luftfeuchte;Temperatur";
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
}
}

void loop() {

// Datum und Zeit fuer die Zeile in der Logdatei
boolean schreiben = false;
DateTime now = RTC.now();
char buffer [25] = "";
sprintf(buffer, "%02d.%02d.%04d %02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute());
h_neu = dht.getHumidity();
t_neu = dht.getTemperature();
if (h_alt != h_neu) {
h_alt = h_neu;
schreiben = true;
Serial.println("Luftfeuchte geändert");
}
else {
Serial.println("Luftfeuchte gleich");
}
if (t_alt != t_neu) {
t_alt = t_neu;
schreiben = true;
Serial.println("Temperatur geändert: ");
}
else{
Serial.println("Temperatur gleich");
}
// String fuer die Log-Datei zusammenstellen:
String dataString = ""; // leerer String
dataString += (buffer); // Datum + Zeit
dataString += (i);
dataString += (";"); // Trenner
dataString += (h_neu); // Luftfeuchte %
dataString += (";"); // Trenner
dataString += (t_neu); // Temperatur
Serial.println(dataString);
if (schreiben == true) {
//Serial.println(" logfile schreiben");
File dataFile = SD.open("datalog.csv", FILE_WRITE);
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
}
}
delay(60000); // Zeit zwischen den Messungen 1 Sek = 1000
}

Share