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.
Contenido del artículo
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.
✅ ¿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 Precio no disponible aquí. Si optas por instalar el módulo para tarjetas SD, el precio es de Precio no disponible y lo puedes comprar aquí.
- Lector de tarjetas Micro SD para Arduino Uno Nano Mega Raspberry Pi
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 Uno | Cableado a Arduino Mega |
VCC | 3.3V o 5V (ver hoja de datos del módulo) | 3.3V o 5V (ver hoja de datos del módulo) |
CS | 4 | 53 |
MOSI | 11 | 51 |
CLK | 13 | 52 |
MISO | 12 | 50 |
GND | GND | GND |
⚠ 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
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:
- 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:
- Aparecerá una nueva ventana. Selecciona FAT32, pulsa Iniciar para iniciar el proceso de formateoy sigue las instrucciones en pantalla.
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
- 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 mismos tutoriales en línea desde nuestro sitio web.
- La manera mas económica de iniciarse en la programaciónpara principiantes.
- El modulo 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.
- Sube el código a tu placa Arduino. Asegúrate de que has seleccionado la placa y el puerto COM correcto.
- Abre el Serial Monitor a una velocidad de 9600 baudios y verás la información de tu tarjeta SD.
- Si todo funciona correctamente, verás un mensaje similar en el monitor serie.
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.
🥇 Tarjetas Micro SD de 16 GB para Arduino
Invalid table id.🥇 Tarjetas Micro SD de 32 GB para Arduino
Invalid table id.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 especificado, filename 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! y si tienes alguna duda puedes dejármela en los comentarios.
* Los precios y la disponibilidad de los productos provienen de la API de Amazon y pueden ser distintos a los publicados.