blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Aplicações
  • Descrição do projeto
  • Botando pra rodar!
  • Considerações finais
  • Sobre o Autor
Componentes Eletronicos

Gravação de cartão micro SD com arduíno – Faça seu Datalogger!

Eletrogate 28 de julho de 2017Atualizado em: 16 maio 202210 min

Introdução

Hoje vamos aprender a gravar dados e ler informações usando um cartão Micro SD com Arduino. Vários shields para cartões SD estão disponíveis no mercado para conectar esses práticos cartões de memória ao Arduino. Nesse artigo, vamos usar o Micro SD Card Adapter conectado a um Arduino Uno.

O cartão micro SD com Arduino permite o desenvolvimento de dataloggers. Dispositivos que armazenam dados coletados de sensores e outros informações para análise e construção de gráficos.

Os cartões SD e micro SD diferem apenas em tamanho, como o próprio nome sugere. Ambos são cartões com memórias Flash integradas. O tamanho da memória varia muito e hoje já é possível encontrar cartões com dezenas de GB. Para conhecer mais sobre a memória Flash e sua história, acesse esse artigo sobre história das mídias.

A figura abaixo mostra o SD card adapter que vamos usar em nosso projeto. Também existem shields específicos de datalogger integrados com RTC(Real Time Clock) para aplicações de telemetria e monitoramento de sensores.

Datalogger com micro SD

Faça seu datalogger com o módulo Micro SD

O  módulo é eficiente e compacto. Além de prático de usar e integrar em sistemas de hardware e controle, foi desenvolvido tendo em vista otimizar o trabalho de projetistas, estudantes e hobistas na construção de sistemas de datalogger e armazenamento de dados.

Basicamente, o módulo possui uma entrada para cartões Micro SD  com todos os 6 pinos de interface disponibilizados para comunicação com Arduino. Por meio dos pinos SPI(protocolo de comunicação usado para ler e escrever dados na memória Flash do cartão), podemos ligar o Arduino e enviar informações para serem armazenadas. Também é possível fazer procedimentos de leitura para apresentar os dados gravados em mostradores como displays ou na interface serial.

A interface SPI que permite ler e gravar dados na memória Flash é baseada em 6 canais:

 

PinoDescriçãoOutros nomes
CSSlave Select SS, nCS, nSS
SCKSystem ClockSCLK, CLK
MOSIMaster Our Slave InSDO, DO, SO
MISOMaster In Slave OutSDI, DI,SI
VCCAlimentação positiva 
GNDTerra 

 

 

 

 

Vista superior do módulo micro SD

Vista superior do módulo micro SD

As especificações do módulo são as seguintes:

  • Comunicação SPI;
  • Lê e Grava em FAT32;
  • Tensão de Alimentação: 4,5V à 5V;
  • Dimensões (CxLxA): 42x24x3,5mm;

Pelo fato de o cartão SD poder ser retirado e inserido sempre que necessário para transferir os arquivos para o computador e plotar gráficos para análise, o módulo é ideal para desenvolvimento de dataloggers.


Aplicações

As aplicações de dataloggers são diversas. Qualquer sistema no qual seja necessário armazenar dados para análise futura são candidatos a receberam a integração de um datalogger. Dentre as aplicações, podemos citar:

  • Telemetria e monitoramento de drones;
  • Telemetria e monitoramento de protótipos veículares;
  • Monitoramento de sensores e máquinas para manutenção preditiva e preventiva;
  • Monitoramento de consume de energia;
  • Qualquer outro sistema que exija um datalogger;

Descrição do projeto

Para este projeto, vamos desenvolver o seguinte:

” Fazer a leitura de um sensor ultrassônico e gravar as leituras de distâncias(entre o sensor e um obstáculo) fornecidas pelo sensor em um cartão micro SD”

Aspectos de Hardware

Do ponto de vista do hardware, vamos precisar dos seguintes materiais:

  • Protoboard;
  • Sensor Ultrassônico HC-SR04;
  • Arduino UNO;
  • Sensor de movimento e presença PIR;
  • 3 Resistores de 3K3;
  • 3 Resistores de 2k2;
  • Jumpers para conexão;

Um ponto importante é que apesar de a alimentação do Módulo adaptador ser 5V, os sinais MISO, MOSI e SCK são de 3.3V. Ou seja, é necessário utilizar um CI para converter os níveis lógicos, ou então, usar três divisores de tensão para fazer abaixar os sinais de 5V do Arduino para 3.3V do lado do cartão SD. A solução com divisores de tensão, por ser mais simples e prática será a adotada em nosso projeto.

