Enregistreur de données de température Arduino | Tutoriel

Enregistreur de données de température Arduino |  Tutoriels Nerd aléatoires

Cet article vous montre comment créer un enregistreur de données de température Arduino. Nous utiliserons le DHT11 pour mesurer la température, le module d’horloge en temps réel (RTC) pour prendre les horodatages et le module de carte SD pour enregistrer les données sur la carte SD.

Enregistreur de donnees de temperature Arduino Tutoriels Nerd aleatoires

Ressources recommandées :

Pièces nécessaires

Voici une liste complète des pièces requises pour ce projet :

1642422963 732 Enregistreur de donnees de temperature Arduino Tutoriels Nerd aleatoires

Remarque : alternativement au module de carte SD, vous pouvez utiliser un bouclier d’enregistrement de données. Le bouclier d’enregistrement de données est livré avec un RTC intégré et une zone de prototypage pour les connexions à souder, les capteurs, etc.

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Enregistreur de donnees de temperature Arduino Tutoriels Nerd aleatoires

Schémas

La figure suivante montre les schémas du circuit pour ce projet.

1642422963 255 Enregistreur de donnees de temperature Arduino Tutoriels Nerd aleatoires

Noter: assurez-vous que votre carte SD est formatée et fonctionne correctement. Lisez « Guide du module de carte SD avec Arduino ».

Installation de la bibliothèque de capteurs DHT

Pour ce projet, vous devez installer la bibliothèque DHT pour lire à partir du capteur DHT11.

  1. Cliquez ici pour télécharger la bibliothèque de capteurs DHT. Vous devriez avoir un dossier .zip dans votre dossier Téléchargements
  2. Décompressez le dossier .zip et vous devriez obtenir le dossier DHT-sensor-library-master
  3. Renommez votre dossier de DHT-capteur-bibliothèque-maître à DHT
  4. Déplacez le dossier DHT vers le dossier des bibliothèques d’installation de votre IDE Arduino
  5. Enfin, rouvrez votre IDE Arduino

Code

Copiez le code suivant dans votre IDE Arduino et téléchargez-le sur votre carte Arduino.

/*
 * Rui Santos 
 * Complete Project Details https://www.raspberryme.com
 */

#include <SPI.h> //for the SD card module
#include <SD.h> // for the SD card
#include <DHT.h> // for the DHT sensor
#include <RTClib.h> // for the RTC

//define DHT pin
#define DHTPIN 2     // what pin we're connected to

// uncomment whatever type you're using
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);

// change this to match your SD shield or module;
// Arduino Ethernet shield and modules: pin 4
// Data loggin SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 4; 

// Create a file to store the data
File myFile;

// RTC
RTC_DS1307 rtc;

void setup() {
  //initializing the DHT sensor
  dht.begin();

  //initializing Serial monitor
  Serial.begin(9600);
  
  // setup for the RTC
  while(!Serial); // for Leonardo/Micro/Zero
    if(! rtc.begin()) {
      Serial.println("Couldn't find RTC");
      while (1);
    }
    else {
      // following line sets the RTC to the date & time this sketch was compiled
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    }
    if(! rtc.isrunning()) {
      Serial.println("RTC is NOT running!");
    }
    
  // setup for the SD card
  Serial.print("Initializing SD card...");

  if(!SD.begin(chipSelect)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
    
  //open file
  myFile=SD.open("DATA.txt", FILE_WRITE);

  // if the file opened ok, write to it:
  if (myFile) {
    Serial.println("File opened ok");
    // print the headings for our data
    myFile.println("Date,Time,Temperature ºC");
  }
  myFile.close();
}

void loggingTime() {
  DateTime now = rtc.now();
  myFile = SD.open("DATA.txt", FILE_WRITE);
  if (myFile) {
    myFile.print(now.year(), DEC);
    myFile.print('/');
    myFile.print(now.month(), DEC);
    myFile.print('/');
    myFile.print(now.day(), DEC);
    myFile.print(',');
    myFile.print(now.hour(), DEC);
    myFile.print(':');
    myFile.print(now.minute(), DEC);
    myFile.print(':');
    myFile.print(now.second(), DEC);
    myFile.print(",");
  }
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.println(now.day(), DEC);
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.println(now.second(), DEC);
  myFile.close();
  delay(1000);  
}

void loggingTemperature() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  //float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  if  (isnan
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  
  //debugging purposes
  Serial.print("Temperature: "); 
  Serial.print
  Serial.println(" *C");
  //Serial.print(f);
  //Serial.println(" *Ft"); 
  
  myFile = SD.open("DATA.txt", FILE_WRITE);
  if (myFile) {
    Serial.println("open with success");
    myFile.print
    myFile.println(",");
  }
  myFile.close();
}

