ESP8266 - Tarjeta microSD

Este tutorial le enseña cómo usar la tarjeta microSD con ESP8266. En detalle, aprenderemos:

Tarjeta microSD ESP8266 NodeMCU

Hardware Requerido

1×ESP8266 NodeMCU
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×(Opcional) Adaptador de Tarjeta de Memoria MicroSD a SD
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

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 la tarjeta microSD

El módulo de tarjeta microSD es un puente entre el ESP8266 y una tarjeta microSD. Es capaz de establecer una conexión con el ESP8266 y puede usarse para albergar la tarjeta microSD. En otras palabras, sirve como un puente entre ambos.

Pinout del módulo de la tarjeta microSD

Pinout del módulo de tarjeta microSD

El módulo de la tarjeta microSD tiene 6 pines:

  • Pin VCC: Debe conectarse al pin 5V del Arduino.
  • Pin GND: Debe conectarse al GND del Arduino.
  • Pin MISO: (Master In Slave Out) Debe conectarse al pin MISO del Arduino.
  • Pin MOSI: (Master Out Slave In) Debe conectarse al pin MOSI del Arduino.
  • Pin SCK: Debe conectarse al pin SCK del Arduino.
  • Pin SS: (Slave Select) Debe conectarse al pin especificado en el código ESP8266 como pin SS.

Preparación

Asegúrese de que la tarjeta microSD esté formateada como FAT16 o FAT32 (puede buscar más información en línea).

Diagrama de Cableado

Diagrama de cableado del módulo ESP8266 NodeMCU para tarjeta microSD

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

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

Código ESP8266

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes tal como se muestran en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Selecciona la placa ESP8266 correcta, como (p. ej., NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Inserta la tarjeta Micro SD en el módulo de tarjeta Micro SD.
  • Realiza las conexiones entre el módulo de Micro SD y ESP8266 según el diagrama de cableado.
  • Conecta el ESP8266 al PC con un cable USB.
  • Abre el Arduino IDE y selecciona la placa y el puerto adecuados.
  • Abre el Monitor Serial en el IDE de Arduino.
  • Copia y pega el siguiente código en el IDE de Arduino.
/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); if (!SD.exists("esp8266.txt")) { Serial.println(F("esp8266.txt doesn't exist. Creating esp8266.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("esp8266.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("esp8266.txt")) Serial.println(F("esp8266.txt exists on SD Card.")); else Serial.println(F("esp8266.txt doesn't exist on SD Card.")); } void loop() { }
  • Haz clic en el botón Subir en el IDE de Arduino para compilar y subir el código al ESP8266.
  • El Monitor Serial mostrará el resultado de la primera ejecución.
COM6
Send
SD CARD INITIALIZED. esp8266.txt doesn't exist. Creating esp8266.txt file... esp8266.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Será diferente
  • El resultado mostrado en el Monitor Serial para ejecuciones posteriores será distinto.
COM6
Send
SD CARD INITIALIZED. esp8266.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Puede que no observe la salida en el Monitor Serial cuando cargue su código por primera vez, si se realiza antes de abrir el Monitor Serial.

  • Retira la tarjeta microSD del módulo.
  • Coloca la tarjeta microSD en un lector de tarjetas USB.
  • Conecta el lector de tarjetas USB al ordenador.
  • Verifica si el archivo está presente o no.

ESP8266 - Cómo escribir y leer datos de un archivo en una tarjeta microSD

El siguiente código:

  • Guarda datos en un archivo
  • Lee el contenido del archivo carácter por carácter y lo muestra en el monitor serie
/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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: error on opening file esp8266.txt")); } } void loop() { }
  • El Monitor Serial mostró los contenidos del archivo.
COM6
Send
Created by ArduinoGetStarted.com Learn ESP8266 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Por defecto, los datos se añadirán al final del archivo. Si reinicias ESP8266 con el código anterior, el texto se añadirá de nuevo al archivo, y el Monitor Serial mostrará más líneas como estas:

COM6
Send
Creado por ArduinoGetStarted.com Aprende ESP8266 y la tarjeta SD Creado por ArduinoGetStarted.com Aprende ESP8266 y la tarjeta SD
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Puedes quitar la tarjeta microSD del módulo y usar un lector de tarjetas SD USB para ver su contenido en tu computadora.

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

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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: error on opening file esp8266.txt")); } } void loop() { }
  • La salida mostrada en el Monitor Serial.
COM6
Send
SD CARD INITIALIZED. Line 1: Created by ArduinoGetStarted.com Line 2: Learn ESP8266 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Puede observar líneas adicionales en el monitor serie si el contenido del archivo no ha sido borrado previamente.

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

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

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); SD.remove("esp8266.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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: error on opening file esp8266.txt")); } } void loop() { }
  • El resultado mostrado en el Monitor Serial.
COM6
Send
SD CARD INITIALIZED. Created by ArduinoGetStarted.com Learn ESP8266 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Reiniciar el ESP8266
  • Verificar si el contenido del archivo se añade al Monitor Serial o no.

Puede quitar la tarjeta microSD del módulo y ver su contenido en su computadora. Para ello es necesario 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!