Arduino Nano - Gegevens loggen met tijdstempel naar SD-kaart

Deze handleiding legt uit hoe u met Arduino Nano een logbestand met tijdstempel schrijft naar een Micro SD-kaart. We behandelen specifiek:

De tijd wordt verkregen via een RTC-module en samen met de gegevens opgeslagen op de Micro SD-kaart.

De informatie die op de Micro SD-kaart wordt opgeslagen kan van elk type zijn, bijvoorbeeld:

Kort gezegd gebruikt deze tutorial waarden van twee analoge pinnen als voorbeeldgegevens. Het is makkelijk om de code aan te passen voor elk type gegevens.

Arduino Nano Log to Micro SD Card

Hardware benodigd

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×Micro SD-kaart
1×Micro SD-kaartmodule
1×USB 3.0 SD-kaartlezer
1×Real-Time Clock DS3231-module
1×CR2032 batterij
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Micro SD-kaartmodule en RTC-module

Als u niet bekend bent met de Micro SD-kaartmodule en RTC-module, inclusief hun pinouts, werking en hoe u ze programmeert, kunnen de volgende tutorials u helpen:

Bedradingsschema

  • U kunt mannetje-naar-vrouwtje jumperdraden gebruiken om de micro SD-kaartmodule te verbinden met de Arduino Nano
Arduino Nano Micro SD Card Module wiring diagram

This image is created using Fritzing. Click to enlarge image

  • Of u plaatst de micro SD-kaartmodule op een breadboard (experimenteerprint) en gebruikt mannetje-naar-mannetje jumperdraden
Arduino Nano Micro SD Card Module wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Nano - Gegevens loggen met tijdstempel naar Micro SD-kaart

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 }

Snel aan de slag

  • Zorg dat de Micro SD-kaart is geformatteerd als FAT16 of FAT32 (u vindt instructies hiervoor eenvoudig via een Google-zoekopdracht).
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik in de Arduino IDE op de Upload-knop om de code naar de Arduino Nano te sturen.
  • Bekijk de resultaten in de Seriële 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  
  • Verwijder de Micro SD-kaart uit de Micro SD-kaartmodule.
  • Steek de Micro SD-kaart in een USB SD-kaartlezer.
  • Sluit de USB SD-kaartlezer aan op de pc.
  • Open het bestand log.txt op uw computer; het ziet er als volgt uit.
Arduino Nano log to Micro SD Card with time information

Als u geen USB SD-kaartlezer heeft, kunt u de inhoud van het logbestand ook bekijken door onderstaande Arduino Nano code uit te voeren.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 - Gegevens loggen in meerdere bestanden

Loggen naar één enkel bestand kan na verloop van tijd leiden tot een groot bestand dat moeilijk terug te zoeken is. De onderstaande code splitst het logboek in meerdere bestanden, met:

  • Eén bestand per dag
  • Bestandsnaam is de datum in YYYYMMDD.txt formaat
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 }

Wanneer u een langere periode hebt gelogd, kunt u:

  • De Micro SD-kaart uit de Micro SD-kaartmodule verwijderen
  • De Micro SD-kaart in een USB SD-kaartlezer plaatsen
  • De USB SD-kaartlezer aansluiten op uw pc
  • De bestanden als volgt bekijken:
Arduino Nano log to Micro SD Card multiple files

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Opmerkingen

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!