quinta-feira, 5 de maio de 2016

Gravando dados do Arduino no Cartão SD



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