ESP32 - Tarjeta SD

En esta guía, exploraremos cómo usar una tarjeta microSD con el ESP32. Profundizaremos en los siguientes temas:

Acerca del módulo de la tarjeta microSD

El módulo de tarjeta microSD puede comunicarse con el ESP32 y puede albergar una tarjeta microSD. En otras palabras, el módulo de tarjeta microSD es un puente entre el ESP32 y la tarjeta microSD.

Esquema de pines

Pinout del módulo de tarjeta microSD

El módulo de tarjeta microSD incluye 6 pines:

  • Pin VCC: conéctalo al pin de 5V del ESP32.
  • Pin GND: conecta este pin al GND del ESP32.
  • Pin MISO: (Master In Slave Out) conéctalo al pin MISO del ESP32.
  • Pin MOSI: (Master Out Slave In) conéctalo al pin MOSI del ESP32.
  • Pin SCK: conéctalo al pin SCK del ESP32.
  • Pin SS: (Slave Select) conéctalo al pin especificado en el código del ESP32 como pin SS.

Preparación

  • Conecta la tarjeta microSD al PC a través de un lector de tarjetas SD USB 3.0
  • Asegúrate de que la tarjeta microSD esté formateada en FAT16 o FAT32 (búscalo en Google)

Diagrama de Cableado

Diagrama de cableado del módulo de tarjeta microSD para ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

※ Nota:

Si usas un escudo Ethernet o cualquier escudo que tenga un soporte para tarjetas microSD, no necesitas usar el módulo de tarjetas microSD. Solo necesitas insertar la tarjeta microSD en el soporte para microSD del escudo.

ESP32 - Cómo abrir un archivo en la tarjeta microSD y crearlo si no existe

Código ESP32

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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() { }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Inserta la tarjeta Micro SD en el módulo de Micro SD.
  • Realiza el cableado entre el módulo de Micro SD y el ESP32 según el diagrama de cableado anterior.
  • Conecta el ESP32 al PC mediante un cable USB.
  • Abre el Monitor Serial en el IDE de Arduino.
  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código al ESP32.
  • La salida en el Monitor Serial para la primera ejecución.
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  
  • El resultado en el monitor serie para las próximas ejecuciones
COM6
Send
SD CARD INITIALIZED. esp32.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Puede que no veas la salida en el Monitor Serial durante la primera ejecución de tu primera subida, ya que se completa antes de abrir el Monitor Serial.

  • Desconecta la tarjeta microSD del módulo
  • Inserta la tarjeta microSD en un lector de tarjetas SD USB
  • Conecta el lector de tarjetas SD USB al PC
  • Verifica si el archivo existe o no

ESP32 - Cómo escribir y leer datos en un archivo en una tarjeta Micro SD

El código de abajo hace:

  • Escribe datos en un archivo
  • Lee el contenido de un archivo carácter por carácter y muéstralo en el Monitor Serial
/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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() { }
  • El Monitor Serial mostró el contenido del archivo.
COM6
Send
Created by newbiely.com Learn ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Los datos se añadirán al final del archivo por defecto. Si reinicias el ESP32 con el código anterior, el texto se añadirá de nuevo al archivo ⇒ el Monitor Serial mostrará más líneas como se muestra a continuación:

COM6
Send
Creado por newbiely.com Aprende ESP32 y la Tarjeta SD Creado por newbiely.com Aprende ESP32 y la Tarjeta SD
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

También puedes quitar la tarjeta microSD del módulo y abrirla en tu PC para comprobar el contenido (se necesita un lector de tarjetas USB).

ESP32 - Cómo leer un archivo en una tarjeta microSD línea por línea

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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() { }
  • El resultado en el Monitor Serial
COM6
Send
SD CARD INITIALIZED. Line 1: Created by newbiely.com Line 2: Learn ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Puede que veas más líneas en el Monitor Serial si el contenido del archivo no se elimina antes.

ESP32 - Cómo sobrescribir un archivo en una tarjeta microSD

Por defecto, el contenido se añadirá al final del archivo. La forma más simple de sobrescribir un archivo es: eliminar el archivo existente y crear uno nuevo con el mismo nombre.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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() { }
  • El resultado en el Monitor Serial
COM6
Send
SD CARD INITIALIZED. Created by newbiely.com Learn ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Reiniciar ESP32
  • Verificar si el contenido del archivo en el Monitor Serial se está añadiendo al final o no.

También puedes quitar la tarjeta microSD del módulo y abrirla en tu PC para comprobar su contenido (se necesita un lector de tarjetas SD USB).

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Referencias de funciones

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!