Guía: ¿cómo usar tarjetas de memoria en Arduino?

03/04/2019 Desactivado Por tarjetasdememoria.info
Guía: ¿cómo usar tarjetas de memoria en Arduino?

En este artículo “Guía del módulo para tarjetas de Arduino” voy a mostrarte cómo integrar un módulo de tarjetas SD y MicroSD en Arduino para leer y escribir archivos en la tarjeta de memoria.

Lector de tarjetas de memoria para Arduino

El módulo de tarjeta SD es especialmente útil para proyectos que requieren el registro de datos. El Arduino puede crear un archivo en una tarjeta SD para escribir y guardar datos usando la librería SD Arduino.

Existen varios modelos de diferentes fabricantes, pero todos ellos trabajan de forma similar. La gran mayoría utilizan el protocolo de comunicación SPI. El módulo utilizado en este tutorial es el que se muestra en la figura siguiente. Este módulo funciona con tarjeta micro SD.

modulo-tarjetas-memoria-arduino-microsd

Vista frontal y posterior del módulo Micro SD para Arduino

✅ ¿Dónde comprar el módulo SD?

Si necesitas comprar el módulo de la tarjeta Micro SD para Arduino, tranquilo, ¡no tendrás que pedir una hipoteca!. Es un módulo sencillo y barato y lo puedes encontrar desde 4,39 € aquí. Si optas por instalar el módulo para tarjetas SD, el precio es de 8,90 € y lo puedes comprar aquí.

Esquema del cableado del módulo SD Arduino

La siguiente tabla muestra cómo debes conectar el módulo de la tarjeta SD a tu Arduino:

Módulo de tarjeta SD Cableado a Arduino UnoCableado a Arduino Mega
VCC3.3V o 5V (ver hoja de datos del módulo)3.3V o 5V (ver hoja de datos del módulo)
CS453
MOSI1151
CLK1352
MISO1250
GNDGNDGND

 

⚠ Algunas placas de Arduino tienen diferentes pines SPI. Si estás usando otra placa Arduino distinta a las de la tabla, antes de conectar el módulo consulta la documentación oficial de Arduino

esquema-conexion-modulo-tarjetas-arduino

Esquema de conexión del módulo de tarjetas Micro SD de Arduino

Cómo preparar la tarjeta SD para usar con Arduino

El primer paso antes de usar el módulo de tarjeta SD con Arduino es formatear la tarjeta SD como FAT16 o FAT32. Seguro que estás cansado de formatear tarjetas de memoria, pero por si acaso te indico como hacerlo:

  1. Para formatear la tarjeta SD en Windows, introdúcela en el ordenador. Abre Mi PC y haz clic con el botón derecho del ratón en la unidad de la tarjeta SD. Selecciona Formato como se muestra en la siguiente captura:formatear-tarjeta-sd-1
  2. Aparecerá una nueva ventana. Selecciona FAT32, pulsa Iniciar para iniciar el proceso de formateoy sigue las instrucciones en pantalla. formatear-tarjeta-sd-2

Probando el módulo SD

Vamos a probar que todo funciona. Inserta la tarjeta SD formateada en el módulo de tarjeta SD de Arduino. Conecta el módulo de la tarjeta SD al Arduino como te muestro en los esquemas del circuito de más arriba o comprueba el cableado de las clavijas en la sección anterior.

⚠ Recuerda, dependiendo del módulo que utilices, los pines pueden estar en un orden diferente

¡Producto en Oferta!
ELEGOO Conjunto Medio de Iniciación Compatible con Arduino IDE con Tutorial en Español y...
396 Opiniones
ELEGOO Conjunto Medio de Iniciación Compatible con Arduino IDE con Tutorial en Español y...
  • Tutorial español disponible--Incluye una guía en PDF (con mas de 22 lecciones) una lista clara en un bonito empaquetado. También puede descargar los...
  • La manera mas económica de iniciarse en la programaciónpara principiantes.
  • El modulo LCD1602 incluye conector (no será necesario que lo suelde).
  • Este conjunto a sido actualizado con un modulo de fuente de alimentación a demás de con una batería de 9V.
  • La placa controladora ELEGOO UNO R3 es de alta calidad y compatible con Arduino IDE.

Code – CardInfo

Para asegurarte de que todo está conectado correctamente y que la tarjeta SD funciona bien, en la ventana del IDE de Arduino ve a Archivo> Ejemplos > SD > CardInfo.

  1. Sube el código a tu placa Arduino. Asegúrate de que has seleccionado la placa y el puerto COM correcto.
  2. Abre el Serial Monitor a una velocidad de 9600 baudios y verás la información de tu tarjeta SD.
  3. Si todo funciona correctamente, verás un mensaje similar en el monitor serie.

card-info-arduino-sd-1

Leer y escribir en la tarjeta SD

La biblioteca SD de Arduino proporciona funciones útiles para escribir y leer fácilmente desde la tarjeta SD.

