Carte SD- initialization failed! ESP8266

Bonjour,

J'essaye de faire fonctionner ma carte ESP8266 Node MCU avec une carte micro sd 32 GO mais ça ne marche pas.

J'ai essayé avec ce simple code: Exemples -> SD(esp8266) -> Files

/*
  SD card basic file example

  This example shows how to create and destroy an SD card file
  The circuit:
   SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4

  created   Nov 2010
  by David A. Mellis
  modified 9 Apr 2012
  by Tom Igoe

  This example code is in the public domain.

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

File myFile;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);

  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
  } else {
    Serial.println("example.txt doesn't exist.");
  }

Le moniteur série affiche:
[caractères illisibles]Initializing SD card...initialization failed!

Cablage suivant:
CS -> D8
SCK -> D5
MOSI -> D6
MISO -> D7
VCC -> 3v3 (aussi testé sur Vin 5v même chose)
GND -> GND

La carte esp8266 fonctionne correctement pour d'autres utilisations.

La carte micro sd fonctionne pourtant très bien avec un autre code sur Arduino Uno c'est pour ça que je ne vois pas d'où peut venir le problème.

Avez-vous une solution ?

Bonjour

le câblage de CS parait incohérent avec le code (voir les commentaires en tête du code que tu utilises pour voir le câblage qui convient)

if (!SD.begin(4))

:boom: la carte µSD peut ne pas apprécier le 5V ,....sauf si son embase est sur un sur un petit circuit imprimé possédant un régulateur de tension pour produire du 3,3V

Le module a bien un régulateur et fonctionne en 3,3v comme en 5.

Ce câblage n'est pas possible sur NodeMcu 12e.

J'ai testé avec en mettant if (!SD.begin(8)) le moniteur série affiche ceci en boucle sans jamais l'initialisation terminée:

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 3584, room 16 
tail 0
chksum 0xb0
csum 0xb0
v2843a5ac
~ld
Initializing SD card...

Et si je change le câblage pour mettre CS sur 4, même résultat que dans le premier post.

Peux tu montrer (lien) le module intermédiaire utilisé entre carte NodeMCU et carte µSD ?
pour moi carte µSD c'est ça et il est rare qu'on relie ça directement à un ESP8266
carte µSD

Dans mon cas je n'ai jamais eu de problème avec ce genre de petit 'shield' monté sur des WEMOS D1 Mini :
https://shop.mchobby.be/fr/wemos-lolin-esp/1201-microsd-shield-for-wemos-d1-3232100012011.html
par défaut CS y est sur D8. Avec ce shield la carte µSD est alimentée par le régulateur 3,3V de la carte D1 Mini et les signaux entre ESP8266 et carte µSD s'échangent directement en niveau 3,3V :

Pour ce qui est de la disponibilité de GPIO sur diverses cartes avec des ESP8266 je consulte ce lien :
https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/

as tout hasard essaies SD.begin(D8)) avec le D devant 8

Oui c'est une carte micro sd de ce type mais je ne la relie pas directement.

Le module que j'utilise est celui-ci:

Il marche très bien avec un arduino uno mais sur un ESP8266 non, c'est bizarre.

Je n'ai pas de Wemos D1, mais je penserai peut être à en prendre un la prochaine fois, ça a l'air d'être plus pratique niveau shield.

Avec le schéma de cet adaptateur on aurait sans doute une explication

As-tu autre chose de branché sur le bus SPI ?
certains adaptateurs pour carte µSD ne savent pas cohabiter sur ce bus
Sur une photo de client on voit CATALEX écrit au dos de la carte, les problèmes de cohabitation sur le BUS SPI étaient avec certains modèles de cette marque

Il n'y a rien d'autre. Juste le module SD et le node mcu.
Toutes les connexions sont décrites dans mon premier message.
J'ai vérifié les connexions.

Ton adaptateur possède son propre régulateur 3,3V et doit être alimenté en 5V (VCC)
Un circuit d'adaptation d e niveaux logiques y semble présent, il devrait donc à priori accepter de communiquer avec les signaux 3,3V de l'ESP826

Cette remarque n'a peut-être pas été vue par leg2027.
Sur un ESP8266, 8 est égal à GPIO8, mais D8 est égal à GPIO15.

Tout dépend de l'utilisation (il serait bien d'en parler), mais souvent, avec un ESP8266, il est bien plus intéressant de stocker les fichiers dans SPIFFS, ou LittleFS.

Si j'ai essayé avec D8 mais le résultat est le même que dans mon premier message.
Le module a été aussi testé en alimentation 5v.

Pour l'utilisation, c'était pour stocker un site web local avec des images. SPIFFS marche très bien avec mon ESP8266 mais c'est limité à 4mo de mémoire flash ce qui n'est pas suffisant pour mon utilisation.
Je teste maintenant avec un code plus simple pour être sur que l'erreur ne viendrait pas d'ailleurs que la carte SD.

Bonsoir

Si 'on veut rester à l'ESP8266 avec un 'gros ' besoin de mémoire Flash , prendre une carte telle que la WEMOS/ LOLIN D1 Mini PRO (16MB, dont 15MB allouables à une système de fichiers , SPIFFS ou son successeur)
https://www.wemos.cc/en/latest/d1/d1_mini_pro.html
pro

(Sur certains sites il faut bien spécifier Mini D1 PRO 16M, cars ils vendent aussi ce qu'ils appellent 'D1MIni PRO 4M')

Bonsoir,
Mais si je veux enregistrer beaucoup de photos, j'ai besoin de plus de 16MO quand même.

Je me suis en partie basé sur cette vidéo: Webserver with ESP8266 - 12E - YouTube
Le serveur fonctionne correctement.

Mais pourquoi certains arrivent à faire marcher avec une carte µSD et moi non ?