LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: brunomartins em 04 de Maio de 2009, 13:08

Título: SD card read/write + Arduino
Enviado por: brunomartins em 04 de Maio de 2009, 13:08
Pessoal, estou tentando implementar o código em do link abaixo:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1206874649 (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1206874649)

Mas, como tenho pouca experiência ainda estou encontrando um pouco de dificuladade de montar o circuito para o SD.

Alguém poderia me ajudar?

Explicando o circuito e o código?

Obrigado.

Achei muito bom esse código, queria muito conseguir implementar...
Título: Re:SD card read/write + Arduino
Enviado por: TigPT em 04 de Maio de 2009, 13:31
Qual a dificuldade mais concretamente?

Já arranjaste um suporte para o cartão de memória, assim como as respectivas resistências de 1.8K e de 3.3K para poderes fazer a montagem!?
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 04 de Maio de 2009, 18:43
Caro amigo,

Já comprei sim o suporte, e as resistências..
eu só quero ter certeza do circuito a ser montado..
pelo que estudei o cartão SD é sensível e queima com facilidade...

Gostaria que alguém redesenhasse o circuito explicando se possível o passo a passo..

Pelo que eu entendi precisa de uma saída de 3,3v, mas o arduino já tem uma saída assim, para que as resistências?

fiquei meio perdido, acredito que não esteja entendendo o que o amigo fez no trabalho dele...
Título: Re:SD card read/write + Arduino
Enviado por: TigPT em 05 de Maio de 2009, 00:29
O arduino disponibiliza 3.3V mas contudo as saídas dos pins digitais dão 5V, e o cartão funciona a 3.3V, assim cada sinal de dados entro um dispositivo e o outro tem que ser convertido para os 3.3V para evitar que o arduino queime o cartão. Quanto ao pin DO (Data Out) não necessita de conversão, porque mesmo o cartão a dar 0~3.3V, o Arduino consegue interpretar como sendo 0~5V.

Dai as resistências para baixar a tensão de saída do Arduino antes de entrar no cartão.
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 05 de Maio de 2009, 12:50
Thiago, obrigado. Consegui entender. Vou tentar montar o circuito e se conseguir tudo certo posto aqui no fórum pro pessoal.

Você conhece sobre SPI? Andei estudando e vou ter que implementar para poder fazer o leitor SD.
Título: Re:SD card read/write + Arduino
Enviado por: TigPT em 05 de Maio de 2009, 14:39
De nada.. e é Tiago.

Se utilizares as pesquisas encontras informação como por exemplo este post:
http://lusorobotica.com/index.php/topic,695.0.html (http://lusorobotica.com/index.php/topic,695.0.html)
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 13 de Maio de 2009, 18:57
Alguém sabe algum site que vende essa placa para SD?

Não vou ter tempo de implementar e so me resta comprar...
Título: Re:SD card read/write + Arduino
Enviado por: metRo_ em 13 de Maio de 2009, 19:47
http://www.libelium.com/tienda/catalog/product_info.php?cPath=21&products_id=66 (http://www.libelium.com/tienda/catalog/product_info.php?cPath=21&products_id=66)
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 14 de Maio de 2009, 12:29
Eles entregam no Brasil?
Título: Re:SD card read/write + Arduino
Enviado por: delphi em 14 de Maio de 2009, 14:08
http://www.futurlec.com/Mini_SC.shtml (http://www.futurlec.com/Mini_SC.shtml)

Se alguem estiver a pensar encomendar algum avise que tambem estou interessado, ou se encontrarem algum mais barato.

Por outro lado, não sei que mais vale comprar um desses leitores de cartões usb baratuxos e o desmontar todo...



Alguém sabe algum site que vende essa placa para SD?

Não vou ter tempo de implementar e so me resta comprar...
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 19 de Maio de 2009, 13:17
Alguém já comprou por esse site?

http://www.futurlec.com/ (http://www.futurlec.com/)

Queria saber se ele é confiável...
Título: Re:SD card read/write + Arduino
Enviado por: jagsilva em 20 de Maio de 2009, 03:45
Boas.
Já comprei no futurlec e nao tive problemas.

a sparkfun tambem tem.

jaime
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 25 de Maio de 2009, 13:12
Fiz uma compra la nesse final de semana...
agora estou so aguardando chegar...
 :D
Título: Re:SD card read/write + Arduino
Enviado por: brunomartins em 20 de Junho de 2009, 21:37
pessoal alguem tentou implementar esse codigo?

o meu fika dando erro aparecendo a msg de erro do progrma..ou intao fika repetindo o menu direto
sera alguem tem alguma ideia ai?
obrigado

o codigo ta ai

Código: [Seleccione]
#include <sd-reader_config.h>
#include <sd_raw.h>
#include <sd_raw_config.h>





int print_disk_info();
int sample();
int readDisk();

byte incomingByte;
void printWelcome();
long int address;
byte tempBytes[2];


void setup()
{
  
  Serial.begin(9600);
  delay(1000);

  printWelcome();
  if(!sd_raw_init())
  {
     Serial.println("MMC/SD initialization failed");      
  }
  print_disk_info();
}



void loop()
{
    int i;    
    
    if(Serial.available()>0)
    {
         incomingByte=Serial.read();
    
       switch(incomingByte)
       {
           case 114:
                     readDisk();
                     break;
           case 115:
                     sample();
                     break;
           default:
                     break;
       }
    }    
}