Para escribir y leer de la tarjeta SD, primero necesitas incluir las bibliotecas SPI y SD:

  #include <SPI.h>

  #include <SD.h>

También deberás inicializar el módulo de la tarjeta SD en la clavija Chip Select (CS) – en mi caso, la clavija 4.

  SD.begin(4);

Para abrir un nuevo archivo en la tarjeta SD, debe crear un objeto de archivo que haga referencia al archivo de datos. Por ejemplo:

  dataFile = SD.open("data.txt", FILE_WRITE);

El primer parámetro de esta función es el nombre del archivo, data.txt, y el argumento FILE_WRITE permite leer y escribir en el archivo.

Esta línea de código crea un archivo llamado data.txt en tu tarjeta SD. Si el archivo data.txt ya existe, Arduino abrirá el archivo en lugar de crear otro.

Para escribir datos en el archivo actualmente abierto, utiliza:

  dataFile.write(data);

En el cual el dataFile es el objeto de archivo creado previamente y los datos es lo que se quiere escribir en el archivo.

También puedes utilizar las funciones print() o println() para imprimir datos en el archivo:

  dataFile.print(data);

  dataFile.println(data); // seguido de una nueva línea

Para leer los datos guardados en el archivo:

  dataFile.read();

Sólo se puede escribir dentro de un archivo a la vez, por lo que es necesario cerrar un archivo antes de proceder con el siguiente. Para cerrar el archivo data.txt que acabamos de crear:

  SD.close("data.txt");

El argumento de esta función es el archivo que deseamos cerrar, en este caso data.txt.

Para un boceto completo de cómo leer y escribir, en tu IDE de Arduino ve a Archivo> Ejemplos > SD > Lectura y escritura.

readwriteexample_arduino-ide-sd-tarjeta-de-memoria

🥇 Tarjetas Micro SD de 16 GB para Arduino

La más recomendada
SanDisk Ultra - Tarjeta de memoria microSDHC de 16 GB con adaptador SD, velocidad de...
La más vendida
Kingston SDCS/16GB Tarjeta de Memoria Sd 1, 16 gb, Negro
Toshiba Exceria M302 - Tarjeta de memoria (MicroSDHC, 16 GB, UHS-I, Class 10), color...
Nombre y descripción
SanDisk Ultra - Tarjeta de memoria microSDHC de 16 GB con adaptador SD, velocidad de...
Kingston SDCS/16GB Tarjeta de Memoria Sd 1, 16 gb, Negro
Toshiba Exceria M302 - Tarjeta de memoria (MicroSDHC, 16 GB, UHS-I, Class 10), color...
Valoraciones de los clientes
La más recomendada
SanDisk Ultra - Tarjeta de memoria microSDHC de 16 GB con adaptador SD, velocidad de...
Nombre y descripción
SanDisk Ultra - Tarjeta de memoria microSDHC de 16 GB con adaptador SD, velocidad de...
Valoraciones de los clientes
Comentarios
La más vendida
Kingston SDCS/16GB Tarjeta de Memoria Sd 1, 16 gb, Negro
Nombre y descripción
Kingston SDCS/16GB Tarjeta de Memoria Sd 1, 16 gb, Negro
Valoraciones de los clientes
Comentarios
Toshiba Exceria M302 - Tarjeta de memoria (MicroSDHC, 16 GB, UHS-I, Class 10), color...
Nombre y descripción
Toshiba Exceria M302 - Tarjeta de memoria (MicroSDHC, 16 GB, UHS-I, Class 10), color...
Valoraciones de los clientes
Comentarios

🥇 Tarjetas Micro SD de 32 GB para Arduino

