Data Logger Shield SD card not working with arduino

Hello Everyone,

I have of Data Logger Shields for a one of my project. (picture attached) The RTC on the shield works perfectly with no problems at all, but the SD function does not work. I have spent two days now trying to figure out what the problem is and tried all available SD libraries I can find with no luck getting the SD card to work.

I have tried on two similar shields from different make and iI have also tried different SD cards and also tried different UNO boards.

I am getting the message mentioned below on the serial monitor:
"
Initializing SD card...initialization failed. Things to check:

  • is a card inserted?
  • is your wiring correct?
  • did you change the chipSelect pin to match your shield or module?
    "

I've set Chip Select to 10.

and sometimes i get the following:
"
Card type: SD2
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card
"
All SD cards i have tried has been formatted using the SD formatting tool.

i don't know what else to try beyond this.

would appreciate your guys help.

Thanks

Mukesh Kumar

What SD card? What Do you have it formatted to?

I have tried Sandisk 1GB SD card and Micro SD card also. I have formatted the SD with FAT32. SD cards are working fine.

OK - so now we need to know what library & what code you are using.

I am using the card info example given in SD examples in Arduino ide. The Example name is CardInfo. Code in the example is as below:

/*
SD card test

This example shows how use the utility libraries on which the'
SD library is based in order to get info about your SD card.
Very useful for testing a card when you're not sure whether its working or not.

The circuit:

  • SD card attached to SPI bus as follows:
    ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
    ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
    ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
    ** CS - depends on your SD card shield or module.
    Pin 4 used here for consistency with other Arduino examples

created 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 10;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.print("\nInitializing SD card...");

// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.");
}

// print the type of card
Serial.print("\nCard type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}

// Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}

// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();

volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);

Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);

// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop(void) {

}

That data logging shield looks very similar to this one. Which looks similar to the AdaFruit one here.

The description for it says: This Arduino shield has been designed for Data Logging to an SD card and also has an on board Real Time Clock, so you can easily time stamp your readings, you can also use the Adafruit libraries which work great with these!

Have a go with the AdaFruit libraries and their examples and see if that works for you.

Have you formatted the card in the proper manner? Second sticky in this forum.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.