En tant qu'ingénieurs / développeurs, nous nous appuyons toujours sur les données collectées pour concevoir ou améliorer un système. L'enregistrement des données et leur analyse est une pratique courante dans la plupart des industries, ici, nous construisons un projet d'enregistrement de données Arduino où nous allons apprendre comment nous pouvons enregistrer des données à un intervalle de temps spécifique. Nous allons utiliser une carte Arduino pour lire certaines données (ici température, humidité, date et heure) et les sauvegarder sur une carte SD et l'ordinateur simultanément.
Les données enregistrées peuvent être facilement ouvertes dans une feuille Excel pour des analyses ultérieures. Pour conserver la date et l'heure, nous utiliserons le célèbre module RTC DS3231 et pour obtenir la température et l'humidité, nous utiliserons le capteur DHT11. À la fin du projet, vous apprendrez
- Comment enregistrer des données sur une carte SD avec des valeurs de date, d'heure et de capteur.
- Comment écrire des données directement sur Excel Sheet sur PC via une communication série.
Matériaux nécessaires:
- Planche à pain
- Arduino UNO (toute carte Arduino)
- Capteur de température DHT11
- Module DS3231 RTC
- Module de carte SD
- carte SD
- Fils de connexion
- Ordinateur / portable
Schéma:
Le schéma de circuit de ce projet d'enregistrement de température Arduino est illustré ci-dessous.
Comme le montre le schéma de circuit, les connexions sont très simples puisque nous les avons utilisées comme modules, nous pouvons les construire directement sur une maquette. Les connexions sont ensuite classées dans le tableau ci-dessous
Broche Arduino |
Broche de module |
Capteur de température - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
NC |
NC |
En dehors |
Broche 7 |
Module RTC DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Broche A5 |
SDA |
Broche A4 |
Module de carte SD |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Broche 12 |
MOSI |
Broche 11 |
SCK |
Broche 13 |
CS |
Broche 4 |
Vous pouvez remplacer le capteur de température DHT11 par l'un de vos capteurs à partir duquel vous devez enregistrer les valeurs. Vous pouvez vérifier LM35 avec Arduino pour lire la température.
Le module RTC DS3231 est interfacé avec Arduino en utilisant la communication I2C (SCL, SDA) et le module de carte SD est interfacé en utilisant la communication SPI (MISO, MOSI, SCK, CS). Les broches 4 et 7 sont définies comme la broche CS et la broche de sortie par le programme Arduino, vous pouvez les changer en n'importe quelle autre broche si nécessaire. Nous avons précédemment interfacé la carte SD avec Arduino dans le projet de lecteur de musique.
Explication du programme Arduino:
Nous devons écrire le programme Arduino qui peut faire ce qui suit.
- Lisez les données du capteur DTH11 (ou toute autre donnée que vous souhaitez enregistrer).
- Initialisez le bus I2C pour lire les données du module RTC.
- Initialisez le bus SPI pour interfacer le module de carte SD avec Arduino.
- Enregistrez la date, l'heure, la température et l'humidité sur la carte SD.
- Stockez la date, l'heure, la température et l'humidité sur une feuille Excel exécutée sur un ordinateur / ordinateur portable.
Les étapes ci-dessus peuvent sembler compliquées, mais elles sont très faciles car nous avons les bibliothèques pour faire le travail difficile à notre place. Vous devez télécharger les deux bibliothèques suivantes
- Bibliothèque de capteurs DHT11 de GitHub
- Bibliothèque de modules DS3231 RTC de Rinky-Dink Electronics
Une fois que vous avez téléchargé la bibliothèque, ajoutez-les à votre IDE Arduino en suivant
Sketch-> Inclure la bibliothèque -> Ajouter une bibliothèque.ZIP
Pour alimenter les données d'Arduino dans une feuille Excel sur ordinateur, nous devrons également installer le logiciel appelé PLX-DAQ fourni par Parallax Inc. Suivez le lien pour télécharger le fichier et les installer en fonction de votre système d'exploitation. Cela aurait dû créer un dossier nommé PLS-DAQ sur votre bureau. Nous nous en occuperons plus tard dans notre section de travail.
Maintenant, après avoir ajouté les deux bibliothèques et après avoir installé le logiciel, vous pouvez utiliser le code complet (donné au bas du tutoriel) et les télécharger sur votre Arduino. J'ai fait de mon mieux pour garder le code aussi simple que possible et les explications sont également données dans des sections de commentaires. De plus, j'expliquerai les segments importants ci-dessous.
1. Lecture des données du DS3231:
DS3231 est un module RTC (Real Time Clock). Il est utilisé pour maintenir la date et l'heure de la plupart des projets électroniques. Ce module dispose de sa propre alimentation à pile bouton à l'aide de laquelle il maintient la date et l'heure même lorsque l'alimentation principale est coupée ou que le MCU a subi une réinitialisation matérielle. Donc, une fois que nous avons défini la date et l'heure dans ce module, il en gardera toujours une trace.
L'utilisation de ce module est très simple grâce à la bibliothèque fournie par Arduino.
// Lancez le DS3231 à l'aide de l'interface matérielle DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Initialise l'objet rtc rtc.begin (); // #### les lignes suivantes peuvent être décommentées pour régler la date et l'heure pour la première fois ### / * rtc.setDOW (VENDREDI); // Définit le jour de la semaine sur SUNDAY rtc.setTime (18, 46, 45); // Réglez l'heure sur 12:00:00 (format 24 heures) rtc.setDate (6, 30, 2017); // Définit la date au 1er janvier 2014 * /}
Remarque: lorsque vous utilisez ce module pour la première fois, vous devez régler la date et l'heure. Cela peut être fait en supprimant simplement les commentaires comme mentionné ci-dessus et en écrivant la date et l'heure. Assurez-vous de les commenter et de le télécharger, sinon chaque fois que vous exécutez le tableau, la date et l'heure seront à nouveau réglées. Vous pouvez également utiliser RTC IC DS1307 pour lire l'heure avec Arduino.
2. Lecture des données de DHT11:
DHT11 est un capteur d'humidité de la température. Il envoie les valeurs de température et d'humidité sous forme de données 8 bits en série via la broche de sortie du module. La bibliothèque lit ces données en utilisant la fonction série logicielle de l'Arduino.
#define DHT11_PIN 7 // La broche de sortie du capteur est connectée à la broche 7 dht DHT; // Objet capteur nommé DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Ici, j'ai connecté la broche de sortie à la broche 7, par exemple, vous pouvez choisir n'importe quelle broche prenant en charge la série logicielle. Appel DHT.read (numéro de broche); lira la valeur de la température et de l'humidité et la stockera respectivement dans les paramètres DHT.temperature et DHT.Humidity . Vérifiez également cette mesure de température Arduino basée sur DHT11.
3. Initialisation du module de carte SC:
void Initialize_SDcard () {// voir si la carte est présente et peut être initialisée: if (! SD.begin (chipSelect)) {Serial.println ("Card failed, or not present"); // ne faites plus rien: return; } // ouvre le fichier. notez qu'un seul fichier peut être ouvert à la fois, // vous devez donc fermer celui-ci avant d'en ouvrir un autre. Fichier dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // si le fichier est disponible, écrivez-y: if (dataFile) {dataFile.println ("Date, Heure, Température, Humidité"); // Ecrit la première ligne du fichier excel dataFile.close (); }}
Utiliser une carte SD avec Arduino est facile grâce à la bibliothèque de cartes SD qui sera ajoutée par défaut à l'IDE Arduino. Dans la fonction d'initialisation de la carte SD, nous allons créer un fichier texte nommé «LoggerCD.txt» et écrire la première ligne de notre contenu. Ici, nous séparons les valeurs en utilisant un «,» comme délimiteur. Cela signifie que lorsqu'une virgule est placée, cela signifie que nous devons passer à la cellule suivante de la feuille Excel.
4. Écriture de données sur la carte SD
void Write_SDcard () {// ouvre le fichier. notez qu'un seul fichier peut être ouvert à la fois, // vous devez donc fermer celui-ci avant d'en ouvrir un autre. Fichier dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // si le fichier est disponible, écrivez-y: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Stocke la date sur la carte SD dataFile.print (","); // Passer à la colonne suivante en utilisant un "," dataFile.print (rtc.getTimeStr ()); // Stocke la date sur la carte SD dataFile.print (","); // Passer à la colonne suivante en utilisant un "," dataFile.print (DHT.temperature); // Stocke la date sur la carte SD dataFile.print (","); // Passer à la colonne suivante en utilisant un "," dataFile.print (DHT.humidity); // Stocke la date sur la carte SD dataFile.print (","); // Passer à la colonne suivante en utilisant un "," dataFile.println (); // Fin de ligne passe à la ligne suivante dataFile.close ();// Ferme le fichier} else Serial.println ("OOPS !! Echec de l'écriture de la carte SD"); }
Comme indiqué précédemment, notre intention est d' enregistrer la date, l'heure, la température et l'humidité sur notre carte SD. Avec l'aide de la bibliothèque DS3231 et de la bibliothèque DHT11, notre Arduino sera capable de lire tous ces quatre paramètres et de les stocker dans les paramètres suivants comme indiqué dans le tableau ci-dessous
Date |
rtc.getDateStr ()); |
Temps |
rtc.getTimeStr ()); |
Température |
Température DHT |
Humidité |
DHT.humidité |
Maintenant, nous pouvons directement utiliser ces paramètres pour les stocker sur la carte SD en utilisant la ligne d'impression
dataFile.print (paramètre);
Vous pouvez remarquer que chaque paramètre est séparé par une virgule pour le rendre lisible et un dataFile.println (); est utilisé pour indiquer la fin de la ligne.
5. Écriture de données sur PLX-DAQ
PLX-DAQ est un logiciel plug-in Microsoft Excel qui nous aide à écrire des valeurs d'Arduino directement dans un fichier Excel sur notre ordinateur portable ou PC. C'est mon préféré pour deux raisons:
1.Vous pouvez écrire et surveiller les données en même temps et nous permet de les tracer sous forme de graphiques.
2. Vous n'avez pas besoin d'un module RTC tel que DS3231 pour garder une trace de la date et de l'heure. Vous pouvez simplement utiliser la date et l'heure sur votre ordinateur portable / ordinateur et les enregistrer directement sur Excel.
Pour utiliser ce logiciel avec Arduino, nous devons envoyer les données en série dans un modèle spécifique, tout comme l'affichage de la valeur sur un moniteur série. Les principales lignes sont expliquées ci-dessous:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // efface toutes les données laissées par les projets précédents Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // écrivez toujours LABEL, pour l'indiquer comme première ligne} void Write_PlxDaq () {Serial.print ("DATA"); // écrivez toujours "DATA" pour indiquer ce qui suit en tant que Data Serial.print (","); // Passer à la colonne suivante en utilisant un "," Serial.print ("DATE"); // Stocker la date sur Excel Serial.print (","); // Passer à la colonne suivante en utilisant un "," Serial.print ("TIME"); // Stocker la date sur Excel Serial.print (","); // Passer à la colonne suivante en utilisant un "," Serial.print (DHT.temperature); // Stocker la date sur Excel Serial.print (","); // Passer à la colonne suivante en utilisant un "," Serial.print (DHT.humidity);// Stocker la date sur Excel Serial.print (","); // Passer à la colonne suivante en utilisant un "," Serial.println (); // Fin de ligne passe à la ligne suivante}
Le logiciel peut reconnaître des mots-clés tels que LABEL, DATA, TIME, DATE etc. Comme indiqué dans la fonction Initialize, le mot-clé “LABEL” est utilisé pour écrire le premier ROW de la feuille Excel. Plus tard dans la fonction Write, nous utilisons le mot-clé «DATA» pour indiquer que les informations suivantes doivent être considérées comme DATA. Pour indiquer que nous devons passer à la ligne suivante, nous devons utiliser une virgule («,»). Pour indiquer la fin de la ligne, nous devons envoyer un Serial.println ();.
Comme indiqué précédemment, nous pouvons écrire la date et l'heure du système en envoyant respectivement les mots-clés «DATE» et «HEURE» comme indiqué ci-dessus.
Remarque: n'utilisez pas de moniteur série lorsque vous utilisez ce logiciel PLX_DAQ.
Explication de travail:
Le fonctionnement de l' enregistreur de données Arduino est simple. Une fois que le matériel et le logiciel sont prêts, il est temps de graver le programme sur votre carte Arduino. Dès que votre programme sera téléchargé, vos valeurs de température et d'humidité commenceront à être stockées sur votre carte SD. Vous devez suivre les étapes ci-dessous pour permettre à PLX-DAQ de se connecter à la feuille Excel de l'ordinateur.
Étape 1: Ouvrez le fichier «Feuille de calcul Plx-Daq» qui a été créé sur votre bureau lors de l'installation.
Étape 2: S'il y a un blocage de sécurité, cliquez sur Options-> Activer le contenu -> Terminer -> OK pour obtenir l'écran suivant.
Étape 3: Sélectionnez maintenant le débit en bauds comme «9600» et le port auquel votre Arduino est connecté et cliquez sur Connecter. Vos valeurs devraient commencer à être enregistrées comme indiqué dans l'image ci-dessous.
Vous pouvez laisser cette feuille Excel ouverte et surveiller les valeurs à mesure qu'elles sont enregistrées. Comme cela se produit, notre carte SD aurait également enregistré les mêmes valeurs. Pour vérifier si cela fonctionne, retirez simplement la carte SD et ouvrez-la sur votre ordinateur. Vous devriez y trouver un fichier texte nommé «LoggerCD.txt» . Une fois ouvert, cela ressemblerait à quelque chose comme ça.
Ce fichier contient des données, mais il serait difficile de les analyser sur un bloc-notes. Par conséquent, nous pouvons l'ouvrir sur Excel en tant que fichier CSV (valeurs séparées par des virgules), ce qui le rend plus efficace. Ouvrir dans Excel
1.Ouvrez Excel. Cliquez sur Fichier-> Ouvrir et sélectionnez «Tous les fichiers» dans le coin inférieur droit et sélectionnez le fichier «LoggerCD» sur la carte SD. Cela ouvrira un assistant d'importation de texte.
2.Cliquez sur «Suivant» et sélectionnez la virgule comme délimiteur. Cliquez à nouveau sur «Suivant». Puis terminez.
3.Maintenant, vos valeurs seront ouvertes dans un fichier Excel comme indiqué ci-dessous
J'ai enregistré les valeurs toutes les 5 secondes; vous pouvez les enregistrer à n'importe quel moment en modifiant la fonction de retard dans le programme. Pour une compréhension détaillée du fonctionnement, veuillez regarder la vidéo ci-dessous.
J'espère que vous avez aimé le projet, si vous avez le moindre doute, écrivez-les dans la section commentaires ci-dessous et je vous aiderai.
Amélioration bonus - Enregistrement de données sans fil à l'aide d'Arduino:
Une fois que vous avez réussi jusqu'à présent, avec quelques avancées et en ajoutant simplement quelques lignes de code, vous pouvez enregistrer des données sans fil.
Connectez simplement un appareil Bluetooth tel que HC-05 et écrivez les données sur PLX-DAQ via Bluetooth au lieu de Serial. C'est remplacer Serial.print (paramètre); avec BluetoothName.print (paramètre); et connectez votre ordinateur portable à votre module Bluetooth et sélectionnez le port COM auquel votre ordinateur portable Bluetooth est connecté et Taadaaa…… Vous disposez d'un système d'enregistrement de données sans fil en un rien de temps.