Arduino Nano - Registrar Dados com Timestamp no Cartão SD

Este tutorial ensina você a gravar um log com timestamp no Cartão Micro SD usando o Arduino Nano. Especificamente, vamos abordar:

A hora é obtida de um módulo RTC e armazenada em um Cartão Micro SD junto com os dados.

As informações armazenadas no Cartão Micro SD podem ser de qualquer tipo de dado. Isso pode incluir:

Resumindo, este tutorial usa os valores de dois pinos analógicos como exemplo de dados. É simples modificar o código para se adequar a qualquer tipo de dado.

Arduino Nano Log no Cartão Micro SD

Sobre o Módulo de Cartão Micro SD e o Módulo RTC

Se você não conhece o Módulo de Cartão Micro SD e o módulo RTC, incluindo as pinagens, como funcionam e como programá-los, os tutoriais a seguir podem ajudar:

Diagrama de Ligação

  • Você pode usar fios jumper macho-fêmea para conectar o módulo de Cartão Micro SD ao Arduino Nano
Diagrama de ligação do Módulo de Cartão Micro SD com Arduino Nano

This image is created using Fritzing. Click to enlarge image

  • Ou você pode encaixar o módulo de Cartão Micro SD em uma protoboard e então usar os fios jumper macho-macho
Diagrama de ligação do Módulo de Cartão Micro SD com Arduino Nano

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Arduino Nano - Registrar Dados com Timestamp no Cartão Micro SD

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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 }

Passos Rápidos

  • Certifique-se de que o Cartão Micro SD esteja formatado como FAT16 ou FAT32 (você pode encontrar instruções de como fazer isso por meio de uma pesquisa no Google).
  • Copie o código e abra-o no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para enviar o código ao Arduino Nano.
  • Verifique os resultados no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano
Newbiely.ino
···
8 Serial.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
  • Remova o Cartão Micro SD do módulo de Cartão Micro SD.
  • Insira o Cartão Micro SD em um leitor de Cartão SD USB.
  • Conecte o leitor de Cartão SD USB ao PC.
  • Abra o arquivo log.txt no seu computador; ele aparecerá da seguinte forma.
Arduino Nano log no Cartão Micro SD com informações de hora

Se você não tiver um leitor de Cartão SD USB, você pode examinar o conteúdo do arquivo de log executando o código do Arduino Nano abaixo.

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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 - Registrar Dados em vários arquivos

Registrar em um único arquivo pode levar a um arquivo muito grande com o tempo e dificultar a revisão. O código abaixo vai dividir o log em vários arquivos, com:

  • Um arquivo por dia
  • O nome do arquivo é a informação de data no formato YYYYMMDD.txt
/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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 }

Depois de concluir uma execução longa, se você:

  • Remover o Cartão Micro SD do módulo de Cartão Micro SD
  • Colocar o Cartão Micro SD em um leitor de Cartão SD USB
  • Conectar o leitor de Cartão SD USB ao seu PC
  • Você poderá ver os arquivos da seguinte forma:
Arduino Nano log no Cartão Micro SD em vários arquivos

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!