Guardando los datos a una tarjeta MicroSD en el Autonomo

En la última sesión fuimos capaces de combinar los datos del sensor de temperatura con los datos del Reloj de Tiempo Real, el archivo combinando ambos procesos debería ser algo similar a éste:  RTC + Temperature 

Copiamos y pegamos todo el código de ese archivo en un programa del arduino, para ello, copiamos, vamos a Arduino >> Nuevo borramos todo lo que aparece ahí y pegamos. Subimos el programa al Autonomo y abrimos el Monitor Serie. Deberíamos ver algo así:

captura-de-pantalla-de-2017-02-03-093745

La sección del loop dentro del código es algo complicada, vamos a simplificarla un poco haciendo que los datos se guarden dentro de una cadena de caracteres. La parte más complicadas es convertir desde el valor “float” de temperatura a una cadena de caracteres. Para ello usaremos la función dtostring: en la parte de arriba del código pegaremos la siguiente línea para cargar el código de dicha función:

#include <avr/dtostrf.h>

Luego cambiaremos el código dentro del loop a lo siguiente:

// make a string for assembling the data to log:
 char dataString[100];

// Read temperature and convert from float to int
 sensors.requestTemperatures(); // Send the command to get temperatures
 float temp = sensors.getTempCByIndex(0);
 char tempStr[6];
 dtostrf(temp,2,2,tempStr);

// Read date - time
 int day = rtc.getDay() ;
 int month = rtc.getMonth() ;
 int year = rtc.getYear() ;
 int hour = rtc.getHours() ;
 int minute = rtc.getMinutes() ;
 int second = rtc.getSeconds() ;
 int battery = analogRead(BAT_VOLT); //read battery

 sprintf(dataString,"%u/%u/%u %u:%u:%u, %u, %s",day,month,year,hour,minute,second,battery,tempStr);
 SerialUSB.println(dataString);

Podemos cargar éste nuevo código y ver que se está imprimiendo una cadena de caracteres con la información que queremos guardar. Usamos éste formato de valores separados por comas ya que luego será más fácil leer los datos en Excel.


El siguiente paso será usar el lector de tarjetas MicroSD para guardar los datos en un archivo en vez de enviar los datos por el puerto SerialUSB al ordenador. Para ello vamos a usar la librería SD que ya viene instalada por defecto con el Arduino. Solo tenemos que ir a Archivo >>> Ejemplos >>> SD >> DataLogger éste programa es un ejemplo de como leer datos desde tres entrada analógicas y guardarlos en la tarjeta SD en un fichero llamado “datalog.txt”

Lo primero que haremos será introducir la tarjeta microSD en la ranura del Autonomo, la colocamos como en la foto y presionamos hasta que quede encajadaimg_20170124_123155

Una vez hecho ésto tenemos que modificar todas las entradas “Serial.” por “SerialUSB.”, podeis usar Editar >>> Buscar y reemplazar todas.

Tambien es necesario cambiar el valor que pone en la línea:

if (!SD.begin(chipSelect)) {

a

if (!SD.begin(CS_SD)) 

una vez hecho esto ya podemos subir el archivo Datalogger al autonomo y ver si funciona. Abrimos el Monitor Serie (en el menú Herramientas).

Si desconectáramos el Autonomo y leyéramos la tarjeta en el ordenador tendríamos un archivos similar a éste: datalog

Como vemos está registrando los datos de tres “pines” analógicos, pero lo que queremos nosotros es que registre los datos de hora y temperatura. Para ello tendremos que combinar éste programa con el anterior juntando las secciones de cabecera, setup y loop…

Una vez que comprobamos que funciona ya podemos dejar programado nuestro dispositivo con una placa solar y una bateria. Como vamos a desconectar el Autonomodel PC tenemos que quitar todas las líneas que hacen referencia al SerialUSB, para ello podemos buscar y reemplazar SerialUSB por //SerialUSB, al estar con las dos “//” esa línea está comentada y ya no se ejecutará.

Ya tenemos nuestro archivo para registro de temperatura listo.

Guardando los datos a una tarjeta MicroSD en el Autonomo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *