Arduino Nano – Daten mit Zeitstempel auf der SD-Karte protokollieren

Dieses Tutorial zeigt dir, wie du Logs mit Zeitstempel auf die Micro-SD-Karte schreibst, mit dem Arduino Nano. Konkret werden wir Folgendes behandeln:

Die Zeit wird von einem RTC-Modul bezogen und zusammen mit den Daten auf einer Micro-SD-Karte gespeichert.

Die Informationen, die auf der Micro-SD-Karte gespeichert sind, können jede Art von Daten sein. Dies könnte Folgendes umfassen:

Kurz gesagt, verwendet dieses Tutorial die Werte von zwei analogen Eingängen als Veranschaulichung von Daten. Es ist einfach, den Code so zu ändern, dass er zu jeder Art von Daten passt.

Arduino Nano: Protokollierung auf Micro-SD-Karte

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
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 Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

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-Kartenmodul und RTC-Modul

Wenn Sie mit dem Micro-SD-Kartenmodul und dem RTC-Modul nicht vertraut sind, einschließlich ihrer Pinbelegungen, wie sie funktionieren und wie man sie programmiert, können die folgenden Tutorials helfen:

Verdrahtungsdiagramm

  • Sie können Jumperkabel von männlich zu weiblich verwenden, um das Micro-SD-Kartenmodul mit dem Arduino Nano zu verbinden
Arduino Nano Micro-SD-Kartenmodul Verdrahtungsdiagramm

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

  • Oder Sie können das Micro-SD-Kartenmodul auf dem Breadboard anschließen und dann die Jumper-Kabel mit männlichen Steckern verwenden.
Arduino Nano Micro-SD-Kartenmodul Verdrahtungsdiagramm

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

Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.

Arduino Nano - Daten mit Zeitstempel auf Micro-SD-Karte protokollieren

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano/arduino-nano-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 }

Schnelle Schritte

  • Stellen Sie sicher, dass die Micro‑SD-Karte entweder als FAT16 oder FAT32 formatiert ist (Anleitungen dazu finden Sie über eine Google-Suche).
  • 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 auf den Arduino Nano zu übertragen.
  • Überprüfen Sie die Ergebnisse im seriellen 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 Computer; sie wird wie folgt angezeigt.
Arduino Nano protokolliert Daten auf Micro-SD-Karte mit Zeitangaben

Wenn Sie keinen USB-SD-Kartenleser besitzen, können Sie den Inhalt der Logdatei prüfen, indem Sie den untenstehenden Arduino-Nano-Code ausführen.

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano/arduino-nano-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 Nano - Daten in mehreren Dateien protokollieren

Das Protokollieren in eine einzige Datei kann im Laufe der Zeit zu einer sehr großen Dateigröße führen und das Durchsehen erschweren. Der untenstehende Code teilt das Protokoll in mehrere Dateien auf, wobei:

  • Eine Datei pro Tag
  • Der Dateiname ist die Datumsinformation im Format YYYYMMDD.txt
/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano/arduino-nano-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 }

Sobald Sie einen längeren Lauf beendet haben, falls Sie:

  • Entfernen Sie die Micro-SD-Karte aus dem Micro-SD-Kartenmodul
  • Stecken Sie die Micro-SD-Karte in einen USB-SD-Kartenleser
  • Stecken Sie den USB-SD-Kartenleser in Ihren PC
  • Sie können die Dateien wie folgt anzeigen:
Arduino Nano protokolliert mehrere Dateien auf einer 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!