0% found this document useful (0 votes)
77 views

SD Card Reader Module With Arduino Tutorial

This document provides a tutorial on using an SD card module with Arduino to save data. It explains how to test if the SD card is readable, create and delete files, and use the SD card as a data logger. The tutorial includes code examples to initialize the SD card, create a file, write random number data to the file, and read the saved data from the SD card on a computer.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
77 views

SD Card Reader Module With Arduino Tutorial

This document provides a tutorial on using an SD card module with Arduino to save data. It explains how to test if the SD card is readable, create and delete files, and use the SD card as a data logger. The tutorial includes code examples to initialize the SD card, create a file, write random number data to the file, and read the saved data from the SD card on a computer.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

SD Card Reader Module with Arduino Tutorial

miliohm
26 April 2020 13:44

 121

 0









SD card is simple way to save data because its size and capacity. SD Card become so
popular to save data in mobile implementation.  This is tutorial about how to use SD Card
module with arduino. We will learn how to create, read, delete file and use this SD Card
module as data logger.

OK let’s just start wire the module with arduino like picture below
arduino and sd card module
First, we will test if SD card read by arduino successfully. You can use the cardInfo sketch
from library like this :

1. /*
2. SD card test
3.
4. This example shows how use the utility libraries on which the'
5. SD library is based in order to get info about your SD card.
6. Very useful for testing a card when you're not sure whether its working or not.
7.
8. The circuit:
9. SD card attached to SPI bus as follows:
10. ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
11. ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
12. ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
13. ** CS - depends on your SD card shield or module.
14. Pin 4 used here for consistency with other Arduino examples
15.
16.
17. created 28 Mar 2011
18. by Limor Fried
19. modified 9 Apr 2012
20. by Tom Igoe
21. */
22. // include the SD library:
23. #include <SPI.h>
24. #include <SD.h>
25.
26. // set up variables using the SD utility library functions:
27. Sd2Card card;
28. SdVolume volume;
29. SdFile root;
30.
31. // change this to match your SD shield or module;
32. // Arduino Ethernet shield: pin 4
33. // Adafruit SD shields and modules: pin 10
34. // Sparkfun SD shield: pin 8
35. // MKRZero SD: SDCARD_SS_PIN
36. const int chipSelect = 4;
37.
38. void setup() {
39. // Open serial communications and wait for port to open:
40. Serial.begin(9600);
41. while (!Serial) {
42. ; // wait for serial port to connect. Needed for native USB port only
43. }
44.
45.
46. Serial.print("\nInitializing SD card...");
47.
48. // we'll use the initialization code from the utility libraries
49. // since we're just testing if the card is working!
50. if (!card.init(SPI_HALF_SPEED, chipSelect)) {
51. Serial.println("initialization failed. Things to check:");
52. Serial.println("* is a card inserted?");
53. Serial.println("* is your wiring correct?");
54. Serial.println("* did you change the chipSelect pin to match your shield or module?");
55. while (1);
56. } else {
57. Serial.println("Wiring is correct and a card is present.");
58. }
59.
60. // print the type of card
61. Serial.println();
62. Serial.print("Card type: ");
63. switch (card.type()) {
64. case SD_CARD_TYPE_SD1:
65. Serial.println("SD1");
66. break;
67. case SD_CARD_TYPE_SD2:
68. Serial.println("SD2");
69. break;
70. case SD_CARD_TYPE_SDHC:
71. Serial.println("SDHC");
72. break;
73. default:
74. Serial.println("Unknown");
75. }
76.
77. // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
78. if (!volume.init(card)) {
79. Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
80. while (1);
81. }
82.
83. Serial.print("Clusters: ");
84. Serial.println(volume.clusterCount());
85. Serial.print("Blocks x Cluster: ");
86. Serial.println(volume.blocksPerCluster());
87.
88. Serial.print("Total Blocks: ");
89. Serial.println(volume.blocksPerCluster() * volume.clusterCount());
90. Serial.println();
91.
92. // print the type and size of the first FAT-type volume
93. uint32_t volumesize;
94. Serial.print("Volume type is: FAT");
95. Serial.println(volume.fatType(), DEC);
96.
97. volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
98. volumesize *= volume.clusterCount(); // we'll have a lot of clusters
99. volumesize /= 2; // SD card blocks are always 512 bytes (2 blocks are 1KB)
100. Serial.print("Volume size (Kb): ");
101. Serial.println(volumesize);
102. Serial.print("Volume size (Mb): ");
103. volumesize /= 1024;
104. Serial.println(volumesize);
105. Serial.print("Volume size (Gb): ");
106. Serial.println((float)volumesize / 1024.0);
107.
108. Serial.println("\nFiles found on the card (name, date and size in bytes): ");
109. root.openRoot(volume);
110.
111. // list all files in the card with date and size
112. root.ls(LS_R | LS_DATE | LS_SIZE);
113. }
114.
115. void loop(void) {
116. }