Dito isso e de posse de todos os componentes, podemos montar o circuito conforme a figura abaixo:

Caso ainda não conheça o funcionamento e implementação de projetos com sensores ultrassônicos, visite esse post exclusivo e saiba tudo sobre o sensor HC-SR04 e como fazer projetos com ele.

 

Aspectos de Software

 

Vamos entender o software desenvolvido que faz a gravação no cartão. Veja o código abaixo:

#include <SPI.h>
#include <SD.h>
#include <stdlib.h>

//Variaveis para cartao SD
const int CS = 4;
char dataString[7];
File meuArquivo;

//Variaveis para sensor ultrassonico
int PinTrigger = 3;//Pino usado para disparar os pulsos do sensor
int PinEcho = 2;//pino usado para ler a saida do sensor
float TempoEcho=0;
const float VelocidadeSom_mpors = 340;//em metros por segundo
const float VelocidadeSom_mporus = 0.000340;//em metros por microsegundo
  
void setup()
{
 
   // configura pino de Trigger como saída e inicializa com nivel baixo
  pinMode(PinTrigger,OUTPUT);
  digitalWrite(PinTrigger,LOW); 
  pinMode(PinEcho,INPUT);// configura pino ECHO como entrada
  pinMode(CS, OUTPUT);
  
  Serial.begin(9600);
  delay(100);
  
  Serial.print("Inicializando cartao SD...");
  if (!SD.begin(CS)) 
  {
    Serial.println("Falha na Inicializacao!");
    return;
  }
  Serial.println("Inicializacao terminada");

}


void loop()
{
  float val;

   //Envia pulso para o disparar o sensor
   DisparaPulsoUltrassonico();
   //Mede o tempo de duracao do sinal no pino de leitura(us)
   TempoEcho = pulseIn(PinEcho, HIGH);
   val = CalculaDistancia(TempoEcho);
   //adiciona a ultima leitura a string de gravacao
   dtostrf(val,5,2,dataString);  
   
  if (meuArquivo = SD.open("log.txt",FILE_WRITE)) 
  {
    Serial.println("Gravou");
    Serial.println(val);
    //Escreve no cartao SD por meio do objeto meuArquivo 
    meuArquivo.println(dataString);
    meuArquivo.close();
  } 
  else 
  {
    // se o arquivo nao abrir, mostra msg de erro
    Serial.println("Erro ao abrir log.txt");
  }
  
  delay(2000);
}

//Funcao para enviar o pulso de trigger
void DisparaPulsoUltrassonico()
{
 // Para fazer o HC-SR04 enviar um pulso ultrassonico, nos temos
 // que enviar para o pino de trigger um sinal de nivel alto
 // com pelo menos 10us de duracao
 digitalWrite(PinTrigger, HIGH);
 delayMicroseconds(10);
 digitalWrite(PinTrigger, LOW);
 }
 
 //Funcao para calcular a distancia em metros
 float CalculaDistancia(float tempo_us)
 {  
   return ( (tempo_us* VelocidadeSom_mporus) / 2 );
 }

Declaração de variáveis e função void setup()

Para esse projeto precisamos adicionar três bibliotecas:

  • SPI.h
  • SD.h
  • STDLIB.h

As duas primeiras são para gravar o cartão SD. A última é para podermos utilizar a função dtostr(), que converte um float para uma string. Para gravar o cartão declaramos um array de caracteres e um objeto do tipo FILE, que chamamos de meuArquivo.

As demais variáveis são relativas ao sensor ultrassônico e às configurações de IOs. Para conhecer as funções e como funciona a parte do software relativo ao sensor ultrassônico, acesse esse artigo.

Na função void Setup() nós inicializamos a porta serial e o cartão SD por meio da função SD.begin(CS), em que CS é o pino no qual está ligado o sinal de ChipSelect do cartão.

Função void loop()

Na função void loop() o procedimento consiste em monitorar a saída do sensor HC-SR04, ler os seus valores e salvá-los no cartão SD em um arquivo .txt com o nome log.txt. Após ler o sensor nós convertemos o valor para um conjunto de caracteres por meio da função dtostr() e logo em seguida nós abrimos o arquivo log.txt com a função SD.Open() e escrevemos a string no arquivo por meio da função meuArquivo.println(). Após o procedimento de escrita nós fechamos o arquivo com a função SD.close().


Botando pra rodar!

Veja como ficou o resultado final:

Montagem Completa 2

Montagem Completa 2

Montagem Completa 1

