Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use SD Card module: Examples, Pinouts, and Specs

Image of SD Card module
Cirkit Designer LogoDesign with SD Card module in Cirkit Designer

Introduction

The SD Card Module is a compact and versatile component designed to interface SD cards with microcontrollers. It enables the storage and retrieval of data, making it an essential tool for projects requiring large amounts of non-volatile memory. This module is widely used in applications such as data logging, file storage, multimedia playback, and firmware updates.

Common applications and use cases:

  • Data logging for sensors in IoT projects
  • Storing configuration files or firmware
  • Multimedia storage for audio, video, or images
  • File-based communication between microcontrollers and external systems

Explore Projects Built with SD Card module

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Arduino UNO SD Card Data Logger
Image of sd card: A project utilizing SD Card module in a practical application
This circuit consists of an Arduino UNO connected to an SD card module. The Arduino provides power and ground to the SD module and interfaces with it using SPI communication through digital pins D10 (CS), D11 (MOSI), D12 (MISO), and D13 (SCK). The setup is intended for reading from or writing to an SD card using the Arduino.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino UNO Battery-Powered Data Logger with Micro SD Card Storage
Image of arduino sd: A project utilizing SD Card module in a practical application
This circuit is designed to interface an Arduino UNO with a Micro SD Card Module for data storage, powered by two 18650 Li-ion batteries through a USB plug and controlled by a rocker switch. The Arduino communicates with the SD card module via SPI protocol and is also connected to the USB plug for potential data transfer or power supply.
Cirkit Designer LogoOpen Project in Cirkit Designer
Heltec LoRa V2 with SD Card Data Logging
Image of LoRa SD: A project utilizing SD Card module in a practical application
This circuit connects an SD card module to a Heltec LoRa V2 microcontroller for data storage and retrieval. The SD module is interfaced with the microcontroller via SPI communication, utilizing the CS, SCK, MOSI, and MISO pins. Power is supplied to the SD module from the microcontroller's 5V output, and both modules share a common ground.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-C3 and Micro SD Card Module for Data Logging
Image of Esp 32 super mini with MicroSd module: A project utilizing SD Card module in a practical application
This circuit features an ESP32-C3 microcontroller interfaced with a Micro SD Card Module. The ESP32-C3 handles SPI communication with the SD card for data storage and retrieval, with specific GPIO pins assigned for MOSI, MISO, SCK, and CS signals.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with SD Card module

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of sd card: A project utilizing SD Card module in a practical application
Arduino UNO SD Card Data Logger
This circuit consists of an Arduino UNO connected to an SD card module. The Arduino provides power and ground to the SD module and interfaces with it using SPI communication through digital pins D10 (CS), D11 (MOSI), D12 (MISO), and D13 (SCK). The setup is intended for reading from or writing to an SD card using the Arduino.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of arduino sd: A project utilizing SD Card module in a practical application
Arduino UNO Battery-Powered Data Logger with Micro SD Card Storage
This circuit is designed to interface an Arduino UNO with a Micro SD Card Module for data storage, powered by two 18650 Li-ion batteries through a USB plug and controlled by a rocker switch. The Arduino communicates with the SD card module via SPI protocol and is also connected to the USB plug for potential data transfer or power supply.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of LoRa SD: A project utilizing SD Card module in a practical application
Heltec LoRa V2 with SD Card Data Logging
This circuit connects an SD card module to a Heltec LoRa V2 microcontroller for data storage and retrieval. The SD module is interfaced with the microcontroller via SPI communication, utilizing the CS, SCK, MOSI, and MISO pins. Power is supplied to the SD module from the microcontroller's 5V output, and both modules share a common ground.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Esp 32 super mini with MicroSd module: A project utilizing SD Card module in a practical application
ESP32-C3 and Micro SD Card Module for Data Logging
This circuit features an ESP32-C3 microcontroller interfaced with a Micro SD Card Module. The ESP32-C3 handles SPI communication with the SD card for data storage and retrieval, with specific GPIO pins assigned for MOSI, MISO, SCK, and CS signals.
Cirkit Designer LogoOpen Project in Cirkit Designer

Technical Specifications

  • Operating Voltage: 3.3V (logic level) with onboard voltage regulator for 5V input
  • Current Consumption: ~100mA (varies with SD card activity)
  • Supported SD Card Types: Standard SD and microSD cards (FAT16/FAT32 formatted)
  • Communication Protocol: SPI (Serial Peripheral Interface)
  • Dimensions: Typically 42mm x 24mm x 12mm (varies by manufacturer)

