ESP32 - Carte SD

Dans ce guide, nous explorerons comment utiliser une carte Micro SD avec l'ESP32. Nous aborderons les sujets suivants :

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Micro SD Card
1×Micro SD Card Module
1×Jumper Wires
1×Breadboard
1×USB 3.0 SD Card Reader
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du module de carte Micro SD

Le module de carte Micro SD peut être interfacé avec l'ESP32 et peut accueillir une carte Micro SD. En d'autres termes, le module de carte Micro SD est un pont entre l'ESP32 et la carte Micro SD.

Brochage

Brochage du module de carte Micro SD

Le module de carte Micro SD comprend 6 broches :

  • Broche VCC : connectez à la broche 5V de l'ESP32.
  • Broche GND : connectez cette broche au GND de l'ESP32.
  • Broche MISO : (Master In Slave Out) connectez cette broche à la broche MOSI de l'ESP32.
  • Broche MOSI : (Master Out Slave In) connectez cette broche à la broche MISO de l'ESP32.
  • Broche SCK : connectez cette broche à la broche SCK de l'ESP32.
  • Broche SS : (Sélection d'Esclave) connectez cette broche à la broche spécifiée dans le code ESP32 comme une broche SS.

Préparation

  • Connectez la carte Micro SD au PC via le lecteur de carte SD USB 3.0
  • Assurez-vous que la carte Micro SD est formatée en FAT16 ou FAT32 (recherchez sur Google)

Diagramme de câblage

Schéma de câblage du module de carte SD ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

※ NOTE THAT:

Si vous utilisez un shield Ethernet ou un autre shield équipé d'un port pour carte Micro SD, vous n'avez pas besoin d'utiliser le module de carte Micro SD. Il suffit d'insérer la carte Micro SD dans le port de la carte Micro SD sur le shield.

ESP32 - Comment ouvrir un fichier sur une carte Micro SD et le créer s'il n'existe pas

Code ESP32

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); if (!SD.exists("/esp32.txt")) { Serial.println(F("esp32.txt doesn't exist. Creating esp32.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("/esp32.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("/esp32.txt")) Serial.println(F("esp32.txt exists on SD Card.")); else Serial.println(F("esp32.txt doesn't exist on SD Card.")); } void loop() { }

Étapes rapides

  • Si c'est la première fois que vous utilisez l'ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, Module de développement ESP32) et le port COM.
  • Insérez la carte Micro SD dans le module de carte Micro SD.
  • Faites le câblage entre le module de carte Micro SD et l'ESP32 selon le schéma de câblage ci-dessus.
  • Connectez l'ESP32 au PC via un câble USB.
  • Ouvrez Arduino IDE, sélectionnez la bonne carte et le bon port.
  • Ouvrez le moniteur série sur Arduino IDE.
  • Copiez le code ci-dessus et collez-le dans Arduino IDE.
  • Cliquez sur le bouton Upload sur Arduino IDE pour charger le code sur l'ESP32.
  • Le résultat sur le moniteur série pour la première exécution.
COM6
Send
SD CARD INITIALIZED. esp32.txt doesn't exist. Creating esp32.txt file... esp32.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Le résultat sur le moniteur série pour les exécutions suivantes
COM6
Send
SD CARD INITIALIZED. esp32.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

Il se peut que vous ne voyiez PAS le résultat sur le moniteur série lors du premier lancement si votre premier téléversement est effectué avant d'ouvrir le moniteur série.

  • Détachez la carte Micro SD du module
  • Insérez la carte Micro SD dans un lecteur de carte SD USB
  • Connectez le lecteur de carte SD USB au PC
  • Vérifiez si le fichier existe ou non

ESP32 - Comment écrire/lire des données dans un fichier sur une carte Micro SD.

Le code ci-dessous fait :

  • Écrire des données dans un fichier
  • Lire le contenu d'un fichier caractère par caractère et l'imprimer sur le moniteur série
/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("/esp32.txt", FILE_WRITE); if (myFile) { myFile.println("Created by esp32io.com"); // write a line to esp32.txt myFile.println("Learn ESP32 and SD Card"); // write another line to esp32.txt myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } // open file for reading myFile = SD.open("/esp32.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } } void loop() { }
  • Le moniteur série a affiché le contenu du fichier.
COM6
Send
Created by newbiely.fr Learn ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

Les données seront ajoutées à la fin du fichier par défaut. Si vous redémarrez l'ESP32 avec le code ci-dessus, le texte sera de nouveau ajouté au fichier ⇒ le moniteur série affichera plus de lignes comme ci-dessous :

COM6
Send
Créé par newbiely.fr Apprenez ESP32 et carte SD Créé par newbiely.fr Apprenez ESP32 et carte SD
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vous pouvez également retirer la carte Micro SD du module et l'ouvrir sur votre PC pour vérifier le contenu (un lecteur de carte SD USB est nécessaire).

ESP32 - Comment lire un fichier sur une carte Micro SD ligne par ligne

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("/esp32.txt", FILE_WRITE); if (myFile) { myFile.println("Created by esp32io.com"); // write a line to esp32.txt myFile.println("Learn ESP32 and SD Card"); // write another line to esp32.txt myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } // open file for reading myFile = SD.open("/esp32.txt", FILE_READ); if (myFile) { int line_count = 0; while (myFile.available()) { char line[100]; // maximum is 100 characters, change it if needed int line_length = myFile.readBytesUntil('\n', line, 100); // read line-by-line from Micro SD Card line_count++; Serial.print(F("Line ")); Serial.print(line_count); Serial.print(F(": ")); Serial.write(line, line_length); // print the character to Serial Monitor // \n character is escaped by readBytesUntil function Serial.write('\n'); // print a new line charactor } myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } } void loop() { }
  • Le résultat sur le moniteur série
COM6
Send
SD CARD INITIALIZED. Line 1: Created by newbiely.fr Line 2: Learn ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

Vous pourriez voir plus de lignes sur le moniteur série si le contenu du fichier n'est pas supprimé au préalable.

ESP32 - Comment écraser un fichier sur une carte Micro SD

Par défaut, le contenu sera ajouté à la fin du fichier. La manière la plus simple de réécrire un fichier est : supprimer le fichier existant et en créer un nouveau portant le même nom.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS 5 // The ESP32 pin GPIO5 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { while (1) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); delay(1000); } } Serial.println(F("SD CARD INITIALIZED.")); SD.remove("/esp32.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("/esp32.txt", FILE_WRITE); if (myFile) { myFile.println("Created by esp32io.com"); // write a line to esp32.txt myFile.println("Learn ESP32 and SD Card"); // write another line to esp32.txt myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } // open file for reading myFile = SD.open("/esp32.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: Issue encountered while attempting to open the file esp32.txt")); } } void loop() { }
  • Le résultat sur le moniteur série
COM6
Send
SD CARD INITIALIZED. Created by newbiely.fr Learn ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Redémarrer l'ESP32
  • Vérifier si le contenu du fichier sur le moniteur série est ajouté ou non.

Vous pouvez également retirer la carte Micro SD du module et l'ouvrir sur votre PC pour vérifier le contenu (un lecteur de carte SD USB est nécessaire).

Vidéo

Références de fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!