Introduction: Leitor De MicroSD Caseiro Para Arduino

Texto original em Museu OldBits.

Estou trabalhando em dois projetos paralelos e inter-relacionados: o NavGATe, que é um sistema eletrônico de guia para que pessoas com deficiência visual possam circular de forma segura em locais públicos, e meu doutorado, que trata justamente da interação das pessoas com deficiência visual e interfaces eletrônicas de guia. Minha dissertação de de mestrado também trata deste tema: USP - Princípios para o design de audionavegação em ambientes públicos para pessoas com deficiência visual.

Pois bem, para que fosse possível coletar informações para a pesquisa sem interferências durante as pesquisas de campo com voluntários utilizando o NavGATe em edifícios e em estações do Metrô de São Paulo, tive que projetar um transmissor específico do NavGATe que fica comigo durante toda a observação. Para este projeto utilizei o microcontrolador ATMEGA328, da fabricante Atmel, e precisei fazer com que o microcontrolador lesse um cartão de memória MicroSD.

O cartão MicroSD é um componente que utiliza uma baixa tensão de trabalho, de 3,3v, 70% da tensão de alimentação comum em aparelhos digitais, que é de 5v. Se o cartão for ligado em 5v, ele queima, sem piedade! Assim, tamto a alimentação quanto os sinais precisam ser convertidos de 5v para 3,3v. Para esta tarefa, existem no mercado de módulos eletrônicos para hobbystas um leitor de cartões MicroSD. No entanto, eu estava no final de semana, e não possuía acesso à compra emergencial deste componente. Assim, resolvi construir um, e fui verificar se tinha alguma coisa que poderia fazer com meus componentes eletrônicos. E voilá! Tinha sim, duas formas de fazer um adaptador de cartão de memória MicroSD para incorporar ao receptor do NavGATe. Resolvi então compartilhar esta rápida construção com vocês.

Step 1: Preparando Componentes

Primeiro, a lista de peças que usei, que não é nada absurdo:

- 1 circuito integrado regulador 78L33;

- 1 capacitor cerâmico de 100nF;

- 1 módulo "level converter" ($0.28 no AliExpress http://s.aliexpress.com/JJzuABjI);

- 1 adaptador SD para MicroSD;

- 1 "head" macho de 6 pinos (tem um de 8 na foto, quebrei ele para 6 pinos).

Os componentes estão na foto 1.

A título de adaptação, pode-se substituir o módulo "level conveter" por um circuito integrado CD4050B, com algumas pequenas modificações na conexão. Tratarei desta opção no futuro.

A utilização do módulo "level converter" ou do CI CD4050B, ambos em conjunto com o regulador 78L33, é mandatário neste circuido, pois a memória MicroSD trabalha a 3,3v, e a maioria dos circuitos trabalha a 5 ou 12v. Muitas "versões" desta adaptação encontradas pela Internet são feitas por amadores que colocam divisores de tensão com resistores. Não façam isso, nunca, pois os resistores, por serem componentes passivos, não regulam a tensão de saía, e picos de energia passam direto por eles, queimando o cartão.

Step 2: Ligando Os Componentes

Para este projeto eu resolvi universalizar o módulo que construí, então coloquei os "heads" macho para encaixar em diversas plataformas de prototipagem, como o Arduino, o Raspberry PI e o PIC (e até o antigo BasicStamp, se existir ainda alguém que o utiliza). A conexão e soldagem dos pinos é direta, no caso de usar o módulo "level converter", e pode ser vista nas fotos 3 e 4.

Conexões:

Com os contatos do adaptador de memória à mostra e para baixo, veremos o chanfro à direita. Nesta posição, a contagem de contatos fica, de cima para baixo, 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 9 (o pino "9" é o pino recuado). Desta forma, ligue o "level converter" assim:

____________________________

| "Level converter" | Adaptador SD |

| ......... LV4 .......... | ......... 7 .......... |

| ......... LV3 .......... | ......... 5 .......... |

| ......... GND ........ | ......... 4 .......... |

| ... LV (LOW V) ... | ......... 3 .......... |

| ......... LV2 .......... | ......... 2 .......... |

| ......... LV1 .......... | ......... 1 .......... |

-----------------------------------------------


Muito cuidado ao soldar os contatos do adaptador: o corpo dele é de plástico, muito frágil. Tente não derreter tudo!

Note que o contato 8, o contato 6 e o contato 9 do adaptador MicroSD ficam sem conexão.

O que demanda de atenção ao ligar é o regulador 78L33: com o chanfro para baixo, a "perninha" esquerda é tensão de entrada, vai ligado ao HV do "level converter". A "perninha" do meio é GND, vai ligado ao GND do "level converter" e a "perninha" direita é a tensão de saída, vai ligada ao "LV" do "level converter". Em paralelo com as "perninhas" central e direita vai o capacitor de 100nF, (note que eu soldei na parte de baixo do conjunto, na foto 2) para que o regulador não oscile e destrua o cartão de memória. Por fim, solde o head macho de 6 pinos aos contatos HV1, HV2, GND, VH, HV3 e HV4 do "level converter".

Olhando o conjunto na foto 3 acima, contando os pinos de cima para baixo, fica assim:


1 - MISO (data out) - Saída de dados serial

2 - CLK (ou SCK) - clock

3 - GND (-) - Negativo da alimentação

4 - VCC (+) - Alimentação (5 a 12v)

5 - MOSI (data in) - Entrada de dados serial

6 - CS (Chip select) - Habilita leitura e gravação de dados

Step 3: Tudo Pronto!

Nesta conexão, a saída 10 do Arduino deve ser programada para se manter constantemente em baixo (LOW), para simular a alimentação negativa para o conversor, enquanto que a saída 11 deve ser programada para se manter em cima (HIGH), para simular a alimentação do cartão, o que pode ser programado de forma constante ou somente quando for necessário escrever ou ler do cartão, economizando energia.

A programação fica para cada um. Para Arduino, existe uma biblioteca que facilita muito o uso do cartão SD e que pode ser utilizado para este adaptador: é a biblioteca SD Library. Se mesmo assim houverem dúvidas, eu estou a disposição, basta perguntar nos comentários.

Abraços, e boa diversão!

Texto original em Museu OldBits.

Circuits Contest 2016

Participated in the
Circuits Contest 2016