Conexión de una tarjeta SD por SPI a Arduino

publicado en: Portada | 0

Conectar una tarjeta de memoria SD o MicroSD a una placa Arduino y comunicar con ella usando SPI es muy sencillo, basta con disponer con de un conector para la tarjeta y una pocas resistencias para usarlas como pull-up, cumpliendo las especificaciones electrónicas SD, y otras pocas para hacer un divisor de tensión o, mejor, un regulador de nivel de tensión, para conseguir los 3.3 V desde los 5 V de Arduino.

Las comunicaciones SPI no son necesariamente las más rápidas de las tres disponibles en una tarjeta SD, que puede comunicar además en modo SD serie (que separa comandos de datos) y en modo SD paralelo de 4 bits pero sí que son las más sencillas de implementar en un microcontrolador de uso general y desde luego en Arduino.

Conexión MicroSD a SD a conversor de nivel a SPI Arduino

Su simplicidad y sus más que suficientes prestaciones de capacidad y velocidad hacen que una tarjeta de memoria SD o una MicroSD sea un sistema excelente para almacenar información (registros/logs) desde un dispositivo basado en un microcontrolador. Siendo así es lógico que entre las librerías de Arduino se encuentre una para gestionar tarjetas SD simplificando las comunicaciones SPI (que tienen alguna peculiaridad al usarlo con una tarjeta SD) y aportando el viejo sistema de archivos FAT, bastante anticuado pero seguramente suficiente para las necesidades de un circuito microcontrolado.

Si no se dispone de un conector para la tarjeta, una solución sencilla es utilizar un adaptador de SD a como los que vienen incluidos muchas veces al comprar una tarjeta MicroSD; de hecho, para las pruebas es más práctico porque es muy sencillo adaptarlo con una tira de pines para conectarlo a una placa de pruebas (breadboard) en la que se dispondrán los componentes pasivos.

Para que quede más resistente, teniendo una zona mayor de soldadura, yo he elegido una tira de pines de los largos pero tampoco va mal con una convencional. Aunque la separación de los contactos de la tarjeta no corresponde con el paso de la tira de pines, incluso usando todos, sirve; además los pequeños resaltes entre contactos ayudan a colocar la tira en su sitio. Como en las tarjetas MicroSD no existe el pin número 9 (el que queda junto a la esquina achaflanada) y se trata de fabricar un conector, soldarlo sólo sirve para hacerlo más resistente aunque si se tratara de un conector para una tarjeta SD «completa», lo ortodoxo para su uso con el bus SPI sería usarlo con una resistencia pull-up como mencionaba más arriba, pero tengo que confesar que en mis pruebas también funcionó sin resistencias y hasta probé una vieja tarjeta de 512 MB que aguantó sin problemas directamente alimentada por los 5 V de la placa Arduino.

adaptador MicroSD usado como conector reversoadaptador MicroSD usado como conector anverso

Como ocurre frecuentemente, no es muy rentable compra unos pocos conectores SD o MicroSD, para esos casos, para prototipar o para hacer pruebas, lo más rentable suele ser adquirir un módulo, que además suelen incluir extras como reguladores de tensión buffers, LED para indicar el estado… para afinar aún más su funcionamiento y nuestras necesidades de uso.

Módulo SPI para tarjeta Micro SD

De hecho, el uso del almacenamiento con tarjetas de memoria SD o MicroSD es tan sencillo y tan común que muchos módulos y shields (oficiales o no) incluyen un conector para usar una tarjeta de memoria además de su función principal. Es común encontrarlas en el shield Ethernet (no sólo en el oficial), en el shield WiFi, en el shield wireless y en algunos GPS compatibles. Es lógico, ya que resulta habitual en todos estos módulos y shields un almacenamiento de datos (por ejemplo para registro o log) más o menos masivo.

Ethernet shield con tarjeta Micro-SD conectada por el bus SPI

Actualmente el formato compatible con SD es el MicroSD que, por su difusión, se encuentran dispositivos de mejores prestaciones más baratos. Una tarjeta de memoria SD siempre dispondrá del modo de funcionamiento SPI (junto a los otros dos estándares) pero en una tarjeta MicroSD es opcional por lo que puede darse la circunstancia que en los modelos más «básicos» de módulos para estas tarjetas algunas no funcionen, las que no soporten comunicaciones SPI, porque simplemente no habrán implementado el protocolo y esperarán de la tarjeta de memoria que lo haga. El riesgo es aún mayor en los módulos para tarjetas SD usando un adaptador a MicroSD, ya que las primeras sí soportan las comunicaciones SPI y es por eso raro que el módulo añada un interfaz-puente para comunicar según ese protocolo. Dicho todo eso, con ninguna de las tarjetas que he probado hasta el momento he tenido ningún problema en ese sentido, alguno sí, por ejemplo, con el sistema de archivos.

Víctor Ventura

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Más entradas - Página web

Sígueme:
TwitterLinkedIn

Seguir Víctor Ventura:

Programador multimedia y web + IoT. Mejor con software libre.

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Deja un comentario

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