Brainbooster
Salvare i dati su microSD card senza SDshield
Tutorials -
Mercoledì 20 Luglio 2011 08:00
Scritto da Brainbooster

 

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.

SD_E_ADATT

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:

                                                                                           Secure_Digital_Card

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.

socket

 

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:

 

Connessioni

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.

 

100_0991

 

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...).

100_0988100_0989

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!

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com · Via Savona 123 20146 Milano MI · PI 06977550968 · Codice fiscale MTLGNN86S09F205F

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi