Obtenga entrega gratuita en todas las órdenes más de £20!

Registro de datos con Arduino y un módulo de tarjeta SD

Data Logging with Arduino and an SD Card Module

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

  1. Abre Arduino IDE.
  2. Ve a Sketch → Include Library → Manage Libraries.
  3. 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.

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Escribir un comentario