Pin Configuration and Descriptions

The SD Card Module typically has 6 pins. Below is the pinout and description:

Pin Name Description
1 GND Ground connection
2 VCC Power supply input (3.3V or 5V, depending on the module)
3 MISO Master In Slave Out - SPI data output from the SD card to the microcontroller
4 MOSI Master Out Slave In - SPI data input from the microcontroller to the SD card
5 SCK Serial Clock - SPI clock signal
6 CS Chip Select - Used to select the SD card module during SPI communication

Usage Instructions

How to Use the SD Card Module in a Circuit

  1. Power the Module: Connect the VCC pin to a 5V or 3.3V power source (check your module's specifications) and the GND pin to ground.
  2. Connect SPI Pins: Connect the MISO, MOSI, SCK, and CS pins to the corresponding SPI pins on your microcontroller.
  3. Insert SD Card: Ensure the SD card is formatted as FAT16 or FAT32 before inserting it into the module.
  4. Initialize the Module: Use an appropriate library (e.g., the Arduino SD library) to initialize the module and access the SD card.

Important Considerations and Best Practices

  • Voltage Levels: Ensure the module is compatible with your microcontroller's logic level (3.3V or 5V). Most modules have onboard level shifters for 5V compatibility.
  • SD Card Formatting: Always format the SD card as FAT16 or FAT32. Other formats may not be supported.
  • SPI Speed: Use a suitable SPI clock speed. High speeds may cause communication errors with some SD cards.
  • Pull-up Resistors: Some modules may require external pull-up resistors on the SPI lines for reliable communication.
  • File System Library: Use a reliable library, such as the Arduino SD library, to handle file operations.

Example Code for Arduino UNO

Below is an example of how to use the SD Card Module with an Arduino UNO:

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

// Define the Chip Select (CS) pin for the SD card module
const int chipSelect = 10;

void setup() {
  // Initialize serial communication for debugging
  Serial.begin(9600);
  while (!Serial) {
    ; // Wait for the serial port to connect (for native USB boards)
  }

  Serial.println("Initializing SD card...");

  // Initialize the SD card
  if (!SD.begin(chipSelect)) {
    Serial.println("SD card initialization failed!");
    return; // Stop if the SD card cannot be initialized
  }
  Serial.println("SD card initialized successfully.");

  // Create or open a file on the SD card
  File dataFile = SD.open("example.txt", FILE_WRITE);

  // Check if the file opened successfully
  if (dataFile) {
    dataFile.println("Hello, SD card!"); // Write data to the file
    dataFile.close(); // Close the file
    Serial.println("Data written to example.txt.");
  } else {
    Serial.println("Error opening example.txt for writing.");
  }
}

void loop() {
  // Nothing to do here
}

Troubleshooting and FAQs

Common Issues and Solutions

  1. SD Card Initialization Fails:

    • Ensure the SD card is properly inserted into the module.
    • Check that the SD card is formatted as FAT16 or FAT32.
    • Verify the CS pin is correctly defined in your code and connected to the correct pin on the microcontroller.
  2. File Not Found or Cannot Be Opened:

    • Double-check the file name and ensure it matches exactly, including case sensitivity.
    • Ensure the file exists on the SD card if you are trying to read it.
  3. Corrupted Data or Communication Errors:

    • Use shorter SPI cables to reduce noise.
    • Lower the SPI clock speed in your code.
    • Add pull-up resistors to the SPI lines if necessary.
  4. Module Not Detected:

    • Verify the power supply voltage and current are sufficient for the module and SD card.
    • Check all connections for loose wires or incorrect pin assignments.

FAQs

Q: Can I use microSD cards with this module?
A: Yes, most SD Card Modules support both standard SD and microSD cards using an adapter.

Q: What is the maximum SD card size supported?
A: This depends on the module and library used. Typically, cards up to 32GB (FAT32) are supported.

Q: Can I use multiple SD Card Modules on the same SPI bus?
A: Yes, but each module must have a unique CS pin to avoid conflicts.

Q: Why is my SD card not detected after formatting?
A: Ensure the card is formatted as FAT16 or FAT32. ExFAT and NTFS are not supported by most libraries.

By following this documentation, you can effectively integrate the SD Card Module into your projects for reliable data storage and retrieval.