Reading and Writing data to a microSD card using microSD card adapter with ESP32 microcontroller

Logging data to a microSD card using an SD card adapter is a common task in IoT and embedded systems projects.

Components Required

  • Microcontroller (ESP32, ESP8266, Arduino, etc.)
  • microSD Card (formatted as FAT32)
  • SD Card Adapter / Module (SPI-based)
  • Jumper Wires
  • Power Source (USB, Battery)

Pin Connections (SPI Mode)

Logging Data Using ESP32 & SD Card Module

The ESP32 supports SD cards via SPI. The SD library makes it easy to write and read files.

Install Required Libraries

Make sure you have the SD and SPI libraries installed in the Arduino IDE.

Writing data to microSD card:

code:

#include “FS.h”     // Filesystem library

#include “SD.h”     // SD Card library

#include “SPI.h”    // SPI Communication library

#define SD_CS 5 // Chip Select pin (ESP32 uses GPIO 5)

void setup() {

  Serial.begin(115200);

  if (!SD.begin(SD_CS)) {

    Serial.println(“SD Card Mount Failed!”);

    return;

  }

  Serial.println(“SD Card Initialized.”);

  // Create or open a file

  File file = SD.open(“/log.txt”, FILE_APPEND);

  if (!file) {

    Serial.println(“Failed to open file!”);

    return;

  }

  // Write data to the file

  file.println(“Temperature: 25.5°C, Humidity: 60%”);

  Serial.println(“Data written to SD card.”);

  // Close file

  file.close();

}

void loop() {

  // No action needed in loop

}

Read Data from microSD card:

code:

void readSDCard() {

  File file = SD.open(“/log.txt”);

  if (!file) {

    Serial.println(“Failed to open file!”);

    return;

  }

  Serial.println(“Reading from SD Card:”);

  while (file.available()) {

    Serial.write(file.read()); // Print file content to Serial Monitor

  }

  file.close();

}

void setup() {

  Serial.begin(115200);

  if (!SD.begin(SD_CS)) {

    Serial.println(“SD Card Mount Failed!”);

    return;

  }

  readSDCard();

}

void loop() {

}

writing data continuously:

code:

#include “FS.h”

#include “SD.h”

#include “SPI.h”

#include “DHT.h”

#define SD_CS 5 // Chip Select pin for SD Card

#define DHTPIN 4 // Pin where DHT sensor is connected

#define DHTTYPE DHT11 // DHT11 or DHT22

DHT dht(DHTPIN, DHTTYPE);

void logData(float temperature, float humidity) {

  File file = SD.open(“/sensor_log.txt”, FILE_APPEND);

  if (file) {

    file.print(“Temp: “);

    file.print(temperature);

    file.print(“C, Hum: “);

    file.print(humidity);

    file.println(“%”);

    file.close();

    Serial.println(“Data Logged.”);

  } else {

    Serial.println(“File Open Failed!”);

  }

}

void setup() {

  Serial.begin(115200);

  dht.begin();

   

  if (!SD.begin(SD_CS)) {

    Serial.println(“SD Card Initialization Failed!”);

    return;

  }

  Serial.println(“SD Card Ready.”);

}

void loop() {

  float temp = dht.readTemperature();

  float hum = dht.readHumidity();

   

  if (!isnan(temp) && !isnan(hum)) {

    logData(temp, hum);

  } else {

    Serial.println(“Failed to read from DHT sensor!”);

  }

  delay(5000); // Log every 5 seconds

}

Conclusion

Logging data to an SD card with ESP32, ESP8266, or Arduino is straightforward with the SD library. This can be useful for sensor data logging, IoT applications, and offline storage.

Leave a comment

Your email address will not be published. Required fields are marked *