Gravar informações em um SD Card é muito importante quando, trabalhando com sensores, temos a necessidade de armazenar os dados para consulta posterior, em situações onde não podemos monitorar o circuito todo o tempo.

Pode ser quando desejamos consultar a variação de temperatura de um ambiente ou então verificar quando um determinado alarme foi acionado. Para casos assim podemos gravar os dados do Arduino em um cartão, utilizando o módulo cartão SD:

gravando dados no cartão SD 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 tem a mesma  função. Observe a imagem abaixo:

Módulo SD - Pinos

Com relação aos cartões SD, eu testei 3  modelos de cartão no módulo. Sem citar nomes, o cartão de “marca” não funcionou de jeito nenhum, enquanto os cartões genéricos funcionaram perfeitamente. Todos  foram formatados da mesma maneira, e testados com FAT e FAT32. O módulo funcionou com cartões pequenos, de 512 Mb, e também com cartões de maior capacidade, como os de 8 Gb.

Conectando o módulo SD Card cartão SD no Arduino

O módulo SD se conecta ao Arduino utilizando a interface SPI (arduino.cc/en/Reference/SPI), no nosso exemplo os pinos 4, 11, 12 e 13. A alimentação do módulo é feita por meio do pino 5V  do Arduino.

Atenção com os pinos de sinal, pois eles trabalham com nível de sinal de 3.3V, de  maneira semelhante aos módulos bluetooth que eu já mostrei aqui no site.

Utilize  a calculadora desse link  para calcular o valor dos resistores que você  vai utilizar para montar o divisor de tensão. Eu usei resistores de 220 e 330 ohms, que forneceram um  nível de sinal de aproximadamente 3V, suficiente para os testes:

SD Arduino

Gravando dados no cartão SD

No circuito acima eu liguei um push-button à porta digital 3 para demonstrar como os dados são gravados no cartão SD. A cada toque no botão, um contador é incrementado e esse valor é gravado no cartão com o seguinte formato:

Contador: <valor>

O programa utiliza a biblioteca SD, que já está embutida na IDE do Arduino. No inicio do programa é feito um pequeno teste para verificar se as conexões estão corretas e se o cartão SD está sendo reconhecido. Caso esteja tudo ok, um loop verifica se o botão foi pressionado e em caso afirmativo, grava esse dado no cartão SD junto com o valor atual do contador:

	
// Programa: Teste escrita cartao SD
// Autor: Arduino e Cia
// Baseado no arquivo exemplo da biblioteca SD Card Arduino

// Carrega a biblioteca SD
#include <SD.h>

Sd2Card SDcard;
SdVolume volume;

// Pino do Arduino conectado ao pino CS do modulo
const int chipSelect = 4;  
// Pino do Arduino conectado ao push-button
int pinobotao = 3;
int contador = 0;

void setup()
{
  // Define o pino do push-button como entrada
  pinMode(pinobotao, INPUT);
  Serial.begin(9600);
  //Inicia a comunicacao com o modulo SD
  if (!SD.begin(chipSelect)) 
  {
    Serial.println("Falha ao acessar o cartao !");
    Serial.println("Verifique o cartao/conexoes e reinicie o Arduino...");
    return;
  }
  Serial.println("Cartao iniciado corretamente !");
  Serial.println("Aguardando acionamento do push-button...");
  Serial.println();
}

void loop() 
{
  int valor = digitalRead(pinobotao);
  // Verifica se o push-button foi acionado
  if (valor == 1)
  {
    // Delay caso o botão continue pressionado
    while(digitalRead(pinobotao) == 1)
    {
      delay(100);
    }
    // Incrementa o contador e envia os dados para o
    // Serial monitor
    contador=contador++;
    Serial.print("Botao pressionado. Contador : ");
    Serial.println(contador);
  
    // Abre o arquivo arquivo.txt do cartao SD
    File dataFile = SD.open("arquivo.txt", FILE_WRITE);
    // Grava os dados no arquivo
    if (dataFile) 
    {
      dataFile.print("Contador : ");
      dataFile.println(contador);
      dataFile.close();
    }  
    else 
    {
      // Mensagem de erro caso ocorra algum problema
      // na abertura do arquivo
      Serial.println("Erro ao abrir arquivo.txt !");
    } 
  }
}

Após pressionar o push-button algumas vezes, coloque o cartão SD no seu computador, e abra o arquivo ARQUIVO.TXT. Você terá um arquivo nesse formato:

Gostou deste post de SD Card Arduino? Use os dados do cartão SD em uma planilha e gere gráficos, por exemplo. Confira no post Como importar dados do datalogger em uma planilha.

Avalie este post!