Arduino - Tarjeta microSD

En este tutorial, vamos a aprender a usar la tarjeta microSD con Arduino. En detalle, aprenderemos:

Tarjeta microSD para Arduino

Acerca del Módulo de Tarjeta Micro SD

El módulo de tarjeta microSD puede conectarse a Arduino y puede albergar una tarjeta microSD. En otras palabras, el módulo de tarjeta microSD es un puente entre Arduino y la tarjeta microSD.

Diagrama de pines

Diagrama de pines del módulo de microSD

El módulo de tarjeta microSD incluye 6 pines:

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

Preparación

  • Conecta la tarjeta microSD al PC mediante 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 de Arduino

This image is created using Fritzing. Click to enlarge image

※ Nota:

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

Arduino - Cómo abrir un archivo en una tarjeta microSD y crearlo si no existe

Código de Arduino

Pasos R\u00e1pidos

  • Inserte la tarjeta Micro SD en el módulo Micro SD.
  • Realice el cableado entre el módulo Micro SD y Arduino según el diagrama de cableado anterior.
  • Conecte Arduino al PC mediante un cable USB.
  • Abra el IDE de Arduino y seleccione la placa y el puerto correctos.
  • Abra el Monitor Serial en el IDE de Arduino.
  • Copie el código que se muestra a continuación y péguelo en el IDE de Arduino.
/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 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("arduino.txt")) { Serial.println(F("arduino.txt doesn't exist. Creating arduino.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("arduino.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("arduino.txt")) Serial.println(F("arduino.txt exists on SD Card.")); else Serial.println(F("arduino.txt doesn't exist on SD Card.")); } void loop() { }
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino
  • El resultado en el Monitor Serial para la primera ejecución
COM6
Send
SD CARD INITIALIZED. arduino.txt doesn't exist. Creating arduino.txt file... arduino.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. arduino.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

Puede que no veas la salida en el Monitor Serial si la primera ejecución de tu primera subida se realiza antes de abrir el Monitor Serial.

  • Retira 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 - Cómo escribir y leer datos en un archivo en una tarjeta microSD

Lo que hace el código a continuación:

  • 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 fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 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("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.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 arduino.txt")); } } void loop() { }
  • El Monitor Serial mostró el contenido del archivo
COM6
Send
Created by ArduinoGetStarted.com Learn Arduino 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 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 ArduinoGetStarted.com Aprende Arduino y la tarjeta SD Creado por ArduinoGetStarted.com Aprende Arduino y la tarjeta SD
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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

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

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 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("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.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 arduino.txt")); } } void loop() { }
  • El resultado en el Monitor serie
COM6
Send
SD CARD INITIALIZED. Line 1: Created by ArduinoGetStarted.com Line 2: Learn Arduino and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

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

Arduino - 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 Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 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("arduino.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.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 arduino.txt")); } } void loop() { }
  • El resultado en el monitor serie
COM6
Send
SD CARD INITIALIZED. Created by ArduinoGetStarted.com Learn Arduino and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Reiniciar Arduino
  • Verificar si el contenido del archivo en el Monitor Serial se ha añadido 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!