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 IoT, monitoreo ambiental y proyectos basados ​​en sensores. Con un Arduino y un módulo de tarjeta SD, puede Datos del sensor de almacenamiento, marcas de tiempo y otras lecturas Para el análisis futuro. Esta guía le mostrará cómo Conecte un módulo de tarjeta SD a Arduino, escriba y lee datos, y solucione problemas comunes.


1. Lo que necesitas

Arduino tablero (Uno, mega, nano, etc.)
Módulo de tarjeta Micro SD (basado en SPI)
Tarjeta microSD (Fat32 formateada, 2GB - 32 GB recomendada)
Cables de jersey
Sensores (opcional, por ejemplo, DHT11, BMP280, etc.)

🔹 Nota: El módulo SD se comunica con Arduino usando SPI (interfaz periférica en serie).


2. Cableado el módulo de tarjeta SD a Arduino

Pin de módulo de tarjeta SD Arduino uno pin Arduino mega pin
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 (selección de chip) 10 (SPI CS) 53 (SPI CS)

3. Instalación de la biblioteca requerida

  1. Abierto Arduino IDE.
  2. Ir a Sketch → incluir biblioteca → administrar bibliotecas.
  3. Buscar DAKOTA DEL SUR e instalar el Biblioteca SD de Arduino.

4. Inicializando la tarjeta SD (prueba si funciona el módulo SD)

Use lo siguiente Código de prueba básico Para verificar si el módulo SD está funcionando:

#include <SPI.h>
#include <SD.h>

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
}

Lo que hace este código:

✔ Inicializa el Módulo SD.
✔ Huellas dactilares "La tarjeta SD está lista" si se detecta.
✔ Huellas dactilares "¡Falló la inicialización de la tarjeta SD!" Si hay un error.

🔹 Solución de problemas:
✅ Verifique que la tarjeta SD sea Fat32 formateado.
✅ Asegurar Cableado correcto (Miso, Mosi, SCK y CS).
✅ Probar otro Pin CS (por ejemplo, 4 en lugar de 10) y actualizar el código.


5. Escribir datos a la tarjeta SD

Este ejemplo crea un archivo (data.txt) y le escribe lecturas del sensor.

#include <SPI.h>
#include <SD.h>

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
}

Lo que hace este código:

✔ Crea u abre data.txt.
✔ Escritura "¡Hola, este es un registro de pruebas!" al 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(); → Cierre el archivo para guardar datos.


6. Lectura de datos de la tarjeta SD

Use este código para Leer y mostrar datos de la tarjeta SD.

#include <SPI.h>
#include <SD.h>

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
}

Lo que hace este código:

✔ Abertura data.txt para leer.
✔ Imprime el contenido del archivo a Monitor en serie.

🔹 Consejo: Asegúrese de que el archivo existe antes de leer para evitar errores.


7. Datos del sensor de registro a la tarjeta SD

Este ejemplo registra Datos de temperatura y humedad de un sensor DHT11.

Componentes requeridos

Sensor de temperatura y humedad DHT11
Biblioteca DHT (Biblioteca de sensores DHT Adafruit)

Cableado para el sensor DHT11

PIN DHT11 Alfiler de arduino
VCC 5V
Gnd Gnd
DATOS 2

Código: Registro de datos DHT11 a la tarjeta SD

#include <SPI.h>
#include <SD.h>
#include <DHT.h>

#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
}

Lo que hace este código:

✔ Lectura Temperatura y humedad desde Sensor DHT11.
✔ Registra los datos en log.txt en la tarjeta SD.
✔ Imprime los valores para Monitor en serie.


8. Consejos de solución de problemas

Problema: Tarjeta SD no detectada?
✅ Asegúrese de que la tarjeta SD sea Fat32 formateado.
✅ Verificar MISO, MOSI, SCK y CS CS.
✅ Intentar una tarjeta SD diferente (Algunas tarjetas son incompatibles).

Problema: ¿Los datos no guardan?
✅ Siempre Cierre el archivo usando dataFile.close();.
✅ Asegurar suficiente espacio de almacenamiento está disponible en la tarjeta SD.


9. Aplicaciones prácticas

Sistema de monitoreo del clima - Temperatura de registro, humedad y presión del aire.
Monitoreo de energía - Registro voltaje y corriente lecturas con el tiempo.
Seguimiento de GPS - Almacenar latitud y longitud Datos de un módulo GPS.
Registro de eventos - Grabar disparadores del sensor o presionar el botón.


10. Conclusión

Usando un Módulo de tarjeta SD con Arduino es una excelente manera de almacenar datos del sensor, registrar eventos o crear un registrador de datos portátil. Con Comunicación SPI, puedes fácilmente Leer y escribir archivos, haciéndolo ideal para Proyectos de IoT y automatización.

Escribir un comentario

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.