A algum tempo atrás (um bom tempo, na verdade), escrevi este post aqui sobre Como usar o Data logger Shield com RFID, armazenando os dados lidos do sensor RFID em um arquivo texto. Hoje vamos ver como usar esse mesmo shield para importar os dados do data logger em uma planilha, trabalhando com as informações do sensor de temperatura DHT11.

Arduino Data Logger Shield com DHT11

O procedimento que vamos apresentar aqui pode ser testado com outras versões do shield, ou até mesmo com módulos cartão SD. O processo de captura dos dados e gravação no cartão é o mesmo.

O data logger shield Arduino

Vamos apenas fazer um resumo rápido do Data Logger Shield Arduino, que é uma placa com slot para cartão SD, um botão de reset, suporte para bateria, leds indicadores de funcionamento e uma pequena área de prototipagem, caso você queira montar um projeto de forma permanente:

Data Logger Shield para Arduino

A placa tem um chip RTC (Real Time Clock ou Relógio de Tempo Real) bem conhecido, o DS1307, que fornece as informações de data e hora, básicas em qualquer projeto de data logger.

Usando o data logger com sensor de temperatura DHT11

Nesse teste vamos usar o datalogger com Arduino Uno, lendo e armazenando os dados de um dos sensores mais comuns: o sensor de temperatura DHT11.

Vamos conectar o sensor de temperatura no pino analógico A0 do Arduino, conforme a imagem abaixo:

Circuito Arduino Uno Datalogger Shield e DHT11

No slot para cartão SD, coloque um cartão formatado com FAT32.

Programa Arduino Datalogger com DHT11

Vamos utilizar a biblioteca DHT11, que você pode baixar à partir da própria IDE do Arduino, em Sketch -> Incluir Bibliotecas -> Gerenciar bibliotecas. Procure por DHT11 e selecione a biblioteca DHT Sensor by Adafruit, clicando em Instalar:

Biblioteca DHT11 Adafruit Arduino

Faça o mesmo procedimento para a biblioteca RTCLib, também da Adafruit:

Biblioteca RTCLib Adafruit

No programa, vamos ler a hora do DS1307, depois as informações de temperatura e gravar isso no arquivo dados.csv. Essa leitura será feita a cada 10 segundos nos nossos testes, mas altere a linha 90 do programa para definir o intervalo de medição de sua preferência:

//Programa: Data logger com sensor de temperatura DHT11
//Autor: Arduino e Cia

#include "RTClib.h"
#include "DHT.h"
#include <SD.h>

//Pino CS do cartao SD
int Pino_CS = 10;

//Definicoes do sensor de temperatura DHT11
#define DHTPIN A0 //Pino de conexao
#define DHTTYPE DHT11 //Tipo de sensor
DHT dht(DHTPIN, DHTTYPE); //Cria objeto DHT

RTC_DS1307 rtc;
File file;

void setup()
{
  Serial.begin(57600);
  Serial.println("Data logger com sensor de temperatura DHT11");
  Serial.println();
  //Inicia o cartao SD
  Serial.println("Iniciando cartao SD...");
  if (!SD.begin(Pino_CS))
  {
    Serial.println("Falha na inicializacao do SD!");
    return;
  }
  Serial.println("Cartao SD iniciado. OK");
  Serial.println();

  //Verifica as condicoes do RTC
  if (! rtc.begin())
  {
    Serial.println("RTC nao encontrado!");
    while (1);
  }
  if (! rtc.isrunning())
  {
    Serial.println("RTC nao operante!");
    //A linha abaixo ajusta o RTC com a data e hora do momento da compilacao
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    //A linha abaixo permite ajustar manualmente a data e hora do RTC
    //Formato: DateTime(ano, mes, dia, hora, minuto, segundo)
    //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
  //Inicializa o DHT11
  dht.begin();
}

void loop(void)
{
  //Le as informacoes da temperatura
  float t = dht.readTemperature();
  //Le as informacoes do RTC
  DateTime now = rtc.now();
  //Serial monitor informacoes de hora
  Serial.print(now.hour() < 10 ? "0" : "");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute() < 10 ? "0" : "");
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second() < 10 ? "0" : "");
  Serial.print(now.second(), DEC);
  Serial.print(" ");
  Serial.print("Temperatura: ");
  Serial.println(t, 0);
  
  //Gravacao do cartao
  //Abre arquivo no SD para gravacao
  file = SD.open("dados.csv", FILE_WRITE);
  //Grava os dados no cartao SD
  file.print(now.hour() < 10 ? "0" : "");
  file.print(now.hour(), DEC);
  file.print(':');
  file.print(now.minute() < 10 ? "0" : "");
  file.print(now.minute(), DEC);
  file.print(':');
  file.print(now.second() < 10 ? "0" : "");
  file.print(now.second(), DEC);
  file.print(",");
  file.print(t, 0);
  file.println();
  //Fecha arquivo
  file.close();
  //Delay ate a proxima leitura
  delay(10000);
}

Se você acompanhar o processo no Serial Monitor, verá uma tela como essa:

Data logger Serial Monitor

E abrindo o arquivo dados.csv em um editor de textos comum, verá os dados armazenados no formato abaixo separado por vírgulas, característico de um arquivo CSV:

Arquivo CSV Data Logger

Para facilitar o processo de importação, coloquei apenas a hora e o valor da temperatura que foi lida naquele momento. Você pode colocar também a data com dia, mês e ano, além da umidade medida pelo DHT11.

Vamos importar os dados do data logger para o Google Sheets!

O processo de importação do arquivo CSV para o Google Sheets (ou Planilhas Google, em português) é bem simples, e em poucos passos você terá um gráfico com os dados coletados. Antes de mais nada, retire o cartão SD do data logger e coloque no seu computador.

Crie uma nova planilha no Google Drive, dando a ela um nome qualquer. No menu da planilha, clique em Arquivo e em seguida em Importar:

Google Sheets - Importar

Na janela que abrirá em seguida, selecione Upload e arraste para essa janela o arquivo dados.csv:

Importar arquivo

Após o upload, será aberta uma tela de opções perguntando se vc deseja criar uma nova planilha ou substituir essa já existente. Selecionamos as opções abaixo:

Importação - Formato do arquivo

Clique em Importar Dados e a sua tela ficará mais ou menos assim:

Para gerar o gráfico, selecione todos os dados das duas colunas….

Gerando o gráfico

E em seguida clique em Inserir -> Gráfico:

Inserir gráfico

Pronto. Após importar os dados do data logger, seu gráfico foi gerado!

Google Sheets - Gráfico importar dados do Data logger

Como comentei acima, este é um gráfico bem simplificado que usa apenas os dados de hora e temperatura, mas você pode inserir outros dados no arquivo CSV, separando o gráfico por dia, mês, ano, etc, de acordo com as necessidades do seu projeto.

Avalie este post!