Tutorial sobre tarjeta SD Arduino y registro de datos

Las tarjetas SD son una herramienta invaluable para guardar datos en proyectos de Arduino. En este tutorial, te enseñaremos cómo utilizar una tarjeta SD con tu Arduino para almacenar y registrar datos de tus experimentos. ¡Sigue leyendo para aprender todo lo que necesitas saber para sacar el máximo provecho de esta funcionalidad!

En este tutorial de Arduino, aprenderemos cómo usar un módulo de tarjeta SD con la placa Arduino. Además, en combinación con el módulo de reloj en tiempo real DS3231, creamos un ejemplo de registro de datos en el que guardamos los datos de un sensor de temperatura en la tarjeta SD y los importamos a Excel para crear un gráfico. Puede ver el vídeo a continuación o leer el tutorial escrito a continuación.

Cómo funciona

Primero, veamos el módulo de la tarjeta SD. Funciona con tarjetas MicroSD estándar cuyo voltaje de funcionamiento es de 3,3V. Por tanto, el módulo dispone de un regulador de voltaje y un conversor de nivel para que podamos utilizarlo con los pines de 5V de la placa Arduino.

Tutorial sobre tarjeta SD Arduino y registro de datos

El>

Tutorial sobre tarjeta SD Arduino y registro de datos

Tenga>

Tutorial sobre tarjeta SD Arduino y registro de datos

Puede>

  • Módulo de tarjeta Micro SD……………….. Amazon / Banggood / AliExpress
  • Placa Arduino……………………………… Amazon / Banggood / AliExpress
  • Cables de puente y placa de pruebas………… Amazon / Banggood / AliExpress

Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.

Código para módulo de tarjeta SD Arduino

A continuación necesitamos programar el Arduino. Aquí hay un código simple:

