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
-
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...
-
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!?
-
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...
-
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.
-
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.
-
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)
-
Alguém sabe algum site que vende essa placa para SD?
Não vou ter tempo de implementar e so me resta comprar...
-
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)
-
Eles entregam no Brasil?
-
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...
-
Alguém já comprou por esse site?
http://www.futurlec.com/ (http://www.futurlec.com/)
Queria saber se ele é confiável...
-
Boas.
Já comprei no futurlec e nao tive problemas.
a sparkfun tambem tem.
jaime
-
Fiz uma compra la nesse final de semana...
agora estou so aguardando chegar...
:D
-
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
#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
-
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?
-
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)
-
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....
-
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á?