El registro de datos es un aspecto crucial de muchos proyectos de IoT, monitoreo ambiental y basados en sensores. Con un Arduino y un módulo de tarjeta SD, puedes almacenar datos de sensores, marcas de tiempo y otras lecturas para análisis futuros. Esta guía te mostrará cómo conectar un módulo de tarjeta SD al Arduino, escribir y leer datos, y solucionar problemas comunes.
1. Qué necesitas
✅ Placa Arduino (Uno, Mega, Nano, etc.)
✅ Módulo de tarjeta Micro SD (basado en SPI)
✅ Tarjeta MicroSD (formateada en FAT32, se recomiendan 2GB–32GB)
✅ Cables jumper
✅ Sensores (opcional, p. ej., DHT11, BMP280, etc.)
🔹 Nota: El módulo SD se comunica con Arduino usando SPI (Serial Peripheral Interface).
2. Conexión del módulo de tarjeta SD al Arduino
| Pin del módulo de tarjeta SD | Pin Arduino Uno | Pin Arduino Mega |
|---|---|---|
| VCC | 5V | 5V |
| GND | GND | GND |
| MISO | 12 (SPI MISO) | 50 (SPI MISO) |
| MOSI | 11 (SPI MOSI) | 51 (SPI MOSI) |
| SCK | 13 (SPI SCK) | 52 (SPI SCK) |
| CS (Chip Select) | 10 (SPI CS) | 53 (SPI CS) |
3. Instalación de la biblioteca requerida
- Abre Arduino IDE.
- Ve a Sketch → Include Library → Manage Libraries.
- Busca SD e instala la SD Library by Arduino.
4. Inicializando la tarjeta SD (Prueba si el módulo SD funciona)
Usa el siguiente código de prueba básico para comprobar si el módulo SD funciona:
#include
#include
const int chipSelect = 10; // Set CS pin for SD card
void setup() {
Serial.begin(115200);
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
Serial.println("SD card is ready.");
}
void loop() {
// Nothing here
}
Qué hace este código:
✔ Inicializa el módulo SD.
✔ Imprime "SD card is ready" si se detecta.
✔ Imprime "SD card initialization failed!" si hay un error.
🔹 Resolución de problemas:
✅ Comprueba que la tarjeta SD esté formateada en FAT32.
✅ Asegura el cableado correcto (MISO, MOSI, SCK y CS).
✅ Prueba otro pin CS (p. ej., 4 en lugar de 10) y actualiza el código.
5. Escribir datos en la tarjeta SD
Este ejemplo crea un archivo (data.txt) y escribe lecturas de sensores en él.
#include
#include
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
File dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Hello, this is a test log!");
dataFile.close();
Serial.println("Data written to SD card.");
} else {
Serial.println("Failed to open file.");
}
}
void loop() {
// Nothing here
}
Qué hace este código:
✔ Crea o abre data.txt.
✔ Escribe "Hello, this is a test log!" en el archivo.
✔ Cierra el archivo después de escribir.
🔹 Funciones de manejo de archivos:
✔ SD.open("filename.txt", FILE_WRITE); → Abrir archivo para escribir.
✔ dataFile.println("Text"); → Escribir datos en el archivo.
✔ dataFile.close(); → Cerrar el archivo para guardar los datos.
6. Leer datos desde la tarjeta SD
Usa este código para leer y mostrar datos desde la tarjeta SD.
#include
#include
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
File dataFile = SD.open("data.txt");
if (dataFile) {
Serial.println("Reading file...");
while (dataFile.available()) {
Serial.write(dataFile.read()); // Print file content
}
dataFile.close();
} else {
Serial.println("Failed to open file.");
}
}
void loop() {
// Nothing here
}
Qué hace este código:
✔ Abre data.txt para lectura.
✔ Imprime el contenido del archivo en el Monitor Serial.
🔹 Consejo: Asegúrate de que el archivo exista antes de leerlo para evitar errores.
7. Registrar datos de sensores en la tarjeta SD
Este ejemplo registra datos de temperatura y humedad desde un sensor DHT11.
Componentes requeridos
✅ Sensor de temperatura y humedad DHT11
✅ Biblioteca DHT (Adafruit DHT Sensor Library)
Conexiones para el sensor DHT11
| Pin DHT11 | Pin Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| DATA | 2 |
Código: Registrar datos DHT11 en la tarjeta SD
#include
#include
#include
#define DHTPIN 2 // Pin connected to DHT sensor
#define DHTTYPE DHT11 // Define sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE);
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
dht.begin();
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
}
void loop() {
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temp) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Temperature: ");
dataFile.print(temp);
dataFile.print(" °C, Humidity: ");
dataFile.print(humidity);
dataFile.println(" %");
dataFile.close();
} else {
Serial.println("Failed to write to SD card.");
}
Serial.print("Logged: Temp = ");
Serial.print(temp);
Serial.print(" °C, Humidity = ");
Serial.println(humidity);
delay(2000); // Log every 2 seconds
}
Qué hace este código:
✔ Lee temperatura y humedad del sensor DHT11.
✔ Registra los datos en log.txt en la tarjeta SD.
✔ Imprime los valores en el Monitor Serial.
8. Consejos para resolución de problemas
Problema: ¿La tarjeta SD no se detecta?
✅ Asegúrate de que la tarjeta SD esté formateada en FAT32.
✅ Verifica nuevamente el cableado MISO, MOSI, SCK y CS.
✅ Prueba otra tarjeta SD (algunas tarjetas son incompatibles).
Problema: ¿Los datos no se guardan?
✅ Siempre cierra el archivo usando dataFile.close();.
✅ Asegúrate de que haya espacio de almacenamiento suficiente disponible en la tarjeta SD.
9. Aplicaciones prácticas
✔ Sistema de monitoreo meteorológico – Registrar temperatura, humedad y presión atmosférica.
✔ Monitoreo de energía – Registrar tensiones y corrientes a lo largo del tiempo.
✔ Seguimiento GPS – Almacenar datos de latitud y longitud desde un módulo GPS.
✔ Registro de eventos – Registrar disparos de sensores o pulsaciones de botones.
10. Conclusión
Usar un módulo de tarjeta SD con Arduino es una excelente manera de almacenar datos de sensores, registrar eventos o crear un registrador de datos portátil. Con comunicación SPI, puedes fácilmente leer y escribir archivos, lo que lo hace ideal para proyectos de IoT y automatización.