/*
 *  Arduino SD Card Tutorial Example
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>

File myFile;

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  
  // Create/Open file 
  myFile = SD.open("test.txt", FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.println("Writing to file...");
    // Write to file
    myFile.println("Testing text 1, 2 ,3...");
    myFile.close(); // close the file
    Serial.println("Done.");
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }

  // Reading the file
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("Read:");
    // Reading the whole file
    while (myFile.available()) {
      Serial.write(myFile.read());
   }
    myFile.close();
  }
  else {
    Serial.println("error opening test.txt");
  }
  
}
void loop() {
  // empty
}Code language: Arduino (arduino)

Descripción del código: Entonces, primero debemos incluir las bibliotecas SD y SPI estándar, crear un objeto «Archivo» y definir el pin ChipSelect del bus SPI, en mi caso el pin 53 para la placa Arduino Mega. Para este ejemplo, solo queremos que nuestro código se ejecute una vez, por lo que todo el código se coloca en la sección Configuración mientras que la sección Bucle se deja vacía.

Entonces, primero tenemos que iniciar la comunicación en serie y definir el pin ChipSelect como salida. Necesitamos hacer esto porque el pin ChipSelect debe estar bajo para que funcione la comunicación SPI entre el módulo y el Arduino.

A continuación, inicializamos la tarjeta SD usando la función SD.begin(). Si la inicialización es exitosa, la declaración «if» se vuelve verdadera y la cadena «La tarjeta SD está lista para usar» se imprime en el monitor serie; de ​​lo contrario, se imprime la cadena «Error en la inicialización de la tarjeta SD» y el programa se cierra.

A continuación, creamos un nuevo archivo llamado «test.txt» usando la función SD.open(), incluido el argumento FILE_WRITE, lo que significa que podemos leer y escribir en el archivo. Si el archivo ya existe, la función SD.open() simplemente lo abre.

Entonces, cuando el archivo se crea correctamente, primero imprimimos la cadena «Escribir en archivo» en el monitor serie y luego usamos la función myFile.println() para imprimir el texto «Texto de prueba 1, 2, 3…» en el archivo. Después de eso, debemos usar la función close() para asegurarnos de que los datos previamente escritos en el archivo se guarden físicamente en la tarjeta SD.

A continuación veremos cómo podemos leer el archivo. Entonces usamos la misma función nuevamente, SD.open(), pero esta vez el archivo test.txt ya está creado y la función simplemente abre el archivo. Luego leemos el archivo usando la función myFile.read() y lo imprimimos en el monitor serie. La función read() en realidad solo lee un carácter a la vez, por lo que necesitamos usar el bucle while y la función myFile.available() para leer todos los caracteres o todos los datos escritos previamente. Al final tenemos que cerrar el archivo.

Ahora, si todo está bien, después de cargar el código en Arduino, verá lo siguiente en el monitor serie.

Tutorial sobre tarjeta SD Arduino y registro de datos

Como>

Registro de datos de la tarjeta SD Arduino

Ahora hagamos otro ejemplo más interesante de cómo registrar datos de un sensor de temperatura. Para ello utilizamos el módulo de reloj en tiempo real DS3231, que también tiene un sensor de temperatura integrado. Para obtener más detalles sobre cómo conectar y utilizar este módulo, consulte mi tutorial anterior.

Después de conectar los dos módulos al Arduino, veamos el código de este ejemplo.

/*
 *  Arduino Temperature Data Logging
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>
#include <DS3231.h>

File myFile;
DS3231  rtc(SDA, SCL);

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  rtc.begin();    
}
void loop() {
  Serial.print(rtc.getTimeStr());
  Serial.print(",");
  Serial.println(int(rtc.getTemp()));
 
  myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {    
    myFile.print(rtc.getTimeStr());
    myFile.print(",");    
    myFile.println(int(rtc.getTemp()));
    myFile.close(); // close the file
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }
  delay(3000);
}Code language: Arduino (arduino)

Descripción del código: Primero debemos incluir las bibliotecas necesarias para ambos módulos, luego crear los dos objetos e inicializarlos en la sección de configuración.

En la sección de bucle, usamos la función Serial.print() para imprimir los valores de tiempo y temperatura en el monitor serie, con una coma en medio y una nueva línea después del valor de temperatura. Necesitamos esta forma de filas para poder importarlas fácilmente y crear un gráfico en Excel. Tenga en cuenta también que los valores de temperatura se convierten a números enteros.

Por lo tanto, los mismos valores también se escriben en el archivo “test.txt” recién creado y al final solo necesitamos agregar un retraso que representa el intervalo de registro de los datos de temperatura.

Después de cargar el código, Arduino comenzará a guardar los valores de temperatura cada 3 segundos. Pasado un rato podremos abrir la tarjeta SD de nuestro ordenador para ver los resultados.

Tutorial sobre tarjeta SD Arduino y registro de datos

Para>

En el menú de datos, haga clic en el botón Obtener datos del texto y seleccione el archivo de texto. Aquí seleccione «Separar» y haga clic en «Siguiente». En el segundo paso, seleccione la coma como separador y salga del asistente.

Entonces este proceso coloca los valores de tiempo y temperatura en columnas separadas. Ahora todo lo que tenemos que hacer es seleccionar ambas columnas y elegir «Insertar gráfico de líneas» en el menú Insertar. Esto creará el gráfico donde podremos ver las lecturas de temperatura cada 3 segundos.

Tutorial sobre tarjeta SD Arduino y registro de datos

Eso>

Categorías tutoriales de arduino
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Tutorial sobre tarjeta SD Arduino y registro de datos

En este Tutorial de Arduino aprenderemos a usar un módulo de Tarjeta SD con la Placa Arduino. También, en combinación con el módulo de Reloj de Tiempo Real DS3231, haremos un ejemplo de registro de datos donde almacenaremos los datos de un sensor de temperatura en la Tarjeta SD y los importaremos en Excel para hacer un gráfico. Puedes ver el siguiente video o leer el tutorial escrito a continuación.

Cómo Funciona

Primero, echemos un vistazo al Módulo de Tarjeta SD. Funciona con tarjetas MicroSD estándar cuyo voltaje de operación es de 3.3 V. Por lo tanto, el módulo tiene un regulador de voltaje y un nivelador de señal para que podamos usarlo con los pines de 5 V de la Placa Arduino.

El Módulo de Tarjeta SD tiene seis pines, dos para alimentar el módulo, los pines VCC y GND, y cuatro pines más para la comunicación SPI. Aquí está cómo necesitamos conectarlo a la Placa Arduino.

  1. Módulo de Tarjeta micro SD – Amazon
  2. Placa Arduino – Banggood
  3. Protoboard y cables puente – AliExpress

Código del Módulo de Tarjeta SD de Arduino

A continuación, necesitamos programar el Arduino. Aquí hay un código simple:


Código Arduino...

Descripción del Código: Primero, necesitamos incluir las bibliotecas estándar de SD y SPI, crear un objeto «File» y definir el pin de ChipSelect del bus SPI, el pin 53 en mi caso para la Placa Arduino Mega.

Para este ejemplo queremos que nuestro código se ejecute solo una vez, por lo que todo el código se colocará en la sección «setup», mientras que la sección «loop» permanecerá vacía.

Después de cargar el código en el Arduino, si todo está bien, aparecerá lo siguiente en el monitor serie.

Registro de datos de Tarjeta SD Arduino

Ahora hagamos otro ejemplo más interesante de registro de datos de temperatura. Para eso, utilizaremos el módulo de Reloj de Tiempo Real DS3231, que tiene un sensor de temperatura incorporado. Puede encontrar más detalles sobre cómo conectar y usar este módulo en mi tutorial anterior.

Después de conectar los dos módulos al Arduino, veamos el código para este ejemplo:


Código Arduino...

Descripción del Código: Primero necesitamos incluir las bibliotecas necesarias para ambos módulos, luego crear dos objetos y en la sección de configuración inicializarlos.

En la sección del bucle, utilizando la función Serial.print(), imprimiremos los valores de tiempo y temperatura en el monitor serie, con un carácter «coma» entre ellos y una nueva línea después del valor de temperatura.

Estos mismos valores también se escribirán en el archivo «test.txt» recién creado y al final solo necesitamos agregar un retardo que representará el intervalo de grabación de los datos de temperatura.

Después de cargar el código, Arduino comenzará a almacenar los valores de temperatura cada 3 segundos.

Después de un tiempo, podemos abrir la tarjeta SD en nuestra computadora para ver los resultados.

Para crear un gráfico en Excel, necesitamos importar este archivo y aquí te mostramos cómo hacerlo:

Desde el menú de datos, debemos hacer clic en el botón «Obtener datos de texto» y seleccionar el archivo de texto. Aquí elegiremos «Delimitado» y haremos clic en siguiente, y en el segundo paso, seleccionaremos la coma como delimitador y luego terminaremos el asistente.

Este proceso insertará los valores de tiempo y temperatura en columnas separadas. Ahora solo necesitamos seleccionar ambas columnas y desde el menú de inserción seleccionar «Insertar gráfico de líneas». Esto creará el gráfico donde veremos los valores de temperatura cada 3 segundos.

Eso es todo para este tutorial, siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación.

5 comentarios en «Tutorial sobre tarjeta SD Arduino y registro de datos»

  1. ¡Qué tutorial tan útil! Me ha ayudado un montón a entender cómo utilizar una tarjeta SD con Arduino para el registro de datos. ¡Gracias por compartir tanto conocimiento de forma tan clara y sencilla! 🙌🏼👩🏽‍💻

Deja un comentario