int sample()
{
    int i,j;
    int temp;
    byte low;
    byte high;
    byte inByte;
    
    Serial.println();
    Serial.println();
    Serial.println("Sampling..");
    for(i=0;i<500;i=i+2)
    {
        if(Serial.available()>0)
        {
            inByte=Serial.read();
            if(inByte==113) return 0;
        }
        temp=analogRead(0);
        Serial.print(temp,DEC);
        Serial.print(" ");
        
        //Convert int to 2 bytes
        low=temp&0xFF;
        high=temp>>8;
       // Serial.print(temp,DEC);
        //Serial.print(low,DEC);
        //Serial.print(high,DEC);
    
        tempBytes[0]=low;
        tempBytes[1]=high;
        
        if(!sd_raw_write(i,tempBytes,2))
        {
          Serial.print("Write error");
        }
        //sd_raw_sync();
        delay(5000);
        
  Serial.println();
      
    }
    
    return 1;
}


int readDisk()
{
    byte low;
    byte high;
    byte info[2];
    int i;
    int  result;
    Serial.println();
    for(i=0;i<50;i=i+2)
    {
        sd_raw_read(i,info,2);
  
        //Serial.print(info[0],DEC);
        //Serial.print(" ");
        //Serial.print(info[1],DEC);
        low=info[0];
        high=info[1];
        result=high<<8;
        //result<<8;
        Serial.print(" ");
        Serial.print(result+low,DEC);
        Serial.print(" ");
    }
  
}

void printWelcome()
{
    Serial.println("------------------------");
    Serial.println("Data sampling system");
    Serial.println("send r to read disk");
    Serial.println("send s to start sampling");
    Serial.println("send q to stop sampling");
    Serial.println("Ready.....");
    Serial.println("-------------------------");
}


int print_disk_info()
{
 

    struct sd_raw_info disk_info;
    if(!sd_raw_get_info(&disk_info))
    {
        return 0;
    }

    
    Serial.println();
    Serial.print("rev:    ");
    Serial.print(disk_info.revision,HEX);
    Serial.println();
    Serial.print("serial: 0x");
    Serial.print(disk_info.serial,HEX);
    Serial.println();
    Serial.print("date:   ");
    Serial.print(disk_info.manufacturing_month,DEC);
    Serial.println();
    Serial.print(disk_info.manufacturing_year,DEC);
    Serial.println();
    Serial.print("size:   ");
    Serial.print(disk_info.capacity,DEC);
    Serial.println();
    Serial.print("copy:   ");
    Serial.print(disk_info.flag_copy,DEC);
    Serial.println();
    Serial.print("wr.pr.: ");
    Serial.print(disk_info.flag_write_protect_temp,DEC);
    Serial.print('/');
    Serial.print(disk_info.flag_write_protect,DEC);
    Serial.println();
    Serial.print("format: ");
    Serial.print(disk_info.format,DEC);
    Serial.println();
    Serial.print("free:   ");
  
    return 1;
}


vlw a ajuda
Título: Re: SD card read/write + Arduino
Enviado por: joaopedrocmp em 09 de Janeiro de 2012, 01:29
Desculpem la reabrir este tópico.

Arranjei um leitor de cartões estragado e decidi fazer uma board de teste, o layout é o seguinte:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg688.imageshack.us%2Fimg688%2F3971%2Flayoutiy.jpg&hash=3efc818bb837c2a90da61d279f951c37a0bdfa07) (http://imageshack.us/photo/my-images/688/layoutiy.jpg/)

ja experimentei varios pinos e varias libraries ,mas todas davam erro ao iniciar.

Alguém tem uma com o respetivo wiring que tenha experimentado e funcionado?
Título: Re: SD card read/write + Arduino
Enviado por: CBX em 09 de Janeiro de 2012, 15:06
já experimentaste a "oficial" do arduino, está nos exemplos

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg441.imageshack.us%2Fimg441%2F2391%2Fschematicuo7.jpg&hash=b53c88d02452968bc7f805be1a6db413562f1ec5)
Título: Re: SD card read/write + Arduino
Enviado por: joaopedrocmp em 09 de Janeiro de 2012, 17:05
sim, o layout que fiz foi feito por esse eschematic, mas quando corro o programa, diz que nao consegue inicializar.

Ja experimentei com 3 cartoes diferentes, um sd com 4Gb. um micro com adaptador para sd com 512Mb, e um igual de 4Gb.

Ja verifiquei a continuidade dos pinos do arduino para a board do sd.

e nada....
Título: Re: SD card read/write + Arduino
Enviado por: joaopedrocmp em 10 de Janeiro de 2012, 23:49
Boas, ja resolvi a questão, havia um pino que estava mal soldado :P

Agora 2 novas questões.

1- Depois de uns exemplos para ver como funcionava a biblioteca, decidi criar um ficheiro com o arduino no cartão e depois ler no pc, mas o ficheiro nao aparece, mas se o ler com o arduino ele está la. Lol.

Alguem sabe o que se passa?

2- Criei um txt no pc, chamado pass.txt , e continha o num 101010.

ao ler o conteudo do ficheiro com o arduino mostra-me 49.

O que será?