"Ciencia y Tecnología" por Manolo: Módulo de SD en arduino. Datalogger

Marquesina

"AQUÍ NO NOS DETENEMOS A MIRAR EL PASADO POR MUCHO TIEMPO SIGUE SIEMPRE ADELANTE, ABRIENDO NUEVAS PUERTAS Y HACIENDO COSAS NUEVAS. SÉ CURIOSO" Walt Disney.

viernes, 25 de diciembre de 2020

Módulo de SD en arduino. Datalogger

Para los proyectos de arduino podemos guardar los datos en un tarjeta SD o micro SD. Para ello podemos usar módulos para unos y para otros. 

Este módulo lo vamos a utilizar en el nuestro proyecto #EurekaBotPintoDBZ para el #DesafíoBajoZero. Guardaremos todos los datos que recogeremos con los sensores.


Ambos módulos, tanto el SD como el microSD, se comunican con la placa arduino por medio de lectura a través de bus SPI por su alta transferencia de datos.

Se pueden conectar a 3.3 V. o a 5 V. Yo pongo los 5 V. para la MEGA.

La ventaja es que se quedan guardados los datos de los registros incluso si se desconecta la placa o se queda si corriente. El problema es que consume bastante memoria llegando a ocupar el límite de la placa..


CONEXIONES.


Para módulos SD. (Módulo-UNO-MEGA)

Módulo SDPin Arduino UNOPin Arduino MEGA
5 V.5 V.5 V.
GNDGNDGND
CSD9 (u otro)53
MOSID1151
SCKD1352
MISOD1250

Hay que decir que si el modulo tiene dos pines de GND hay que conectar los dos a la placa, pero NUNCA los dos de voltaje a la vez, esto es, o conectamos el del 5 V. o el de 3,3 V.


Código: (Tomado de ejemplos de arduino).

 ¡Cuidado! Hay que ver y cambiar el pin para CS, en nuestro caso es el 53


#include <SD.h>
 
File logFile;
 
void setup()
{
  Serial.begin(9600);
  Serial.print(F("Iniciando SD:"));
  // Uso el pin 53 para la conexión CS del módulo
  if (!SD.begin(53))
  {
    Serial.println(F("Error al iniciar"));
    return;
  }
  Serial.println(F("Iniciado correctamente"));
}
 
 
 
void loop()
{
  // Abrir archivo y escribir valor
  logFile = SD.open("datalog.txt", FILE_WRITE);
  
  if (logFile) { 
        int value = readSensor;
        logFile.print("Time(ms)=");
        logFile.print(millis());
        logFile.print(", value=");
        logFile.println(value);
        
        logFile.close();
  
  } 
  else {
    Serial.println("Error al abrir el archivo");
  }
  delay(500);
}
// Funcion que simula la lectura de un sensor
int readSensor()
{
   return 0;
}