Arduino - Enregistrer des données avec horodatage sur carte SD

Dans ce tutoriel, nous allons apprendre à écrire des journaux avec horodatage sur une carte Micro SD en utilisant Arduino. Plus précisément, nous apprendrons :

Les informations temporelles sont obtenues à partir d'un module RTC et enregistrées sur une carte Micro SD avec les données.

Les données enregistrées sur la carte Micro SD peuvent être variées. Par exemple :

Pour simplifier, ce tutoriel lit les valeurs de deux broches analogiques comme exemple de données. Vous pouvez facilement adapter le code pour tout type de données.

Enregistrement Arduino sur carte Micro SD

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Micro SD Card
1×Micro SD Card Module
1×USB 3.0 SD Card Reader
1×Real-Time Clock DS3231 Module
1×CR2032 battery
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du module de carte Micro SD et du module RTC

Si vous ne connaissez pas le module de carte Micro SD et le module RTC (brochage, fonctionnement, programmation...), renseignez-vous sur ces derniers dans les tutoriels suivants :

Diagramme de câblage

Schéma de câblage du module de carte SD Arduino

This image is created using Fritzing. Click to enlarge image

※ NOTE THAT:

Si vous utilisez un shield Ethernet ou tout autre shield comportant un support de carte Micro SD, vous n'avez pas besoin d'utiliser le module de carte Micro SD. Vous devez simplement insérer la carte Micro SD dans le support de carte Micro SD sur le shield.

Arduino - Enregistrer des données avec horodatage sur une carte micro SD

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-log-data-with-timestamp-to-sd-card */ #include <SD.h> #include <RTClib.h> #define PIN_SPI_CS 4 #define FILE_NAME "log.txt" RTC_DS3231 rtc; File myFile; void setup() { Serial.begin(9600); // SETUP RTC MODULE if (!rtc.begin()) { Serial.println(F("Couldn't find RTC")); while (1); } if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); Serial.println(F("--------------------")); } void loop() { // open file for writing myFile = SD.open(FILE_NAME, FILE_WRITE); if (myFile) { Serial.println(F("Writing log to SD Card")); // write timestamp DateTime now = rtc.now(); 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(" "); // delimiter between timestamp and data // read data int analog_1 = analogRead(A0); int analog_2 = analogRead(A1); // write data myFile.print("analog_1 = "); myFile.print(analog_1); myFile.print(", "); // delimiter between data myFile.print("analog_2 = "); myFile.print(analog_2); myFile.write("\n"); // new line myFile.close(); } else { Serial.print(F("SD Card: error on opening file ")); Serial.println(FILE_NAME); } delay(2000); // delay 2 seconds }

Étapes rapides

  • Assurez-vous que la carte Micro SD est formatée en FAT16 ou FAT32 (cherchez sur Google)
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload sur l'IDE Arduino pour charger le code sur Arduino
  • Consultez le résultat sur le moniteur série.
COM6
Send
SD CARD INITIALIZED. -------------------- Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Détachez la carte Micro SD du module de carte Micro SD
  • Insérez la carte Micro SD dans un lecteur de carte SD USB
  • Connectez le lecteur de carte SD USB au PC
  • Ouvrez le fichier log.txt sur votre PC, il ressemble à ce qui suit
Enregistrement des données Arduino sur une carte Micro SD avec les informations temporelles

Si vous n'avez pas de lecteur de carte SD USB, vous pouvez vérifier le contenu du fichier journal en exécutant le code Arduino ci-dessous.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-log-data-with-timestamp-to-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 #define FILE_NAME "log.txt" File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for reading myFile = SD.open(FILE_NAME, FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: error on opening file ")); Serial.println(FILE_NAME); } } void loop() { }

Arduino - Enregistrer des données dans plusieurs fichiers

La rédaction des journaux dans un seul fichier entraîne, avec le temps, une augmentation de la taille du fichier et rend sa vérification difficile. Le code ci-dessous permettra d'écrire le journal dans plusieurs fichiers :

  • Un fichier par jour
  • Le nom du fichier est la date au format : AAAAMMJJ.txt
/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-log-data-with-timestamp-to-sd-card */ #include <SD.h> #include <RTClib.h> #define PIN_SPI_CS 4 RTC_DS3231 rtc; File myFile; char filename[] = "yyyymmdd.txt"; // filename (without extension) should not exceed 8 chars void setup() { Serial.begin(9600); // SETUP RTC MODULE if (!rtc.begin()) { Serial.println(F("Couldn't find RTC")); while (1); } if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); Serial.println(F("--------------------")); } void loop() { DateTime now = rtc.now(); int year = now.year(); int month = now.month(); int day = now.day(); // update filename filename[0] = (year / 1000) + '0'; filename[1] = ((year % 1000) / 100) + '0'; filename[2] = ((year % 100) / 10) + '0'; filename[3] = (year % 10) + '0'; filename[4] = (month / 10) + '0'; filename[5] = (month % 10) + '0'; filename[6] = (day / 10) + '0'; filename[7] = (day % 10) + '0'; // open file for writing myFile = SD.open(filename, FILE_WRITE); if (myFile) { Serial.println(F("Writing log to SD Card")); // write timestamp 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(" "); // delimiter between timestamp and data // read data int analog_1 = analogRead(A0); int analog_2 = analogRead(A1); // write data myFile.print("analog_1 = "); myFile.print(analog_1); myFile.print(", "); // delimiter between data myFile.print("analog_2 = "); myFile.print(analog_2); myFile.write("\n"); // new line myFile.close(); } else { Serial.print(F("SD Card: error on opening file ")); Serial.println(filename); } delay(2000); // delay 2 seconds }

Après une longue course, si vous :

  • Détachez la carte Micro SD du module de carte Micro SD
  • Insérez la carte Micro SD dans un lecteur de carte SD USB
  • Connectez le lecteur de carte SD USB au PC
  • Vous verrez les fichiers comme suit :
Enregistrement Arduino sur plusieurs fichiers de carte Micro SD

Vidéo

Références de Fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!