Arduino Nano ESP32 - Tarjeta SD

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

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Tarjeta Micro SD
1×Módulo de Tarjeta Micro SD
1×Cables Puente
1×Protoboard
1×(Opcional) Adaptador de Tarjeta de Memoria MicroSD a SD
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del Módulo de Tarjeta microSD

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

Esquema de pines

Pinout del módulo de tarjeta microSD

El módulo de tarjeta Micro SD incluye 6 pines:

  • Pin VCC: conecta al pin de 5V del ESP32.
  • Pin GND: conecta este pin al GND del ESP32.
  • Pin MISO: (Master In Slave Out) conecta este pin al pin MISO del ESP32.
  • Pin MOSI: (Master Out Slave In) conecta este pin al pin MOSI del ESP32.
  • Pin SCK: conecta este pin al pin SCK del ESP32.
  • Pin SS: (Slave Select) conecta este pin al pin especificado en el código Arduino Nano 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

  • El diagrama de cableado cuando se alimenta la placa Arduino Nano ESP32 a través del puerto USB.
Diagrama de cableado del módulo de tarjeta microSD para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

  • El diagrama de cableado para alimentar la placa Arduino Nano ESP32 a través del pin Vin.
Diagrama de cableado de alimentación externa para el módulo de tarjeta Micro SD de Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Arduino Nano ESP32 - Cómo abrir un archivo en la tarjeta Micro SD y crearlo si no existe

Código de Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS D4 // The Arduino Nano ESP32 pin connected to the CS pin of SD card module 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 esta es la primera vez que usas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa Arduino Nano ESP32 correcta (p. ej. Arduino Nano ESP32 y el puerto COM).
  • Inserta la tarjeta Micro SD en el módulo de Micro SD.
  • Realiza el cableado entre el módulo de tarjeta Micro SD y Arduino Nano ESP32 según el diagrama de cableado anterior.
  • Conecta Arduino Nano ESP32 al PC mediante un cable USB.
  • Abre Arduino IDE, selecciona la placa y el puerto correctos.
  • Abre Monitor Serial en Arduino IDE.
  • Copia el código anterior y pégalo en Arduino IDE.
  • Haz clic en el botón Subir en Arduino IDE para cargar el código en Arduino Nano 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 Serial 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:

No podrás ver la salida en el Monitor Serial durante la primera ejecución de tu primera subida, que se realiza 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

Arduino Nano ESP32 - Cómo escribir y leer datos en un archivo en una tarjeta microSD

Lo que hace el código de abajo:

  • 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 Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS D4 // The Arduino Nano ESP32 pin connected to the CS pin of SD card module 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 Arduino Nano 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 Arduino Nano 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 Arduino Nano ESP32 y una tarjeta SD Creado por newbiely.com Aprende Arduino Nano ESP32 y una 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 su contenido (se necesita un lector de tarjetas SD USB).

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

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS D4 // The Arduino Nano ESP32 pin connected to the CS pin of SD card module 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 Arduino Nano 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 previamente.

Arduino Nano ESP32 - Cómo sobrescribir un archivo en la 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 Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-sd-card */ #include <SD.h> #define PIN_SPI_CS D4 // The Arduino Nano ESP32 pin connected to the CS pin of SD card module 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 Arduino Nano ESP32 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Reiniciar Arduino Nano ESP32
  • Verificar si el contenido del archivo que se muestra en el Monitor serie se ha añadido al final o no.

También puedes quitar la tarjeta microSD del módulo y abrirla en tu PC para revisar 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!