De lo que se trata hoy es en conseguir leer y escribir en una tarjeta SD con arduino (mega168) con los minimos componentes posibles.
para conseguir los resultados se requieren los siguientes componentes:
1x Arduino 168 Duemilanove o superior
3x resistencias 3300ohm
3x resistencias 1800ohm
el esquema logico del asunto es como el siguiente ( obtenido de los foros de arduino.cc)
como se puede apreciar, la comunicacion con la tarjeta usa el protocolo SPI, usando los puertos hardware de la placa Arduino, pines 13,12,11,10 ( se pueden usar otros pines usando SPI por software, pero no se tratará de eso en este post)
el divisor de voltaje que aparece se implementa en los pines del bus SPI, es debido a que la tarjeta opera a 3.3 voltios y el Atmega, y sus puertos a 5 ( ojo a este detalle )
la idea era hacer una mini-shield que encaje encima de la placa para poder hacer las pruebas de una manera fiable, el esquema hardware seria como lo siguiente:
con el entretenido metodo del ataque quimico se consigue una PCB bastante resultona, algo como:
tambien he modificado un adaptador SD-MicroSD soldandole una tira de pines de tipo 2.54mm para poder pincharlo a un zocalo hembra estandard como se aprecia en la foto:
Una vez comprobado que tenemos el hardware listo, vamos a meternos en en tema, lo primero que tenemos que hacer es descargarnos la maravillosa libreria sdfat version 16bits
http://code.google.com/p/fat16lib/ la version original no funciona bien con el arduino 168 por falta de recursos,
una vez descargada extraemos la carpeta "Fat16" al directorio "libraries" del arduino ( ojo al descomprimir ya que no crea el directorio principal sino extrae todo al actual)
cd arduino-0022/libraries
unzip ../../fat16lib20101009.zip Fat16/*
Luego abrimos el IDE de Arduino y entramos en
"File - > Examples - > Fat16 -> fat16info" ( por ejemplo ).
seguidamente lo compilamos, subimos a la placa y nos conectamos al puerto serie ( 9600 baudios )
el codigo cargado espera a que se le envie un caracter para empezar, asi no perder detalle de lo que va haciendo sobre la SD:
y sucess!!! yejalll
Notas: en las shields comerciales se usan integrados (como el 74HC4050) que regulan el voltaje de 5 a 3.3 voltios de una manera mucho mas eficaz que con los divisores de voltaje y que ademas aumentan considerablemente la velocidad de lectura/escritura.