Escolha uma Página

Datalogger com cartão SD. Registre: temperatura, umidade, luminosidade e tensão)

30 out - 2020

Neste post, vamos aprender a como montar datalogger, para registrar em um cartão SD, temperatura, umidade relativa, tensão e nível de luminosidade. Esse tipo de dispositivo é extremamente útil para fazer análises de fenômenos que dependem do tempo. Por exemplo, podemos registrar a variação de temperatura e umidade relativa do ambiente ao longo de um determinado período, e então, posteriormente, fazer a análise dos dados em uma planilha eletrônica.

Observe que é possível registrar dados de qualquer sensor conectado ao ser Arduino, portanto você pode adaptar o projeto deste artigo para inúmeras aplicações diferentes.

Materiais necessários

 

Diagrama elétrico do datalogger

Observe o diagrama da figura 1, faça a sua montagem conforme a ilustração, lembre-se de  checar todas a conexões elétricas.

 

Figura 1: Montagem em protoboard.

 

Funcionamento do datalogger

O protótipo de datalogger tem por função registrar os dados provenientes dos sensores ao longo do tempo. O programa é dividido em duas funções, a primeira função lê os dados dos sensores, já a segunda função, é responsável por passar os dados dos sensores para um arquivo no cartão SD.

Um parâmetro muito importante em um datalogger é a taxa de atualização, ou seja, o intervalo de tempo entre cada leitura do sensor. Este parâmetro deve ser ajustado conforme o fenômeno em que se deseja registrar.

Por exemplo, para registrar a variação de temperatura ao longo do dia sugerimos um intervalo de no mínimo 30 minutos entre cada leitura de temperatura. Observe que quanto menor for o intervalo entre cada medida, melhor será a resolução para posterior análise dos dados. No entanto, tenha em mente que isso acarretará, inevitavelmente, em um maior volume de dados para analisar.

Existem situações em que é necessário um menor intervalo entre medidas, por exemplo, medir a velocidade do seu carro por meio de um sensor conectado a roda do veículo.

Para o exemplo de registrar a velocidade do carro, imagine o que aconteceria com os seus dados de análise se as medidas fossem tomadas a cada 5 minutos, durante este intervalo de tempo você não teria nenhum dado sobre a velocidade do veículo.

Portanto, o intervalo de atualização do datalogger, deve ser escolhido em função da variação de valor da variável ao longo do tempo.

 

Formatando o seu cartão SD

Para que o Arduino consiga ler o cartão SD, é necessário que o cartão esteja formatado em FAT ou FAT32.  Para tanto, basta inserir cartão SD em um leitor de cartões e conectar ao computador. No computador, acesse a pasta “Meu Computador” e então, clique com o botão direito do mouse sobre o cartão SD,  escolha a opção formatar. dentro da caixa de diálogo de formatação escolha o formato FAT32 (padrão).

 

Interpretando os dados do datalogger com o Excel

O protótipo de datalogger, descrito neste artigo, gera um arquivo do tipo CSV. Este tipo de arquivo tem por característica separar os dados com uma vírgula.

Observe um exemplo gerado pelo datalogger, respectivamente temos em ordem, e separado por vírgulas: tempo, temperatura, umidade relativa, luminosidade e tensão.

10,24.00,70.00,4,3.08

Observe também que o separador decimal utilizado pelo datalogger é um ponto. No entanto, no Brasil, por norma, o separador decimal utilizado é uma vírgula. Logo, antes de utilizarmos estes dados há duas coisas para serem feitas na respectiva ordem:

  • Colocar cada tipo dado em uma coluna do Excel utilizando uma ferramenta “Texto para Colunas” do Excel.
  • Substituir os pontos decimais (sistema norte-americano) por vírgulas decimais.

 

Feito isto, os dados devem ficar no formato de tabela.

Tempo (minutos)Temperatura(°C)Umidade relativa (%)LuminosidadeTensão (V)
1024,0070,0043,08

 

Conecte o cartão SD no computador, então, abra o arquivo CSV com o Excel, e depois na aba “Dados” do Excel, clique em Texto para Colunas”

