Problèmes de cablage

Salut ! Je travaille avec une carte ESP32 et une Micro-SD Breakoutboard.
J'ai lancé le code suivant :

#include <SPI.h>
#include <SD.h>
File myFile;
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("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
}

Et malheureusement, toujours je me retrouve avec ce message dans le moniteur série : "initialization failed!". Et donc je ne parviens pas à travailler avec ma carte SD.
Je pense que c'est mon câblage qui ne doit pas être bon. J'ai soudé le tout et normalement je me suis pas trompé au niveau des broches (image câblage).
Mais j'ai peut-être mal soudé le câble jaune MOSI to broche23 (regarder deuxième image).

Est-ce que j'ai bien raison et le soudage de ce câble jaune est mal réalisé ou est-ce que le problème vient d'ailleurs ?

Merci d'avance !


Bonjour wazol

Peut être ça:


if (!SD.begin(4))

Cordialement
jpbbricole

vu que tout est soudé, si vous voulez rester sur la pin 4 pour le CS, essayez de rajouter en début de setup()

// réglage pour la CS pin standard
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);

un petit schéma du câblage réel serait bien

Un schéma du cablage réel ? comment ca ?

une photo d'un petit dessin tracé au crayon et à la règle avec un rectangle pour les composants et le noms des broches utilisées (pas forcément mise à l'endroit exact de la vraie puce) + info sur l'alimentation

Bonjour wazol

Comme ton CS est soudé sur GPIO5, modifies la ligne d'initialisation
de
if (!SD.begin(4))
à
if (!SD.begin(5))

Cordialement
jpbbricole

J'ai deja initialisé CS = 5 au début du code

Cordialement

comment ?

Pardon j'ai envoyé le mauvais code...
Voici le bon :


/*
https://www.electronicwings.com/
  SD Card Interface code for ESP32
  SPI Pins of ESP32 SD card as follows:
  CS    = 5;
  MOSI  = 23;
  MISO  = 19;
  SCK   = 18; 
*/

#include <SPI.h>
#include <SD.h>

File myFile;
const int CS = 5;

void WriteFile(const char * path, const char * message){
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open(path, FILE_WRITE);
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.printf("Writing to %s ", path);
    myFile.println(message);
    myFile.close(); // close the file:
    Serial.println("completed.");
  } 
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening file ");
    Serial.println(path);
  }
}


void ReadFile(const char * path){
  // open the file for reading:
  myFile = SD.open(path);
  if (myFile) {
     Serial.printf("Reading file from %s\n", path);
     // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close(); // close the file:
  } 
  else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void setup() {
  Serial.begin(9600);    // Set serial baud rate to 9600
  delay(500);
  while (!Serial) { ; }  // wait for serial port to connect. Needed for native USB port only
  Serial.println("Initializing SD card...");
  if (!SD.begin(CS)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  WriteFile("/test.txt", "ElectronicWings.com");
  ReadFile("/test.txt");
}

void loop() {
  // nothing happens after setup
}

ça devrait trouver la carte SD. vous êtes sûr qu'elle est fonctionnelle en 3.3V ? certaines sont en 5V

Oui sur la fiche technique ils précisent bien 3.3V : https://joy-it.net/files/files/Produkte/COM-MSD/COM-MSD_Datasheet_2022-07-05.pdf
Mais peut-être que mon soudage est mauvais, la photo semble normal ?

la soudure semble OK et le schéma aussi

vérifier la continuité des câbles... parfois les fils Dupont de mauvaise qualité sont cassés à l'intérieur de la gaine...

Bonjour wazol

J'ai testé ton code, (avec un lecteur 5V) et il fonctionne très bien :wink:

Cordialement
jpbbricole

Oh merci, que voulez vous dire part "lecteur" 5V

par*

Mon lecteur ne fonctionne pas en 3.3v.
Mais ça ne change rien pour ce qui est du test du programme.

Que dois-je modifier pour passer en lecteur 5V ?

Cordialement

Bonsoir wazol

Milles excuses, j'ai introduit la confusion en citant mon lecteur 5V, cette information était inutile dans le contexte.
Ton lecteur est en 3.3V et c'est ainsi qu'il doit fonctionner, il n'y a rien à changer :wink:

Si ton lecteur ne fonctionne pas, c'est que lecteur est soit mort ou un problème de câblage ou que ta carte SD n'est pas ou mal formattée. Quel est le formatage de cette carte?
As tu essayé de créer un fichier texte sur cette carte?

Cordialement
jpbbricole

La carte est elle insérée correctement ?