Arduino

Guardado automático en SD con Arduino.

¿Te gustaría saber como guardar datos en tu tarjeta SD automáticamente con Arduino? 

En este post se va a explicar como hacer un guardado automático pero con un módulo SD o micro SD, ya se explicó como hacer esto mismo pero con la memoria EEPROM de Arduino.

Y bien, ¿Qué se necesita para hacer este proyecto?

  • Pila RTC DS1307 Comprar en Amazon (Este  nos mantendrá nuestro Arduino en tiempo real)
  • Sensor Comprar en Amazon ( En este caso es un sensor de temperatura DS18B20 Dallas)
  • Placa Arduino Comprar en Amazon (En este caso Arduino Uno) 
  • Módulo SD o micro SD Comprar en Amazon (La función de este será, la de almacenar los datos cada cierto tiempo automáticamente).

 

Pero, ¿Qué es exactamente lo que hace nuestro código?

Bien, la función del código que hay a continuación, es la de realizar un guardado automático tanto a las 12:00 como a las 18:00.

Cuando llegue una de estas dos horas definidas, guardará automáticamente los datos que está recogiendo en ese mismo momento el sensor de temperatura y lo almacenará en la tarjeta SD que tengamos insertada en el módulo SD o micro SD, el archivo que creará será nombrado como «datos.txt» (este se puede modificar).

Si hemos borrado el archivo «datos.txt» de la memoria SD, no hay ningún problema, ya que, cuando llegue la siguiente hora volverá a crear uno con el mismo nombre.

Por lo tanto, el código es el siguiente:

 

#include <OneWire.h> 
#include <DallasTemperature.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <SPI.h>
#include <SD.h>

OneWire ourWire(2);
DallasTemperature sensors(&ourWire);

//Ahora empezamos a declarar las variables:
const int chipSelect = 4; // En el pin 4 de nuestro Arduino se conectará el módulo SD.
bool escritura = 0; //Nos ayudará a que no hayan varias grabaciones en un mismo segundo.
 
void setup ()
  {
    pinMode(chipSelect, OUTPUT); //Indicamos que el pin del modulo SD es de salida.
   
    sensors.begin();//Inicia los sensores
    sensors.requestTemperatures();
    SD.begin(chipSelect); //Inicia el módulo SD
   
  }

void loop ()
   {       
     
    tmElements_t tm;
    if (RTC.read(tm)) {} //Iniciamos la pila DS1307 para que nos controle la hora que es.
 
 
  /*
   * En primer lugar hacemos cuatro comparaciones de modo que si se cumplen entrarán dentro de
   * nuestro if.
   * Por lo tanto, sí son las 12:00:00 y escritura es igual a 0 (Escritura será igual a 0 porque 
   * está definida al inicio del sketch). De esta manera hará lo que hay dentro del if que explicaré 
   * a continuación.
   */
 
    
  if ((tm.Hour==12) && (tm.Minute==0) && (tm.Second==0) && (escritura==0))
 { 
  
        /*
         * Lo que se muestra a continuación es el método de creación de archivo para el módulo,
         * si por lo contrario ya está creado lo que hará será ir escribiendo dentro de este,
         * escribiendo en él lo que aparacece a continuación:
         */
    
      File dataFile = SD.open("datos.txt", FILE_WRITE); //Si no existe el archivo "datos.txt" lo creará, y si existe, escribe dentro de él.
        
        if (dataFile) //Por lo tanto escribirá todo esto:
        {
          dataFile.print("Dia de la grabacion");dataFile.print(","); dataFile.print(tm.Day); dataFile.print("/"); dataFile.print(tm.Month);
          dataFile.print("/"); dataFile.print(tmYearToCalendar(tm.Year));  dataFile.print(",");  dataFile.print("Hora de la grabacion:");
          dataFile.print(tm.Hour); dataFile.print(":"); dataFile.print(tm.Minute);dataFile.print(":"); dataFile.print(tm.Second);
          dataFile.print(","); dataFile.print("Temperatura:");dataFile.print(sensors.getTempCByIndex(0)); dataFile.println("C");dataFile.close();
          escritura=1; //Ahora lo pondremos a 1 para que no haga varias grabaciones en el mismo segundo.
        } 
    
 }
 
   if ((tm.Hour==12) && (tm.Minute==1) && (tm.Second==0))
    { 
     escritura=0; // Cuando pase un minuto pondremos escritura a 0 para que esté preparado para la siguiente grabación.
    }

   
  if ((tm.Hour==18) && (tm.Minute==0) && (tm.Second==0) && (escritura==0))
 { 
  
        /*
         * Lo que se muestra a continuación es el método de creación de archivo para el módulo,
         * si por lo contrario ya está creado lo que hará será ir escribiendo dentro de este,
         * escribiendo en él lo que aparacece a continuación:
         */
    
      File dataFile = SD.open("datos.txt", FILE_WRITE);  //Si no existe lo crea, y si existe, escribe dentro de él.
        
        if (dataFile)
        {
          dataFile.print("Dia de la grabacion");dataFile.print(","); dataFile.print(tm.Day); dataFile.print("/"); dataFile.print(tm.Month);
          dataFile.print("/"); dataFile.print(tmYearToCalendar(tm.Year));  dataFile.print(",");  dataFile.print("Hora de la grabacion:");
          dataFile.print(tm.Hour); dataFile.print(":"); dataFile.print(tm.Minute);dataFile.print(":"); dataFile.print(tm.Second);
          dataFile.print(","); dataFile.print("Temperatura:");dataFile.print(sensors.getTempCByIndex(0)); dataFile.println("C");dataFile.close();
          escritura=1; //Ahora lo pondremos a 1 para que no haga varias grabaciones en el mismo segundo.
        } 
        
 

 }
 
   if ((tm.Hour==18) && (tm.Minute==1) && (tm.Second==0))
    { 
     escritura=0; // Cuando pase un minuto pondremos escritura a 0 para que esté preparado para la siguiente grabación.
    }
    
   }

Para terminar este artículo me gustaría adjuntar un esquema de conexiones por si os sirve de ayuda, y es el siguiente:

Los comentarios de Disqus están cargando....
Share
Publicado por
José Alejandro

Posts recientes

Spotify Por Fin Lanza la Reproducción en Formato FLAC: La Revolución del Audio que Estabas Esperando

La espera ha terminado. Spotify acaba de anunciar la llegada del formato FLAC a su…

ago 11 meses

OnePlus 15: El Salto Generacional que Revoluciona la Gama Alta con Snapdragon 8 Elite Gen 5

El OnePlus 15 se posiciona como uno de los lanzamientos más importantes de la marca…

ago 12 meses

Spotify bloquea aplicaciones no oficiales y los usuarios buscan alternativas

Spotify, la plataforma de streaming de música más popular a nivel mundial, ha decidido tomar…

ago 2 años

MotoTag: La Solución de Motorola para Mantener tus Pertenencias Siempre Localizadas

En un mundo donde perder nuestras pertenencias es más común de lo que quisiéramos, tener…

ago 2 años

Evitar el bloqueo de Telegram en España

Para los seguidores de Telegram, esta semana concluye con serios contratiempos. Según reportes de Telecinco,…

ago 2 años

Ryujinx: La alternativa a Yuzu para jugar juegos de Nintendo Switch en tu PC

Yuzu para Switch y Citra para 3DS, tras demandas de Nintendo por facilitar la piratería.…

ago 3 años