Micro SD Card Tutorial

112,519

56

20

Introduction: Micro SD Card Tutorial

Description

This Micro SD Card is used for transfering data to and from a standard sd card. The pin out is directly compatible with Arduino and also can be used with other microcontrollers. It allow us to add mass storage and data logging to our project.

Features

  1. Input Voltage: 3.3V/5V
  2. With all SD SPI Pins out :MOSI, SCK, MISO and CS ,for further connection
  3. Through programming, you can read and write to the SD card using your arduino
  4. Make your SD application more easier and simple
  5. Communicate with Arduino using SPI interface
  6. Push-pop socket with card slightly over the edge of the PCB so its easy to insert and remove
  7. 4 mounting holes with 2.2mm diameter
  8. Only use 4 I/O pins on the Arduino
  9. Size: 42mm x 25mm x 5mm

Step 1: Step 1 : Material Planning

For this tutorial, the items needed to run this project are:

  1. Arduino Uno
  2. USB Cable type A to B
  3. Micro Sd Card Module
  4. Female to male jumper wire
  5. SD Card

Step 2: Step 2 : Hardware Installation

Micro SD Card Module

This module uses the standard SPI interface for communication, which involve SPI buses, MISO, MOSI, SCK, and a CS signal pin. through programming, the data can easily be read and wrote into SD Card by using the Arduino or other microcontrollers.

  • CS (chip select)
  • SCK (serial clock)
  • MOSI (master out slave in)
  • VCC (3.3V or 5V)
  • GND (ground)

Diagram above shows the simple connection between Micro SD Card Module and Arduino UNO:

  1. Connect VCC with 5V in the Arduino.
  2. Then, connect the GND of SD card to the ground of Arduino.
  3. Connect CS to pin 14
  4. Connect SCK to pin 13
  5. MOSI connect to the pin 11
  6. Lastly, connect MISO to pin 12

After completing the connection, connect the Arduino to power supply with USB cable.

Step 3: Step 3: Insert Coding

Lets try an example in the Arduino.

  1. Open the Arduino software
  2. Click 'file'
  3. Find the 'example'
  4. Click 'SD'
  5. Choose 'ReadWrite'

Step 4: Step 4 : Choose COM Port

Just click at 'Tools', then choose your port available on your PC.

Step 5: Step 5 : Upload Souce Code

Upload the source code into the Arduino and open the Serial Monitor to se the result.

Step 6: Ster 6 : Result

The following result will be displayed in the monitor. In this example, the .txt file named "test.txt" was created and the sentence "testing 1,2,3." were wrote into the .txt file. After this, the sentence "testing 1,2,3." were read back from .txt file and display on serial monitor.

3 People Made This Project!

Recommendations

  • Puzzles Speed Challenge

    Puzzles Speed Challenge
  • "Can't Touch This" Family Contest

    "Can't Touch This" Family Contest
  • CNC Contest 2020

    CNC Contest 2020

20 Discussions

0
RyuWhite
RyuWhite

Question 4 weeks ago

How to write binary data into the sd card using Arduino?

0
Krejstrup
Krejstrup

Tip 2 months ago

I'd like to take moment to clarify some things and maybe dig a little bit deeper in whats what.
In this example the Arduino Uno board is used. If you have another board please take a look at what pin setup your specific board is using.

From the text above, the SD card CS (Chip Select) is pointed out to be wired to pin 14 at the Arduino. In the figure however the yellow wire goes to pin 4. Also in the code the SD.begin() is using the pin 4 as argument. So this is a typo (well, actually it is the pin 14 on the ATMEGA328 MCU chip which is connected to pin 10 on Uno) - connect to pin 4 to get it to work with the example code.
It often directs the CS to pin 4 in different demos, i don't know why.

