![]() |
|
SD shield DIY
Dopo aver costruito un piccolo sistema di monitoraggio casalingo della temperatura con telativo controllo ON/OFF per il condizionamento d'aria, ho avuto subito la necessità di dover salvare da qualche parte i dati raccolti per una successiva analisi e magari in futuro un grafico delle temperature loggate.
Ho cercato in giro per casa fra le cianfrusaglie che avevo ed ho trovato una micro sd da 1GB :P
Un pò piccola per lavorarci sù, mi sono detto... ed ho cercato l'adattatore che danno quando te la compri, che adatta da microsd a sd card standard.

Guardando in giro ho scoperto che le SD card si possono anche gestire con il protocollo SPI e che arduino dispone anche di librerie in grado di gestire il fylesystem FAT16.
Quindi ho Formattato la mia microsd con fat 16 ed ho creato all'interno un file di testo, tramite il pc (è meglio formattarla prima per prove future).
Trovato il pinout della SD mi sono messo all'opera:

| Pin # | Pin Name | SD Signal Function SD Mode | SPI Signal Function SPI Mode |
| 1 | DAT3/CS | Data Line 3 | Chip Select/Slave Select [SS] |
| 2 | CMD/DI | Command Line | Master Out/Slave In [MOSI] |
| 3 | VSS1 | Ground | Ground |
| 4 | Vdd | Voltage Supply [2.7v or 3.6v] | Voltage Supply [2.7v or 3.6v] |
| 5 | Clock | Clock | Clock [SCK] |
| 6 | Vss2 | Ground | Ground |
| 7 | DAT0/D0 | Data Line 0 | Master In Slave Out [MISO] |
| 8 | DAT1/IRQ | Data Line 1 | Unused or IRQ |
| 9 | DAT2/NC | Data Line 2 | Unused |
Ho staccato un pezzetto di connettore pinheader fino a creare un connettorino a 7 pin maschio.
Poi , facendo molta attenzione alla quantità di stagno ed a non tenere il saldatore per troppo tempo sui pin, ho saldato il connettore a 7 pin direttamente sull'adattatore per la microsd.

In modo da renderla breadboardabile :P
Adesso restava solo il problema dei livelli di tensione da adattare, perchè le sdcard lavorano a 3.3V.
Con dei piccoli partitori di tensione fatti con due resistenze da 2.2Kohm e 3.3KOhm ho abbassato i livelli a circa 3V.
Lo schema da seguire è quello che si vede qui sotto:

Come si vede dallo schema la micro sd card non và alimentata a 5v ma bisogna usare il pin 3.3v su arduino per alimentarla correttamente.
Tutti i pin usati della card sono abbassati a 3V tramite partitori di tensione tranne il 7 che corrisponde al dataout e che và direttamente al pin 12 di arduino.

Il bello di questo sistema è che si usa l'adattatore come socket per la microsd, e la card mantiene ancora la possibilità di essere estratta e letta su un altro dispositivo (pc , telefono cellulare ecc...).


Adesso che ho costruito l'interfaccia, non resta che passare alle prove con il codice e arduino .
Per la prova ho usato una libreria chiamata TinyFat scaricabile dal sito del suo creatore http://henningkarlsen.com/electronics/download.php?f=tinyFAT.rar che permette , semplicemente caricando l'esempio chiamato demo all in one, di avere informazioni sul filesystem,
listare i files presenti sulla card, creare un file sulla card, cancellare un file dumpare il contenuto di un file in formato testo ed in formato binario.
Gli esempi inclusi nella libreria sono abbastanza esplicativi, provateli, sopratutto demo all in one.
Il giochino stato testato con una microSD da 1GB formattata con filesystem tipo FAT16, ma non detto che non funzioni anche con memorie di capacità superiori.
Per chi fosse interessato ad approfondire l'argomento dell'uso delle sd card qui trovate il PDF con le specifiche emanate dall'organizzazione che gestisce il consorzio sd card.
Ciao da BrainBooster
Ciao divertitevi!
