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

Ce tutoriel fournit des instructions complètes sur l'enregistrement de données avec horodatage sur une carte Micro SD en utilisant ESP8266. Les composants clés abordés incluent :

L'horodatage est acquis via un module RTC et est enregistré sur la carte Micro SD avec les données correspondantes. Les informations stockées sur la carte Micro SD peuvent varier, incluant des mesures de n'importe quel capteur ou un registre d'accès de serrure de porte...

Pour illustrer le processus, ce tutoriel utilise des lectures issues de deux broches analogiques. Cependant, le code fourni est facilement adaptable pour prendre en charge différents types de données.

Enregistrement ESP8266 NodeMCU sur carte Micro SD

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
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) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 Screw Terminal Adapter

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 n'êtes pas familiarisé avec le module Micro SD Card et le module RTC (y compris le brochage, le fonctionnement et la programmation), veuillez vous référer aux tutoriels suivants :

Diagramme de câblage

Schéma de câblage du module de carte Micro SD ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

※ NOTE THAT:

Si vous utilisez un shield Ethernet ou tout autre shield équipé d'un port pour carte Micro SD, vous n'avez pas besoin d'utiliser le module de carte Micro SD. Il vous suffit d'insérer la carte Micro SD dans le port pour carte Micro SD du shield.

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

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-log-data-with-timestamp-to-sd-card */ #include <SD.h> #include <RTClib.h> #define PIN_SPI_CS D8 #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

Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez ESP8266.
  • Câblez les composants comme indiqué sur le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Assurez-vous que la carte Micro SD est formatée en FAT16 ou FAT32 (vous pouvez trouver plus d'informations à ce sujet en ligne).
  • Copiez le code et ouvrez-le dans Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour compiler et téléverser le code sur l'ESP8266.
  • Enfin, visualisez 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  
  • Retirez 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 apparaîtra comme suit.
Enregistrement sur carte Micro SD avec informations temporelles via ESP8266 NodeMCU.

Si vous ne possédez pas de lecteur de carte SD USB, vous pouvez inspecter le contenu du fichier journal en exécutant le code ESP8266 ci-dessous.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-log-data-with-timestamp-to-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 #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() { }

ESP8266 - Enregistrer des données dans plusieurs fichiers

La journalisation dans un seul fichier peut entraîner une taille importante avec le temps, ce qui rend difficile sa révision. Le code ci-dessous créera plusieurs fichiers, un pour chaque jour, le nom de fichier contenant la date au format AAAAMMJJ.txt.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-log-data-with-timestamp-to-sd-card */ #include <SD.h> #include <RTClib.h> #define PIN_SPI_CS D8 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 }

Une fois que vous avez terminé une longue course, si vous :

  • Retirez 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 pourrez voir les fichiers comme suit :
Enregistrement ESP8266 NodeMCU 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!