No Arduino e em
outros microcontroladores muitas vezes temos a necessidade de armazenar
informações por um longo período de tempo, elaborar gráficos após coleta de
dados, ou mesmo verificar quando um determinado sensor foi acionado.
Podemos fazer isso gravando os dados em um cartão de memória utilizando o Módulo Cartão SD com Arduino.
Antes de mais
nada não se assuste com a quantidade de pinos. São 16, mas usamos apenas 6 para
conexão ao Arduino. Olhando o módulo de frente, você pode usar tanto os pinos
da direita como os da esquerda, pois eles têm a mesma função. Observe a
imagem abaixo:
- MISO (Master IN Slave OUT) - Dados do Slave
para Master;
- MOSI (Master OUT Slave IN) - Dados do Master
para Slave;
- SCK (Serial Clock) - Clock de sincronização
para transmissão de dados entre o Master e Slave;
- CS - Seleção de Chip;
Conexão Módulo Cartão SD com Arduino
Para alimentação do módulo pelo Arduino, vamos utilizar apenas um dos
pinos GND, e também a alimentação de 5V.
Para os pinos de sinal, será necessário um divisor de tensão, já que o
módulo trabalha com níveis de sinal de 3.3V, assim não podemos ligá-lo
diretamente ao Arduino, que trabalha com 5V de sinal. Utilize um divisor
de tensão apenas nos pinos SCK, MOSI e CS. O pino MISO pode ser ligado
diretamente.
Para cálculo dos resistores
utilizados no divisor de tensão, utilize a calculadora deste link, informando os resistores que serão utilizados (R1 e R2), e também a tensão de entrada (5V). Depois disso, clique em CALCULAR para ver qual será o valor da tensão de
saída.
// Programa: Gravacao com modulo cartao SD
// Autor: FILIPEFLOP
#include <SdFat.h>
SdFat sdCard;
SdFile meuArquivo;
// Pino ligado ao CS do modulo
const
int
chipSelect = 4;
void
setup()
{
Serial.begin(9600);
// Define o pino do potenciometro como entrada
pinMode(A5, INPUT);
// Inicializa o modulo SD
if
(!sdCard.begin(chipSelect,SPI_HALF_SPEED))sdCard.initErrorHalt();
// Abre o arquivo LER_POT.TXT
if
(!meuArquivo.open(
"ler_pot.txt"
, O_RDWR | O_CREAT | O_AT_END))
{
sdCard.errorHalt(
"Erro na abertura do arquivo LER_POT.TXT!"
);
}
}
void
loop()
{
// Leitura da porta A5/Potenciometro
int
valor = analogRead(A5);
Serial.print(
"Leitura Potenciometro: "
);
Serial.println(valor);
// Grava dados do potenciometro em LER_POT.TXT
meuArquivo.print(
"Leitura Potenciometro: "
);
meuArquivo.println(valor);
if
(valor <= 5)
{
// Interrompe o processo e fecha o arquivo
Serial.println(
"Processo de gravacao interrompido. Retire o SD!"
);
meuArquivo.close();
while
(1) {}
}
delay(2000);
}
Carregue o programa acima e gire o potenciômetro para alterar o valor lido pela porta analógica. Para finalizar a gravação dos dados, gire o potenciômetro totalmente para a esquerda (valor 0).
Retire o cartão SD e abra, no computador, o arquivo LER_POT.TXT para verificar as informações que foram gravadas.
Fonte:
http://blog.filipeflop.com/modulos/cartao-sd-com-arduino.html
http://www.arduinoecia.com.br/2014/11/gravando-dados-arduino-cartao-sd.html
http://labdegaragem.com/profiles/blogs/tutorial-comunica-o-spi-serial-peripheral-interface-com-arduino
- Adaptado por Ríuler Mendes -
Nenhum comentário:
Postar um comentário