Escribir datos en una tarjeta SD con Arduino (Módulo MicroSD y Ethernet Shield)

Hoy he estado probando un módulo para Arduino que había comprado en Ebay y de paso también he probado el lector de tarjetas Micro SD que incluye el módulo Ethernet Shield para Arduino. Para ello he hecho un código sencillo que escribe cada 5s el valor de un potenciómetro conectado a la placa Arduino en un archivo llamado “VALORPOT.TXT” (Si este archivo no existe lo crea y si ya existe añade los datos a continuación de los anteriores).

Escribir datos en SD

Los módulos que he usado han sido los siguientes:

Dependiendo del módulo y el modelo de Arduino que vayamos a usar tendremos que realizar unas conexiones u otras:

· Para el módulo ethernet solo es necesario encajarlo correctamente sobre la placa Arduino y conectar el potenciómetro al Pin analógico 0.

· En el caso del módulo MICRO SD CARD Adapter es necesario hacer las siguientes conexiones:

- MOSI –> Pin 11 (La mayoría de las placas Arduino), para Arduino Mega: 51
– MISO –> Pin 12 (La mayoría de las placas Arduino), para Arduino Mega: 50
– CLK —-> Pin 13 (La mayoría de las placas Arduino), para Arduino Mega: 52
– CS ——> Pin 4
– 5V ——> 5V
– GND –> GND
– Potenciómetro conectado al Pin analógico 0

Más información en http://arduino.cc/en/Reference/SPI

El programa con sus correspondientes explicaciones (Comentarios en el código) es el siguiente:

// Escribir datos en una tarjeta SD con Arduino - Datalogger http://zygzax.com/

//Incluimos la libreria SD.
#include <SD.h>
// Guardamos en que entrada de Arduino esta conectado el pin CS del modulo.
const int chipSelect = 4;

void setup(){
  // Configuramos el puerto serie para informar de fallos a traves de el.
  Serial.begin(9600);
  
  // El pin CS por defecto de la placa arduino debe ser configurado como salida
  // aunque no se use (10 en la mayoria de las placas, 53 en Arduino Mega).
  pinMode(10, OUTPUT);
  
  // Si ha habido error al leer la tarjeta informamos por el puerto serie.
  if (!SD.begin(chipSelect)){
    Serial.println("Error al leer la tarjeta.");
    return;
  }
}

void loop(){
  
  // Creamos las variable donde vamos a guardar el valor del potenciometro.
  int pot=0;
  
  // Leemos los datos del potenciometro.
  pot=analogRead(0);
    
  // Abrimos el fichero donde vamos a guardar los datos (Si no existe se crea automaticamente).
  File dataFile = SD.open("valorpot.txt", FILE_WRITE);
    
  // Si el fichero es correcto escribimos en el.
  if (dataFile) {
    // Escribimos en el fichero "POT: "
    dataFile.print("POT: ");
    // A continuacion escribimos el valor de la variable pot y saltamos a la linea siguiente.
    dataFile.println(pot);
    dataFile.println("-----5s-----");
    // Cerramos el archivo.
    dataFile.close();
    
    // Avisamos de que se ha podido escribir correctamente.
    Serial.println("impresion correcta");
    
  // Si no pudimos escribir en el fichero avisamos por el puerto serie.
  }else{
    Serial.println("Error al escribir en valorpot.txt");
  }
  
  // Esperamos 5s para tomar la siguiente medida.
  delay(5000);
}

En la tarjeta SD nos creara un archivo llamado VALORPOT.TXT cuyo contenido tendrá el siguiente aspecto:

POT: 443
—–5s—–
POT: 478
—–5s—–
POT: 892
—–5s—–

En la próxima entrada explicare como leer datos de una SD con Arduino.

Fuentes: Arduino SD Library

2 pensamientos en “Escribir datos en una tarjeta SD con Arduino (Módulo MicroSD y Ethernet Shield)

  1. dopler

    Hola buenos dias.. pese a que no te conozco quería pedirte un favor..
    Estamos construyendo una antena de seguimiento de codigo libre para drones fpv en aeromodelismovirtual.

    Es posible modificar el codigo que arriba has expuesto.. para que lea la entrada rx (coordenadas gps) y las guarde en la tarjeta sd..?

    La idea es presionar un boton para realizar el inicio de la grabacion(se encienda un led) y y volver a presionar para terminar.. al igual que no sobre escriba el archivo anterior. En cada grabacion.. genere un archivo nuevo..

    Igualmente.. un cordial saludo

  2. Pingback: Leer datos en SD con Arduino (Módulo MicroSD y Ethernet Shield)Zygzax | Proyectos y tutoriales, electrónica y diseño 3D | Zygzax | Proyectos y tutoriales, electrónica y diseño 3D

Los comentarios están cerrados.