Upload the program and open Serial Monitor.


After in the serial monitor indicates no error and the card can read successfully then it’s
time for try to create,open, and erase file.

1. #include <SPI.h>
2. #include <SD.h>
3.
4. File test;
5. void setup() {
6. // put your setup code here, to run once:
7. Serial.begin(9600);
8.
9. Serial.print("SD Card init...");
10. //test if wiring is correct
11. if (!SD.begin(4)) {
12. Serial.println("init failed..");
13. while (1);
14. }
15. Serial.println("init ok");
16.
17. //test if file exist
18. if (SD.exists("testing.txt")) {
19. Serial.println("Yes that is exist..");
20. } else {
21. Serial.println("Nope there is not..");
22. }
23.
24. //create file
25. Serial.println("Creating file..");
26. test = SD.open("testing.txt", FILE_WRITE);
27. test.close();
28.
29. //test again if file exist to verify
30. if (SD.exists("testing.txt")) {
31. Serial.println("Yes that is exist..");
32. } else {
33. Serial.println("Nope there is not..");
34. }
35.
36. //Delete file
37. Serial.println("Deleting file...");
38. SD.remove("testing.txt");
39.
40. //test again
41. if (SD.exists("testing.txt")) {
42. Serial.println("Yes that is exist..");
43. } else {
44. Serial.println("Nope there is not..");
45. }
46. delay(1000);
47. Serial.println("Testing done...");
48. }
49.
50. void loop() {
51. // put your main code here, to run repeatedly:
52.
53. }

If everything’s right it should show like this in serial monitor :

create,open, and erase file


success
That means we have successfully check if file exist, create file, delete file, and check again
if file has deleted.

Now if you want to make the SD card as data logger, we will simulate random number to
be saved at SD card. Use this sketch :

1. #include <SPI.h>
2. #include <SD.h>
3.
4. File data;
5. void setup() {
6. // put your setup code here, to run once:
7. Serial.begin(9600);
8.
9. Serial.print("SD Card init...");
10. //test if wiring is correct
11. if (!SD.begin(4)) {
12. Serial.println("init failed..");
13. while (1);
14. }
15. Serial.println("init ok");
16. }
17.
18. void loop() {
19. // put your main code here, to run repeatedly:
20. int number = random(0, 10); //create random number
21. String stringData = (String)number; //convert number to string
22. data = SD.open("data.txt", FILE_WRITE); //open file
23.
24. if (data) {
25. data.println(stringData); //print the data to file
26. data.close();
27. Serial.println(stringData);
28. } else {
29. Serial.println("Cannot open file");
30. }
31. }

In the sketch above, we generate random number between 0 to 10. And then save that
number in data.txt file to the SD card. 

If this success, you should able to open the data.txt to your computer using memory card.

You can see full video tutorial below :

Youtube full video how to use SD Card with arduino

You might also like