Crea, comparte, aprende y disfruta
Tarjetas 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:
Ahora 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:
Esa 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! |
Deja una respuesta