In this post we’re going to show you how to use an SD card module with Arduino to read and write files on an SD card.
For an Arduino project with the SD card module read our blog post: Arduino temperature data logger with SD card.
Introducing the SD Card module
The SD card module is specially useful for projects that require data logging.
The Arduino can create a file in an SD card to write and save data using the SD library.
There are different models from different suppliers, but they all work in a similar way, using the SPI communication protocol. The module used in this tutorial is the one shown in figure below (front and back view).
This module works with micro SD card.
Where to buy?
The SD card module is a very cheap and you can find one for approximately $1 – check prices on Maker Advisor.
The table below shows how you should wire the SD card module to your Arduino
|SD card module||Wiring to Arduino Uno||Wiring to Arduino Mega|
|VCC||3.3V or 5V (check module’s datasheet)||3.3V or 5V (check module’s datasheet)|
Note: different Arduino boards have different SPI pins. If you’re using another Arduino board, check the Arduino official documentation.
Preparing the SD card
The first step when using the SD card module with Arduino is formatting the SD card as FAT16 or FAT32. Follow the instructions below.
1) To format the SD card, insert it in your computer. Go to My Computer and right click on the SD card. Select Format as shown in figure below.
2) A new window pops up. Select FAT32, press Start to initialize the formatting process and follow the onscreen instructions.
Testing the SD card module
Insert the formatted SD card in the SD card module.
Connect the SD card module to the Arduino as shown in the circuit schematics below or check Pin Wiring in previous section.
Note: depending on the module you’re using, the pins may be in a different order.
Code – CardInfo
To make sure everything is wired correctly and the SD card is working properly, in the Arduino IDE window go to File> Examples > SD > CardInfo.
Upload the code to your Arduino board. Make sure you have the right board and COM port selected.
Open the Serial Monitor at a baud rate of 9600 and you should see your SD card information.
If everything is working properly you’ll see a similar message on the serial monitor.
Read and write to the SD card
The SD library provides useful functions for easily write in and read from the SD card.
To write and read from the SD card, first you need to include the SPI and SD libraries:
#include <SPI.h> #include <SD.h>
You also have to initialize the SD card module at the Chip Select (CS) pin – in our case, pin 4.
To open a new file in the SD card, you need to create a file object that refers to your data file. For example:
dataFile = SD.open("data.txt", FILE_WRITE);
The first parameter of this function is the name of the file, data.txt, and the FILE_WRITE ;argument enables you to read and write into the file.
This line of code creates a file called data.txt on your SD card. If the data.txt file already exists, Arduino will open the file instead of creating another one.
To write data to the currently open file, you use:
In which the dataFile is the file object created previously and the data is what you want to write in the file.
You can also use the print() or println() functions to print data into the file:
dataFile.print(data); dataFile.println(data); // followed by a new line
To read the data saved on your file:
You can only write within a file at once, so you need to close a file before proceeding to the next one. To close the data.txt file we’ve just created:
The argument of this function is the file you want to close, in this case data.txt.
For a complete sketch on how to read and write, in your Arduino IDE go to File> Examples > SD > ReadWrite.
This was just a quick introduction to the SD card module with the Arduino.
Make sure you check the following blog post for a data logging project example using the SD card module with Arduino:
In that project we save temperature readings on an SD card with time stamps using the DS18B20 temperature sensor and the RTC module.
We hope you’ve found this guide useful.
Thanks for reading