Trastejant

Crea, comparte, aprende y disfruta

Tarjetas SD

Tarjeta SD

Hoy en día muchos de los aparatos que utilizamos a diario llevan una tarjeta SD (Secure Digital). Solemos usarlas con nuestras cámaras de fotos, de vídeo, teléfono móvil, MP3… pero ¿Qué son?
En este tutorial explicaremos brevemente cómo funcionan y lo que es más interesante, cómo podemos usarlas en nuestros proyectos.

¿Qué es una tarjeta SD?

SD es un formato de memoria no volátil. Es decir, sigue almacenando los datos contenidos en ella aun que no tenga alimentación. Esto es muy importante, ya que de no ser así cada vez que nos quedásemos sin batería en nuestra cámara o móvil ¡todos nuestros datos se perderían para siempre!

Fue desarrollado por Panasonic en 1999 y durante todos estos años aun aumentado enormemente su capacidad y velocidad al tiempo que se iban haciendo más pequeñas (no olvidemos que las micro y mini SD siguen siendo SD… )

Clases

Las tarjetas SD tienen distintas clases, cada una de estas clases se diferencia de las demás en la velocidad mínima de acceso que nos garantiza el fabricante.

  •  Clase 2: 2Mb/s
  •  Clase 4: 4Mb/s
  • Clase 6: 6Mb/s
  •  Clase 10: 10Mb/s

Como podemos ver, es fácil relacionar la clase con su velocidad, pero es un dato muy a tener en cuenta a la hora de comprar una tarjeta. Si la queremos para dispositivos que almacenen gran cantidad de datos (una cámara de alta resolución, por ejemplo) necesitamos una velocidad de acceso rápida. De lo contrario guardar y visualizar las fotos y los vídeos se convertirá en un verdadero ejercicio de paciencia.

Comunicación

El modo de comunicación que más nos interesa es através de SPI, ya que es la forma más sencilla que tenemos para acceder y guardar datos en una tarjeta SD. ¿Que es SPI? intentaremos resumirlo brevemente.

SPI es un protocolo de comunicación muy utilizado que emplea una configuración maestro-esclavo. Esto significa que uno de los dispositivos (el maestro) toma el control de la transmisión. La inicia, la detiene y controla o proporciona el reloj para sincronizarla.

Generalmente se necesitan cuatro señales para este tipo de comunicación:

Pin Función
SCLK Señal de reloj
MOSI Linea para la emisión de datos desde el maestro
MISO Linea para la recepción de datos desde el esclavo
CS Activa o desactiva la comunicación

Al tener una linea para recibir datos y otra para enviar podemos enviar y recibir datos de forma paralela y tener una comunicación bidireccional en cada flanco de reloj.

Ahora que sabemos como se comunica una tarjeta SD necesitamos saber donde esta cada uno de esos pines para poder usarlos, este es el pinout de una tarjeta SD:

PinoutAhora que sabemos todo esto, es el momento de usarlas en nuestros proyectos.

Tarjetas SD y Arduino

Antes de nada es importante recordar que las tarjetas SD funcionan A 3.3v por lo que si conectamos la tarjeta a Arduino o a cualquier controlador que funcione a 5V LA QUEMAREMOS.

Ya sabemos donde esta cada pin de la tarjeta SD, pero ya hemos visto que para comunicarnos con estas tarjetas necesitamos un esclavo y un maestro. En este caso Arduino será el maestro y la tarjeta SD el esclavo. Así que ahora tenemos que localizar esos mismos pines en Arduino.

función pin de Arduino
SCLK 13 (52 en Arduino MEGA)
MOSI 11 (51 en Arduino MEGA)
MISO 12(50 ARduino MEGA)
CS Podemos elegirlo nosotros

Localizados los pines en uno y otro lado es el momento de realizar las conexiones:

Esquema Arduino y SDEsa forma de colocar las resistencias se conoce cómo divisor de tensión, es la forma más sencilla (y barata) de evitar que las señales de Arduino (que van a 5V) quemen la tarjeta SD.
Hechas las conexiones, toca programar.

El programa

Arduino cuenta con una librería incluida en su IDE que permite comunicarnos cómodamente con nuestra tarjeta SD. Se trata de la librería SD. Veamos uno de los ejemplos que trae:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include 
File myFile;
 
void setup()
{
// Abrimos la comunicación serial
Serial.begin(9600);
while (!Serial) {
; // Esperamos a que se abra la comunicación
}
 
Serial.print("Iniciando la tarjeta SD...");
// Vamos a usar el pin 10 como CS, así que tenemos que configurarlo como una salida.
pinMode(10, OUTPUT);
 
if (!SD.begin(4)) {
Serial.println("Fallo al inicializar!");
return;
}
Serial.println("Inicializacion completa.");
 
// Abrimos el fichero que nos interesa. Solo podemos tener un fichero abierto, así que si queremos cambiar de fichero
// antes tendremos que cerrar el anterior.
myFile = SD.open("test.txt", FILE_WRITE);
 
// Si el fichero se abre correctamente:
if (myFile) {
Serial.print("Escribiendo el test...");
 
//Escribimos en el fichero de la siguiente manera:
myFile.println("probando 1, 2, 3.");
 
// Cerramos el fichero
myFile.close();
Serial.println("done.");
 
} else {
// Si no se puede abrir el fichero, mostramos un mensaje de error
Serial.println("error al abrir el fichero test.txt");
}
 
// Volvemos a abrir el fichero para leerlo
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
 
// leemos los datos del fichero
while (myFile.available()) {
Serial.write(myFile.read());
}
// cerramos el fichero
myFile.close();
} else {
// Si el fichero no puede abrirse, mostramos un erro.
Serial.println("error opening test.txt");
}
}
 
void loop()
{
 
}
 
Ya sabemos un poco más sobre las tarjetas SD, esperamos os sea de utilidad este tutorial. UN SALUDO!

También te puede interesar...

No hay temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.