Siga o passo a passo do assistente de conversão, conforme as imagens abaixo.

Clique em Delimitado, e depois em Avançar.

Então, selecione os delimitadores, neste caso, apenas vírgulas.

Já na terceira etapa de conversão, selecione o formato de dados da coluna, clique na opção geral. E depois, em avançado, selecione vírgula para separador decimal, já para o separador de milhar, deixe em branco. Por fim clique em Ok e depois concluir.

Após rodar o assistente de conversão de texto para colunas a sua planilha deverá ficar conforme a figura abaixo.

Observe o gráfico gerado com os dados provenientes do datalogger:

 

Código fonte

 


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

#define DHTPIN 7
#define DHTTYPE DHT11

const int chipSelect = 10;
DHT dht(DHTPIN, DHTTYPE);


//vars do timer millis que determina o intervalo entre medidas
unsigned long period = 60000;  //modifique aqui o intervalo entre medidas, utilize multiplos de 60000ms   
unsigned long time_now = 0;
int tempo = 1;

void setup() {
  
pinMode(6, OUTPUT);
Serial.begin(9600);

  
Serial.print(F("Lendo cartao SD"));
delay(100);
  if (!SD.begin(chipSelect)) {
     Serial.println(F("Leitura Falhou"));
     while (1);
  }
Serial.println(F("Cartao SD Inicializado!"));

}


void loop() {


  if (millis() >= time_now + period) {
  time_now += period;
    
      digitalWrite(6, HIGH);
      delay(2200);                      
      digitalWrite(6, LOW);        


       float h = dht.readHumidity();
       float t = dht.readTemperature();
       int luz = analogRead(0);  
       float tensao = analogRead(1); 
       tensao = (tensao*5)/1023;
       
        String dataString = "";
          dataString += String(tempo);
          dataString += ",";      //separa cada dado com uma virgula
          dataString += String(t);
          dataString += ",";
          dataString += String(h);
          dataString += ",";
          dataString += String(luz);
          dataString += ",";
          dataString += String(tensao);
          
      File dataFile = SD.open("dados.csv", FILE_WRITE);
      
        if (dataFile) {
          dataFile.println(dataString);
          dataFile.close();
          Serial.println(dataString);
        }
         
        else {
          Serial.println(F("ERRO"));
       }
       tempo++; //contador de minutos
  }       
}

Não deixe de tirar suas duvidas, aguarde os próximos posts do blog da Módulo Eletrônica. Aproveite para seguir o Instagram da nossa loja @moduloeletronica.

 

 

 

 

Rafael Valsani Leme Passos

Rafael Valsani Leme Passos

Sobre o autor: Rafael Valsani Leme Passos é técnico em eletrônica pela ETEC Bento Quirino e graduando em Engenharia de Alimentos pela Universidade Estadual de Campinas. 

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Facebook

VEJA TAMBÉM

Regador automático de plantas com Arduino

Aprenda neste artigo, como automatizar a rega de suas plantas, utilizando o Arduino NANO. Este projeto, além do baixo custo, pode ser montado em menos de uma hora e irá garantir que as suas plantas sempre tenham água disponível, garantido um crescimento adequado e...

Fita de LEDs RGB endereçáveis WS2812B e a biblioteca fastLED

No post de hoje, vamos conhecer a fita de LEDs WS2812B endereçáveis e como utilizá-la com o Arduino UNO.  Essa fita de LEDs se destaca, em relação as outras do mercado, pelo fato de que seus LEDs podem ser controlados de maneira individual, permitindo que o...

Display de 7 segmentos no Arduino com multiplexação

  No post de hoje, vamos aprender a trabalhar com os displays de 7 segmentos, esse tipo de display é muito comum é uma vasta gama de equipamentos eletrônicos. As vantagens desse display são o seu baixo custo, simplicidade de implementação, excelente resistência...

NEWSLETTER

Assine nossa newsletter e receba as novidades.

ATENDIMENTO

(19) 3579-7189