Montagem Completa 1

Arquivo log.txt:

Arquivo log.txt

Arquivo log.txt

Saída serial

Saída serial

Quer saber mais sobre Arduino ?

Placsa Arduino | Arduino | Case Arduino | Placa Arduino | Kit Arduino | Sensores Arduino


Considerações finais

Neste exemplo nós fizemos um simples datalogger para monitorar os sinais de um sensor ultrassônico. Todas as leituras do sensor, que foram feitas a uma taxa de 2 segundos, são gravadas no cartão micro SD por meio do protocolo SPI. O adaptador pode ser facilmente integrado em qualquer sistema eletrônico. O cartão micro SD pode ser facilmente retirado e levado para qualquer outro lugar para que os dados sejam usados para plotar gráficos e construir tabelas.

Não se esqueça de aproveitar esse artigo e ler o post sobre sensor ultrassônico. Até a próxima!


Sobre o Autor


Vitor Vidal

Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica, literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de controle, desenvolvimento de projetos eletrônicos e sua estante de livros.


Eletrogate

28 de julho de 2017 Atualizado em: 16 maio 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Projetos

Radar/Sonar Ultrassônico para seus Projetos

Eletrogate19 de maio de 2022

Neste projeto, iremos construir um Radar (‘Radio Detection And Ranging’) ultrassônico com a Arduino e o software Processing. Iremos usar o conhecimento em programação com o sensor ultrassônico no Arduino obtido no post “Sensor Ultrassônico HC-SR04 com Arduino”.

Projetos

Radar/Sonar Ultrassônico para seus Projetos

Eletrogate19 de maio de 2022

Neste projeto, iremos construir um Radar (‘Radio Detection And Ranging’) ultrassônico com a Arduino e o software Processing. Iremos usar o conhecimento em programação com o sensor ultrassônico no Arduino obtido no post “Sensor Ultrassônico HC-SR04 com Arduino”.

Projetos

Levitação Ultrassônica com Arduino

Eletrogate17 de maio de 2022

Não é nenhuma varinha mágica ou encantamento como “Wingardium Leviosa” que você vai precisar para esse projeto. Com um Arduino, um driver de motor ponte H e um sensor de distância ultrassônico HC-SR04 você consegue criar uma máquina capaz de fazer objetos levitarem.

Projetos

Levitação Ultrassônica com Arduino

Eletrogate17 de maio de 2022

Não é nenhuma varinha mágica ou encantamento como “Wingardium Leviosa” que você vai precisar para esse projeto. Com um Arduino, um driver de motor ponte H e um sensor de distância ultrassônico HC-SR04 você consegue criar uma máquina capaz de fazer objetos levitarem.

Modelagem 3D

Conheça o Tinkercad

Eletrogate12 de maio de 2022

Se você já pensou em criar um projeto eletrônico, mas não tinha os componentes necessários e queria fazer um teste antes, este post foi feito pra você! Neste post, iremos conhecer a plataforma Tinkercad. Através dela, você poderá testar projetos, circuitos eletrônicos, códigos, criar designs 3D e muito mais.

Modelagem 3D

Conheça o Tinkercad

Eletrogate12 de maio de 2022

Se você já pensou em criar um projeto eletrônico, mas não tinha os componentes necessários e queria fazer um teste antes, este post foi feito pra você! Neste post, iremos conhecer a plataforma Tinkercad. Através dela, você poderá testar projetos, circuitos eletrônicos, códigos, criar designs 3D e muito mais.

Tutoriais

Simulando ESP32, Arduino e Raspberry pi com o Wokwi

Eletrogate10 de maio de 2022 Atualizado em: 17 maio 2022

O Wokwi.com está aqui para ajudá-lo! Ele é uma ferramenta gratuita de simulação direto no navegador, em que você pode escrever seus próprios códigos e usar os microcontroladores com outros componentes, como LEDs, botões, displays (de 7 segmentos a OLED’s), potenciômetros e muitos outros.

Tutoriais

Simulando ESP32, Arduino e Raspberry pi com o Wokwi

Eletrogate10 de maio de 2022 Atualizado em: 17 maio 2022

O Wokwi.com está aqui para ajudá-lo! Ele é uma ferramenta gratuita de simulação direto no navegador, em que você pode escrever seus próprios códigos e usar os microcontroladores com outros componentes, como LEDs, botões, displays (de 7 segmentos a OLED’s), potenciômetros e muitos outros.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

contato@eletrogate.com


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2022 - Todos os direitos reservados. Termos de uso e Política de privacidade.