Go Down

Topic: Troubleshooting with Arduino Micro SD card module is not working (Read 446 times) previous topic - next topic

rocketastro

Hi guys, iam recently working with a project with arduino nano and which also includes a data logging for that iam using a very common micro sd card module for the arduino boards. When I started to work with it, first I just uploaded the cardinfo code  from the example in the arduino ide and
it shows :
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?


Iam pretty sure that the connections are correct, card also inserted correctly and I also tried both pin 4 and pin 10 for the chipselect and again tried from first and it again shows the same thing in serial monitor and i also checked a lot of times !! but the same results .

After that I bought a new micro sd card module and again I uploaded the same code with this new module but it shows the same thing :
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?

again I am pretty sure that wirings,card insertion are correct and I checked that more than thousand times !!!
but the result didn't change and in the next step I bought a new micro sd card and inserted that in my module but again the same result :
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?


and I also formated the micro sd card lot of time (with this : https://www.sdcard.org/downloads/formatter/) but nothing changed !!!


So what mistakes I am doing and how I can solve this problem pls pls pls help me !!!!!!!!

Code: [Select]
/*
  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 = 4;

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?");
    while (1);
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.println();
  Serial.print("Card 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");
    while (1);
  }

  Serial.print("Clusters:          ");
  Serial.println(volume.clusterCount());
  Serial.print("Blocks x Cluster:  ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks:      ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

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

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
  Serial.print("Volume size (Kb):  ");
  Serial.println(volumesize);
  Serial.print("Volume size (Mb):  ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Gb):  ");
  Serial.println((float)volumesize / 1024.0);

  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) {
}

ballscrewbob

@rocketastro

Your topic was Moved  to it's current location / section as it is more suitable.

Could you also take a few moments to Learn How To Use The Forum.

Other general help and troubleshooting advice can be found here.
It will help you get the best out of the forum in the future.


It may not be the answer you were looking for but its the one I am giving based on either experience, educated guess, google (who would have thunk it ! ) or the fact that you gave nothing to go with in the first place so I used my wonky crystal ball.

markd833

Which SD card module did you buy?

How did you connect it to your Nano? Schematic or simple wiring sketch on paper will do.


markd833

#4
Oct 10, 2020, 03:10 pm Last Edit: Oct 10, 2020, 03:11 pm by markd833 Reason: formatting
I have an SD card module here that looks pretty much exactly the same as the one you bought. One component might be in a slightly different place but apart from that it looks the same. These SD card adapter modules all work more or less the same.

I have an Arduino UNO clone here and I connected up my module as follows:


Code: [Select]
Module Vcc  -> UNO +5V
Module GND  -> UNO GND
Module MOSI -> UNO pin 11
Module MISO -> UNO pin 12
Module SCK  -> UNO pin 13
Module CS   -> UNO pin 10




I then loaded up the same CardInfo sketch from the IDE (v1.8.13) that you did. The only change I made was to alter the chip select pin as follows:

Code: [Select]
// 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;


I then downloaded v5.0.1 of the formatter from the SD Card Association (using your link minus the stray ')'!) and formatted a 2Gb SD card I had lying around.
After uploading the sketch, this is what I got:



Code: [Select]
Initializing SD card...Wiring is correct and a card is present.

Card type:         SD2
Clusters:          61940
Blocks x Cluster:  64
Total Blocks:      3964160

Volume type is:    FAT16
Volume size (Kb):  1982080
Volume size (Mb):  1935
Volume size (Gb):  1.89

Files found on the card (name, date and size in bytes):
SYSTEM~1/     2020-10-10 13:54:08
  INDEXE~1      2020-10-10 13:54:08 76



I would suggest that you stick with pin 10 as the chip select for the SD card as that way, the SS pin is defined as an output. If you were to use another pin for your chip select, there is the possibility that if pin 10 were an input, that the SPI hardware would switch into SPI Slave mode.



Go Up