Registro de datos Arduino con tarjeta SD y DS3231 RTC – Tutorial paso a paso
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 Reloj en Tiempo Real DS3231, haremos un ejemplo de registro de datos (data logging) donde almacenaremos los datos de un sensor de temperatura en la tarjeta SD e importaremos los datos a Excel para hacer un gráfico. Puedes ver el siguiente vídeo o leer el tutorial escrito a continuación. Primero veamos el Módulo de Tarjeta SD. Funciona con tarjetas MicroSD estándar cuyo voltaje de operación es 3,3 V. Por lo tanto, el módulo tiene un regulador de voltaje y un conversor de nivel 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. Ten en cuenta que cada placa Arduino tiene diferentes pines SPI que deben conectarse en consecuencia. Puedes conseguir los componentes necesarios para este tutorial de Arduino en los enlaces a continuación: A continuación, necesitamos programar el Arduino. Aquí hay un código simple: Descripción del código: Primero necesitamos incluir las librerías estándar SD y SPI, crear un objeto "File" y definir el pin 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, así que todo el código se colocará en la sección "setup", mientras que la sección "loop" permanecerá vacía. Primero necesitamos iniciar la comunicación serial y definir el pin ChipSelect como salida. Tenemos que hacer esto porque el pin ChipSelect necesita estar "Low" para que la comunicación SPI entre el módulo y el Arduino funcione. Luego, usando la función SD.begin() inicializaremos la tarjeta SD y si la inicialización es exitosa la sentencia "if" se volverá verdadera y la cadena "Tarjeta SD lista para usar." se imprimirá en el monitor serial, de lo contrario se imprimirá la cadena "Fallo inicialización tarjeta SD" y también el programa se terminará. Luego, usando la función SD.open() crearemos un nuevo archivo llamado "test.txt", incluyendo el argumento FILE_WRITE lo que significa que podemos tanto leer como escribir en el archivo. Si el archivo ya existe, la función SD.open() solo lo abrirá. Así que si el archivo se ha creado correctamente, primero imprimiremos la cadena "Escribiendo en archivo" en el monitor serial y luego usando la función myFile.println() imprimiremos el texto "Texto de prueba 1, 2, 3..." en el archivo. Después necesitamos usar la función close() para asegurar que los datos previos escritos en el archivo se guarden físicamente en la tarjeta SD. Luego, veremos cómo podemos leer del archivo. Así que de nuevo usaremos la misma función, SD.open(), pero esta vez como el archivo "test.txt" ya ha sido creado, la función solo abrirá el archivo. Luego, usando la función myFile.read() leeremos del archivo e imprimiremos en el monitor serial. La función read() en realidad lee solo un carácter a la vez, por lo tanto necesitamos usar el bucle "while" y la función myFile.available() para leer todos los caracteres o todos los datos escritos previamente. Al final necesitamos cerrar el archivo. Ahora, después de subir el código al Arduino, si todo está bien, lo siguiente aparecerá en el monitor serial. Como podemos ver, la tarjeta SD se ha inicializado correctamente, la escritura en ella también ha sido exitosa, y también la lectura de los datos escritos o la cadena "Texto de prueba 1, 2, 3..." se ha leído correctamente. Si abrimos la tarjeta SD en nuestro ordenador podemos ver el archivo "test.txt" creado y el texto escrito en él. Ahora hagamos otro ejemplo más interesante de registro de datos de un sensor de temperatura. Para ese propósito usaremos el módulo Reloj en Tiempo Real DS3231 que también tiene un sensor de temperatura incorporado. Puedes encontrar más detalles sobre cómo conectar y usar este módulo en mi tutorial anterior. Así que después de conectar los dos módulos al Arduino, veamos el código para este ejemplo. Descripción del Código: Primero necesitamos incluir las librerías necesarias para ambos módulos, luego crear los dos objetos y en la sección setup inicializarlos. En la sección loop, usando la función Serial.print() imprimiremos los valores de tiempo y temperatura en el monitor serial, con un carácter "coma" entre ellos y una nueva línea después del valor de temperatura. Necesitamos esta forma de las líneas para poder importarlas fácilmente y hacer un gráfico en Excel. Ten en cuenta también que los valores de temperatura se convierten en enteros. Estos mismos valores también se escribirán en el archivo "test.txt" recién creado y al final solo necesitamos añadir un retraso que representará el intervalo de registro de los datos de temperatura. Después de subir el código, el Arduino comenzará a almacenar los valores de temperatura cada 3 segundos. Después de un tiempo, podemos abrir la tarjeta SD en nuestro ordenador para ver los resultados. Para crear un gráfico en Excel necesitamos importar este archivo y aquí está cómo lo haremos: Desde el menú Datos, necesitamos hacer clic en el botón "Obtener datos desde 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 finalizaremos el asistente. Este proceso insertará el tiempo y los valores de temperatura en columnas separadas. Ahora solo necesitamos seleccionar ambas columnas y desde el menú Insertar seleccionar "Insertar gráfico de líneas". Esto creará el gráfico donde podemos ver 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.Cómo Funciona



Código Arduino Módulo Tarjeta SD
/*
* Tutorial Arduino Tarjeta SD Ejemplo
* by Dejan Nedelkovski, www.HowToMechatronics.com
*/
#include <SD.h>
#include <SPI.h>
File myFile;
int pinCS = 53; // Pin 10 en Arduino Uno
void setup() {
Serial.begin(9600);
pinMode(pinCS, OUTPUT);
// Inicialización Tarjeta SD
if (SD.begin()) {
Serial.println("Tarjeta SD lista para usar.");
} else {
Serial.println("Fallo inicialización tarjeta SD");
return;
}
// Crear/Abrir archivo
myFile = SD.open("test.txt", FILE_WRITE);
// Si el archivo se abrió correctamente, escribir en él:
if (myFile) {
Serial.println("Escribiendo en archivo...");
myFile.println("Texto de prueba 1, 2, 3...");
myFile.close(); // cerrar el archivo
Serial.println("Hecho.");
} else {
Serial.println("error abriendo test.txt");
}
// Leyendo el archivo
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("Leyendo:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
} else {
Serial.println("error abriendo test.txt");
}
}
void loop() {
// vacío
}Lenguaje: Arduino (arduino)
Registro de Datos (Data Logging) con Tarjeta SD Arduino
/*
* Registro de Datos de Temperatura Arduino
* 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 en Arduino Uno
void setup() {
Serial.begin(9600);
pinMode(pinCS, OUTPUT);
// Inicialización Tarjeta SD
if (SD.begin()) {
Serial.println("Tarjeta SD lista para usar.");
} else {
Serial.println("Fallo inicialización tarjeta SD");
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(); // cerrar el archivo
} else {
Serial.println("error abriendo test.txt");
}
delay(3000);
}Lenguaje: Arduino (arduino)

Proceso de manufactura
- Crea un Cerrojo RFID Seguro con Arduino – Guía Paso a Paso
- Construye un Monitor de Energía y Registrador de Datos Fiable con Arduino – Guía Paso a Paso
- Crea Animaciones y Juegos en LCD 16×2 con Arduino UNO
- Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
- Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED
- Construye una Radio FM Compacta con Arduino Nano y RDA5807M
- Proyecto Sensor de Huella Dactilar con Arduino Nano – Tutorial Paso a Paso
- Construye un Mini Piano con Arduino UNO – Tutorial Paso a Paso
- Construye un Portátil Raspberry Pi 3 y Arduino: Guía Paso a Paso
- Tutorial Arduino para Principiantes 01: Inicia tu Primer Proyecto
- IXON Cloud: Domine el logging de datos de máquina y paneles en minutos