• Post category:Fort
  • Post comments:0 commentaire
  • Post last modified:mai 27, 2022
  • Temps de lecture :7 min de lecture

Enregistrer les valeurs d’un DHT22 sur une carte SD avec un Module SD Card DS1302 et Arduino

Niveau APPRENTISSAGE :   Fort

 

    Prérequis :

Matériel :

Version IDE :

Bibliothèque :

 

 

Vidéo de démonstration :

 

Schéma de câblage :

 

Code :

// Inclure le code de la bibliothèque :
#include "DHT.h"
// La broche numérique 13 est reliée au capteur DHT. On lui donne le nom DHTPIN.
#define DHTPIN 2

// Défini le type de capteur utilisé
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
float h;
float t;

// Inclure le code de la bibliothèque :
#include <DS1302.h>
// Initialise le module DS1302 avec le numéro des pins connecté.
// DS1302 rtc(RST pin, DAT pin, SCLK pin);
DS1302 rtc(5, 6, 7);
Time T;

// Inclure le code de la bibliothèque :
#include <SPI.h>
#include <SD.h>
File myFile;
// Défini le non du fichier ou sera stocker les valeurs sur la carte SD
String Nomdufichier = "log";

void setup() {
  Serial.begin(9600);
  rtc.halt(false);
  //Active = false Desactive = true la protection en ecriture pour mettre à jour heure et la date
  rtc.writeProtect(false);
  rtc.setDOW(FRIDAY);        // Jour a FRIDAY
  rtc.setTime(15, 14, 0);    // Heure a 15:14:00 (format sur 24 heure)
  rtc.setDate(02, 06, 2020);   // Date  au 28 juin 2020

  Serial.println("SD test!");
  if (!SD.begin(10)) {
    Serial.println("Initialisation SD echouee!");
  }
  else {
    Serial.println("initialisation SD effectuee.");
    if ( SD.exists(Nomdufichier) == 0 )
    {
      Serial.print("Creation de " + Nomdufichier + ".txt..  ");
      myFile = SD.open(Nomdufichier + ".txt", FILE_WRITE);
      if (myFile) {
        Serial.println("OK");
        myFile.println("Humidity    | Temperature   | Heure ");
        myFile.close();
      }
      else
        Serial.println("error creating file.");
    }
  }
  Serial.println("DHTxx test!");
  dht.begin();
  h = dht.readHumidity();
  t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Impossible de lire à partir du capteur DHT!");
  }
  else {
    Serial.println("Lecture DHT ok.");
  }
}

void loop() {

  T = rtc.getTime();
  h = dht.readHumidity();
  t = dht.readTemperature();

  char Horloge[16];
  sprintf_P(Horloge, (PGM_P)F("%02d:%02d:%02d"), T.hour, T.min, T.sec);
  char Humidity[16];
  dtostrf(h, 0, 2, Humidity);
  sprintf(Humidity, "%s""%%""      | " , Humidity);
  char Temperature[16];
  dtostrf(t, 0, 2, Temperature);
  sprintf(Temperature, "%s""°C""       | ", Temperature);
  Serial.print("Humidity: " );
  Serial.print(Humidity);
  Serial.print(" Temperature: " );
  Serial.print(Temperature);
  Serial.print(" Heure: ");
  Serial.println(Horloge);

  myFile = SD.open(Nomdufichier + ".txt", FILE_WRITE);
  if (myFile) {
    Serial.print("Sauvegarde sur " + Nomdufichier + ".txt..  ");
    myFile.print(Humidity);
    myFile.print(Temperature);
    myFile.println(Horloge);
    myFile.close();
    Serial.println("Sauvegarde fini.");
  }
  else {
    Serial.println("erreur d ouverture " + Nomdufichier + ".txt");
  }
  delay(500);
}

 

 


+ Infos sur le langage utilisé :

1. Fonctions
2. Variables
3. Stucture

 

Laisser un commentaire