La más recomendada
SanDisk Ultra - Tarjeta de memoria microSDHC de 32 GB con adaptador SD, velocidad de...
La más vendida
Samsung EVO - Tarjeta de memoria microSD de 32 GB (MicroSDXC EVO, 32 GB, MicroSDXC, Clase...
SanDisk Extreme - Tarjeta de memoria 32GB microSDHC para móvil, tablets y cámaras MIL +...
Toshiba Exceria M302-EA - Tarjeta de memoria (MicroSDHC, 32 GB, UHS-I, Class 10), color...
Nombre y descripción
SanDisk Ultra - Tarjeta de memoria microSDHC de 32 GB con adaptador SD, velocidad de...
Samsung EVO - Tarjeta de memoria microSD de 32 GB (MicroSDXC EVO, 32 GB, MicroSDXC, Clase...
SanDisk Extreme - Tarjeta de memoria 32GB microSDHC para móvil, tablets y cámaras MIL +...
Toshiba Exceria M302-EA - Tarjeta de memoria (MicroSDHC, 32 GB, UHS-I, Class 10), color...
-
-
-
-
Valoraciones de los usuarios
Precio
desde 5,84 €
desde 9,99 €
desde 12,95 €
9,50 €
La más recomendada
SanDisk Ultra - Tarjeta de memoria microSDHC de 32 GB con adaptador SD, velocidad de...
Nombre y descripción
SanDisk Ultra - Tarjeta de memoria microSDHC de 32 GB con adaptador SD, velocidad de...
-
Valoraciones de los usuarios
Comentarios
Precio
desde 5,84 €
La más vendida
Samsung EVO - Tarjeta de memoria microSD de 32 GB (MicroSDXC EVO, 32 GB, MicroSDXC, Clase...
Nombre y descripción
Samsung EVO - Tarjeta de memoria microSD de 32 GB (MicroSDXC EVO, 32 GB, MicroSDXC, Clase...
-
Valoraciones de los usuarios
Comentarios
Precio
desde 9,99 €
SanDisk Extreme - Tarjeta de memoria 32GB microSDHC para móvil, tablets y cámaras MIL +...
Nombre y descripción
SanDisk Extreme - Tarjeta de memoria 32GB microSDHC para móvil, tablets y cámaras MIL +...
-
Valoraciones de los usuarios
Comentarios
Precio
desde 12,95 €
Toshiba Exceria M302-EA - Tarjeta de memoria (MicroSDHC, 32 GB, UHS-I, Class 10), color...
Nombre y descripción
Toshiba Exceria M302-EA - Tarjeta de memoria (MicroSDHC, 32 GB, UHS-I, Class 10), color...
-
Valoraciones de los usuarios
Comentarios
Precio
9,50 €

Librería SD de Arduino

Para poder usar la librería en nuestro Sketch es necesario incluir a la librería SD al inicio del código:

  #include <SD.h>

Funciones básicas de la librería SD

A continuación explicamos las funciones principales de la librería SD, el cual es un resumen de la referencia proporcionada en la página oficial de Arduino: arduino.cc/en/Reference/SD

SD.begin(cspin)

Inicializa la biblioteca SD y la tarjeta, como parámetro se le indica el pin CS al que está conectado el modulo, si no se especifica cspin , se usa el valor por defecto del CS por hardware. Los demás pines deben estar conectados al SPI por hardware del Arduino.

SD.exists(filename)

Comprueba si existe el archivo especificadofilename es el nombre del archivo y/o directorio en la tarjeta SD si este existe la función nos devuelve un true, de lo contrario devuelve false.

SD.mkdir(directory)

Crea el directorio especificado, si los subdirectorios no existen, también se crearan. Por ejemplo: SD.mkdir(“Arduino/proyectoSD/archivos), crea la carpeta “archivos” y si las carpetas Arduino y proyectoSD no existen, entonces también se crearan. La función retorna true si la creación del directorio fue exitosa de lo contrario nos retorna un false.

SD.remove(filename)

Elimina el archivo (filename) de la tarjeta SD, se debe de incluir el directorio. Solo elimina el archivo más no el directorio. Devuelve true si logra eliminar el archivo de lo contrario nos devuelve un false.

SD.rmdir(dirname)

Eliminar el directorio (dirname) de la tarjeta SD. El directorio debe estar vacío. Devuelve true si la eliminación del directorio tuvo éxito o false en caso contrario.

SD.open(filepath, mode)

Abre el archivo especificado y se debe de incluir el directorio si el archivo está en carpetas. Si el archivo no existe, se creara un archivo con el nombre especificado, pero no será posible crear el directorio si este no existe. Se puede abrir un archivo como solo lectura (si mode es FILE_READ) o como lectura y escritura (si mode es FILE_WRITE), el modo por defecto en caso no se especifique es FILE_READ.

Ésta función nos retorna un objeto tipo FILE, el cual es necesario declararlo antes como una variable. Por ejemplo:

  File myFile;
  myFile = SD.open("archivo.txt", FILE_WRITE);

Funciones de la clase File:

file.available()

Compruebe si hay bytes disponibles para leer en el archivo y devuelve el número de bytes disponibles.

file.read()

Lee un byte de la variable File (archivo abierto anteriormente con SD.open())

file.write(data)

Escribe un byte en el archivo. El archivo debe estar abierto en modo lectura y escritura. Usando file.write(buf, len) se puede escribir un array de byte (buf) pero se debe especificar el tamaño (len).

file.print(data)

Esta función tiene las mismas características que un Serial.print(); data puede ser una variable o texto, el cual será enviado como caracteres. Si queremos agregar al final un salto o nueva línea se usa file.println(data)

file.size()

Devuelve el tamaño en bytes del archivo

file.position()

Devuelve la posición actual en donde se leerá o escribirá el siguiente byte.

file.seek(pos)

Nos ubicamos en una posición específica en el archivo. Pos debe ser un número entre 0 y el tamaño en bytes del archivo

file.close()

Cerramos el archivo y guardamos en este momento los datos en la SD, pudiendo extraer de forma segura nuestra SD.


¡Espero que esta pequeña guía de introducción al uso de las tarjetas de memoria en Arduino te haya sido útil!