ESP8266 – Daten mit Zeitstempel auf der SD-Karte protokollieren

Dieses Tutorial bietet umfassende Anleitungen zur Protokollierung von Daten mit Zeitstempel auf einer Micro-SD-Karte mit dem ESP8266. Die wichtigsten behandelten Komponenten umfassen:

Der Zeitstempel wird von einem RTC-Modul erfasst und zusammen mit den entsprechenden Daten auf der Micro-SD-Karte gespeichert. Die auf der Micro-SD-Karte gespeicherten Informationen können variieren und Messwerte von beliebigen Sensoren oder ein Zutrittsprotokoll des Türschlosses umfassen.

Um den Prozess zu veranschaulichen, nutzt dieses Tutorial Messwerte von zwei analogen Eingängen. Allerdings ist der bereitgestellte Code leicht anpassbar, um verschiedene Datentypen zu unterstützen.

ESP8266 NodeMCU-Logdatei auf Mikro-SD-Karte

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Micro-SD-Karte
1×Micro-SD-Karten-Modul
1×(Optional) MicroSD-zu-SD-Speicherkarten-Adapter
1×DS3231 Echtzeituhr(RTC)-Modul
1×CR2032 Batterie
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Micro-SD-Karten-Modul und RTC-Modul

Wenn Sie mit dem Micro-SD-Kartenmodul und dem RTC-Modul nicht vertraut sind (einschließlich Pinbelegung, wie es funktioniert und wie man es programmiert), beziehen Sie sich bitte auf die folgenden Tutorials:

Verdrahtungsdiagramm

ESP8266 NodeMCU Mikro-SD-Karten-Modul Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

※ Notiz:

Wenn Sie ein Ethernet-Shield oder jedes andere Shield verwenden, das einen Micro-SD-Kartenhalter hat, müssen Sie kein Micro-SD-Kartenmodul verwenden. Alles, was Sie tun müssen, ist, die Micro-SD-Karte in den Micro-SD-Kartenhalter am Shield einzulegen.

ESP8266 - Daten mit Zeitstempel auf der MicroSD-Karte protokollieren

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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 }

Schnelle Schritte

Um mit ESP8266 in der Arduino IDE zu beginnen, befolgen Sie diese Schritte:

  • Schauen Sie sich das Tutorial zur Einrichtung der Umgebung für ESP8266 in der Arduino IDE an, falls dies Ihre erste Nutzung von ESP8266 ist.
  • Schließen Sie die Bauteile wie im Diagramm gezeigt an.
  • Verbinden Sie das ESP8266-Board mit Ihrem Computer über ein USB-Kabel.
  • Öffnen Sie die Arduino-IDE auf Ihrem Computer.
  • Wählen Sie das richtige ESP8266-Board, z. B. NodeMCU 1.0 (ESP-12E Modul), und seinen jeweiligen COM-Port.
  • Stellen Sie sicher, dass die Micro-SD-Karte entweder als FAT16 oder FAT32 formatiert ist (weitere Informationen dazu finden Sie online).
  • Kopieren Sie den Code und öffnen Sie ihn in der Arduino-IDE.
  • Klicken Sie im Arduino-IDE auf die Schaltfläche Hochladen, um den Code zu kompilieren und auf den ESP8266 hochzuladen.
  • Zum Schluss sehen Sie das Ergebnis im Serial Monitor.
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  
  • Entfernen Sie die Micro-SD-Karte aus dem Micro-SD-Kartenmodul.
  • Stecken Sie die Micro-SD-Karte in einen USB-SD-Kartenleser.
  • Schließen Sie den USB-SD-Kartenleser an den PC an.
  • Öffnen Sie die log.txt-Datei auf Ihrem PC; sie wird wie folgt angezeigt.
ESP8266 NodeMCU protokolliert auf Micro-SD-Karte mit Zeitinformationen

Wenn Sie keinen USB-SD-Kartenleser besitzen, können Sie den Inhalt der Logdatei einsehen, indem Sie den untenstehenden ESP8266-Code ausführen.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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 - Logdaten in mehreren Dateien

Das Protokollieren in eine einzelne Datei kann im Laufe der Zeit zu einer großen Dateigröße führen, was die Überprüfung erschwert. Der unten stehende Code wird mehrere Dateien erstellen, jeweils eine pro Tag, wobei der Dateiname das Datum im Format YYYYMMDD.txt enthält.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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 }

Sobald du einen langen Lauf beendet hast, wenn du:

  • Entfernen Sie die Micro-SD-Karte aus dem Micro-SD-Kartenmodul
  • Stecken Sie die Micro-SD-Karte in einen USB-SD-Kartenleser
  • Schließen Sie den USB-SD-Kartenleser an den PC an
  • Sie können die Dateien wie folgt anzeigen:
ESP8266 NodeMCU protokolliert mehrere Dateien auf der Micro-SD-Karte.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!