If you take a read in the reference of the SD [https://www.arduino.cc/en/reference/SD] it tells you that the Arduino pin 10 as a standard pin for CS [ SD.begin(CSPIN) ] and in the case that you decide to use standard pin (10) you will not need to specify the pin as an argument, and makes this setup to use the Arduino pins 10 through 13. This is useful as to keeping the wires together. Quite often if you would like to use LCD, or what ever, the pin 4 is then used by that or other setups.

This specific SD Card breakout is using a 5v to 3.3V voltage regulator (U) so you don't need to worry about burning/destroying the card from a standard 5V Arduino system. Also the other U1 marked chip on the PCB (Printed Circuit Board) is a level converter that keeps the 5V on one side and 3.3V on the other side. All the interface memory logic's is taken care of by the memory card. So if you would have a pure 3.3V Arduino system those chip would not be really needed, and you could look for a less complex SD card reader. But this break out card works in both 5V and 3.3V setups, so you wouldn't need more than one break out if you are trying both type of Arduino boards.

For further details see also: https://www.arduino.cc/en/Reference/SDCardNotes

I hope that you will have much joy of the SD card storing and reading.

And one final thing - allways(!) format all your SD cards with "SD Card Formatter" from SD Assosiation. [https://www.sdcard.org/downloads/formatter/]

0
lka31
lka31

Question 9 months ago

Hi! Can I use different pin connections from the tutorial as long as they are similar? i.e. can I plug in MOSI into the analog PWM pin #6 instead of the #11 that this tutorial indicates? I am already using #11 for another sensor.

0
Mand05
Mand05

Question 9 months ago

MY CODE IS SHOWING INITIALIZATION FAILED , WHEN I TRIED THE CODE IN THE EXAMPLES. I AM USING THE ARDUINO MEGA2560. PLEASE HELP ME WITH IT ON URGENT BASIS. THANKS

1
abdulkadirgenc
abdulkadirgenc

1 year ago

I keep seeing the error "SD card initialization failed!". I checked the connections multiple times, I am facing the same error though.
Can you please help me!
Thanks in advance...

0
mhsyaefudin8
mhsyaefudin8

1 year ago

may i ask u some problem of my program, it says "error opening text.txt", can anyone else know what happened?

Untitled.png
0
Shilen5063
Shilen5063

Question 1 year ago

hi , where i can buy this parts.

0
soceraso
soceraso

2 years ago

I'm getting the "initialization failed!" error and wondering what's not correct. Can anyone explain this code?

if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}

0
soceraso
soceraso

Reply 2 years ago

Got it! For an Arduino Mega, we want to use pins 50, 51, 52, and 53 for MISO, MOSI, SCK, and CS, respectively.

0
VaishaliS17
VaishaliS17

Reply 2 years ago

i'm using arduino UNO still facing same error

0
KunalB33
KunalB33

Reply 1 year ago

Were you able to figure out what's wrong?
I'm having the same error.

0
soceraso
soceraso

Reply 1 year ago

double check all your connections to the SD reader. basically the error message means that your arduino couldnt communicate with the SD reader properly. maybe the SD reader isnt getting enough power. maybe its not connected to the correct pins on the arduino

0
KwstasT
KwstasT

Question 1 year ago

hello, is it possible to connect sd card reader and a nfc reader in the same arduino nano ?
for example :(Nano V3.0 ATmega328P CH340G 5V 16M micro-controller Arduino
NXP PN532 NFC RFID Module V3
Micro SD TF Memory Card Reader Module with SPI interface For Arduino PI Portable)

0
MathB3
MathB3

2 years ago

Nice,

I notice CS is to be plugged in pin4 as drawn. But you wrote 'Connect CS to pin 14'

Best regards

0
AldrinS10
AldrinS10

Reply 1 year ago

that might be 4, can't find pin 14 on my uno:-D

0
LucasB190
LucasB190

Question 2 years ago

Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"

Sketch uses 11132 bytes (34%) of program storage space. Maximum is 32256 bytes.

Global variables use 1026 bytes (50%) of dynamic memory, leaving 1022 bytes for local variables. Maximum is 2048 bytes.

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x20

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x30

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x20

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x30

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x20

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x30

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x20

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x30

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x20

An error occurred while uploading the sketch

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

0
deepmad
deepmad

Answer 1 year ago

update board drivers . then re connect the board. select the correct port and upload your file

0
VaishaliS17
VaishaliS17

Question 2 years ago on Step 6

hi..
I am using the same process..
but it shows "sd fail" or "fail to initialize sd card"
how can i resolve this?

1
EricG233
EricG233

Answer 2 years ago

Try using 5V instead of 3.3V, that solved it for me.

Also, format the SD card to FAT or FAT32 before using it with the module.