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:
Arduino Nano - Gegevens loggen met tijdstempel in één enkel bestand op een Micro SD-kaart
Arduino Nano - Gegevens loggen met tijdstempel in meerdere bestanden op een Micro SD-kaart, één bestand per dag
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:
Gegevens verzameld van een sensor
Een logboek van toegangen tot een deur
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.
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:
U kunt mannetje-naar-vrouwtje jumperdraden gebruiken om de micro SD-kaartmodule te verbinden met de Arduino Nano
Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Of u plaatst de micro SD-kaartmodule op een breadboard (experimenteerprint) en gebruikt mannetje-naar-mannetje jumperdraden
Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
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;voidsetup() {Serial.begin(9600);// SETUP RTC MODULEif (!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("--------------------"));}voidloop() {// open file for writing myFile = SD.open(FILE_NAME, FILE_WRITE);if (myFile) {Serial.println(F("Writing log to SD Card"));// write timestampDateTimenow = 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 dataint 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.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano' on 'COM15')
New Line
9600 baud
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
Ln 11, Col 1
Arduino Nano on COM15
2
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.
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;voidsetup() {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 CardSerial.print(ch); // print the character to Serial Monitor } myFile.close(); } else {Serial.print(F("SD Card: error on opening file "));Serial.println(FILE_NAME); }}voidloop() {}
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 4RTC_DS3231 rtc;File myFile;char filename[] = "yyyymmdd.txt"; // filename (without extension) should not exceed 8 charsvoidsetup() {Serial.begin(9600);// SETUP RTC MODULEif (!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("--------------------"));}voidloop() {DateTimenow = rtc.now();intyear = now.year();intmonth = now.month();intday = 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 dataint 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:
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.
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!