void loop() {
  loggingTime();
  loggingTemperature();
  delay(5000);
}

Afficher le code brut

Dans ce code, nous créons un loggingTime() fonction et une loggingTemperature() fonction que nous appelons dans le boucler() pour enregistrer l’heure et la température DONNÉES.txt fichier dans la carte SD.

Ouvrez le moniteur série à un débit en bauds de 9600 et vérifiez si tout fonctionne correctement.

Obtenir les données de la carte SD

Laissez ce projet fonctionner pendant quelques heures pour collecter une quantité décente de données, et lorsque vous êtes satisfait de la période d’enregistrement des données, arrêtez l’Arduino et retirez la carte SD du module de carte SD.

Insérez la carte SD dans votre ordinateur, ouvrez-la et vous devriez avoir un DONNÉES.txt fichier avec les données collectées.

1642422963 37 Enregistreur de donnees de temperature Arduino Tutoriels Nerd aleatoires

Vous pouvez ouvrir les données avec un éditeur de texte ou utiliser une feuille de calcul pour analyser et traiter vos données.

1642422963 135 Enregistreur de donnees de temperature Arduino Tutoriels Nerd aleatoires

Les données sont séparées par des virgules et chaque lecture est dans une nouvelle ligne. Dans ce format, vous pouvez facilement importer des données vers Excel ou un autre logiciel de traitement de données.

Conclusion

C’est un excellent projet pour apprendre à utiliser le module de carte SD avec Arduino pour construire un enregistreur de données. Vous pouvez appliquer ce concept dans pratiquement tous les projets que vous souhaitez.

Si vous aimez les projets Arduino, assurez-vous de consulter notre dernier cours Arduino : Projets étape par étape Arduino – Construire 23 projets

Nous espérons que vous avez trouvé ce projet utile.

Merci d’avoir lu.

  • Pzsmocn Enregistreur Données Série Compatible avec Arduino et Raspberry Pi. avec Fonction USB, Système Fichiers FAT32, Prise Charge Carte TF 32 Go. pour l'acquisition Données, Robot, Débogage d'UAV.
    Avec la fonction USB, aucun lecteur de carte requis. Prise en charge de plusieurs débits en bauds, bonne compatibilité. Voyant LED pour vérifier visuellement l'état d'écriture des données. Système de fichiers FAT32, prend en charge la carte TF de 32 Go. Compatible avec les cartes Arduino et Raspberry Pi. Utilisé pour la collecte de données hors ligne, la capture des journaux de débogage des produits, le débogage des robots et des drones.
  • AZDelivery 5 x 1m DS18B20 Cable Capteur de Température Numérique TO92-55 - +125°C en Acier Inoxydable, Imperméable Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
    ✅ Obtenez maintenant 5 x capteurs de température numériques en acier inoxydable AZDelivery 1M avec câble DS18B20 à un prix spécial avec réduction sur la quantité achetée! ✅ Les capteurs de température AZDelivery avec DS18B20 original, de haute qualité avec boîtier en acier inoxydable (6 x 30mm).Le capteur de température DS18B20 vous permettra de mesurer et de lire facilement la température via les bibliothèques disponibles et open-source. ✅ Notre capteur de température DS18B20 peut être utilisé avec Raspberry Pi et microcontrôleur. ✅ Avec les capteurs de température AZDelivery imperméables, vous pouvez maintenant mesurer des températures comprises entre -55 et 125 degrés Celsius en dessous de l'eau. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • Thermomètre 4 voies type K Carte SD Enregistreur de données Thermocouple Température thermocouple + 2 Sonde thermocouple type K-Thermocouple à billes
    K Temp. Plage: -200 ~ 1370 ° C, -328 ~ 2498 ° F / Résolution: 0,1 ° C, 0,1 ° F / Précision (moins de 18 ~ 28 ° C ambiante température.): ± (0,3% lect + 1 ° C) Taux d'échantillonnage: Programmable de 1 seconde Temp. : 0 ~ 50 ° C / Humidité de fonctionnement: 80% Température de stockage .: -20 ~ 50 ° C / Humidité de stockage: 90% Alimentation: 4 piles AA (incluses dans le jeu) ou un adaptateur 9V (non inclus dans le jeu)