/*
* Projet Tutoré N°2 - Arduino Temperature Data Logger
* Module M1S2 RIoT-IE - Dept. Informatique UJKZ
* Enseignant : M. Désiré GUEL
* Composants : DHT22 + RTC DS1307 + Module SD Card
*/
#include <SPI.h>
#include <SD.h>
#include <DHT.h>
#include <RTClib.h>
#define DHTPIN 7
#define DHTTYPE DHT22
#define CS_PIN 10
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
File myFile;
void setup() {
Serial.begin(9600);
while (!Serial);
// DHT
dht.begin();
Serial.println("✔ DHT22 initialise !");
// RTC
if (!rtc.begin()) {
Serial.println("✘ RTC non trouve !");
while (1);
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.println("✔ RTC DS1307 initialise !");
// SD
Serial.print("Initialisation SD card... ");
if (!SD.begin(CS_PIN)) {
Serial.println("✘ Echec SD card !");
while (1);
}
Serial.println("✔ SD card OK !");
// Ecriture entete
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.println("Date,Heure,Temperature(C)");
myFile.close();
Serial.println("✔ Fichier DATA.txt cree !");
} else {
Serial.println("✘ Erreur fichier !");
}
Serial.println("=== Systeme pret ! Enregistrement toutes les 5s ===");
Serial.println("Date | Heure | Temp (C)");
Serial.println("-----------|----------|----------");
}
void loop() {
DateTime now = rtc.now();
float t = dht.readTemperature();
// Affichage date
if (now.day() < 10) Serial.print('0');
Serial.print(now.day()); Serial.print('/');
if (now.month() < 10) Serial.print('0');
Serial.print(now.month()); Serial.print('/');
Serial.print(now.year()); Serial.print(" | ");
// Affichage heure
if (now.hour() < 10) Serial.print('0');
Serial.print(now.hour()); Serial.print(':');
if (now.minute() < 10) Serial.print('0');
Serial.print(now.minute()); Serial.print(':');
if (now.second() < 10) Serial.print('0');
Serial.print(now.second()); Serial.print(" | ");
// Affichage temperature
if (isnan(t)) {
Serial.println("✘ Erreur lecture DHT22 !");
} else {
Serial.print(t);
Serial.println(" *C");
// Ecriture sur SD
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.print(now.year()); myFile.print('/');
myFile.print(now.month()); myFile.print('/');
myFile.print(now.day()); myFile.print(',');
myFile.print(now.hour()); myFile.print(':');
myFile.print(now.minute());myFile.print(':');
myFile.print(now.second());myFile.print(',');
myFile.println(t);
myFile.close();
}
}
delay(5000);
}