Como importar dados do Data logger em uma planilha
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.
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:
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:
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:
Faça o mesmo procedimento para a biblioteca RTCLib, também da 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:
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:
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:
Na janela que abrirá em seguida, selecione Upload e arraste para essa janela o arquivo dados.csv:
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:
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….
E em seguida clique em Inserir -> Gráfico:
Pronto. Após importar os dados do data logger, seu gráfico foi gerado!
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.
Parabéns pelo post está bem explicado.
Percebi que utilizou um delay de 10 s e pergunto: como salvar no sdcard apenas de 10 em 10 min, estou trabalhando em uma estação meteorológica e os dados são visualizados pelo público de de 10 em 10s ? Grato
Oi Carlos,
Obrigado! Para salvar de 10 em 10 minutos, substitua o comando delay(10000) na linha 90 por delay(600000).
Abraço!
Adilson
Utilizei isso para salvar muitas horas dos 16 dados captados para meu TCC. Boa dica para quem precisar salvar dados experimentais.
Valeu Guilherme!
Abraço.
Adilson
Olá, Estou terminando um trabalho de TCC na área de arduino e preciso do nome de quem publica as postagens, se possível mandar um e-mail para contato para que possa obter dados e colocar como referências, Obrigado
Oi Alvaro!
Obrigado. Por favor entre em contato utilizando o formulário de contato no lado direito da página ("Fale com o administrador"). Conversamos por email.
Abraço!
Adilson
Oi, por favor.Como eu faço para setar a data e hora pelo monitor serial??
Obrigado
Adilson, posso colocar dois sensores de umidade e temperatura? Como ficaria na programação?
Oi Augusto!
Pode sim, e é bem tranquilo. Faça o mesmo esquema mas ligue o pino de sinal na porta A1, por exemplo.
Abraço!
Adilson
É possível salvar imagem png no sd card utilizando esp32?
Oi Geanio,
É possível sim. Existem até módulos ESP32 que já vem com o circuito para cartão SD embutido.
Abraço!
Adilson
Posso usar essa shield no arduino mega?
Oi Ezequiel,
Tranquilamente. 🙂
Abraço!
Adilson
[…] First viewed here […]
Olá!
Estou tentando usar este módulo com um cartão micro sd + adaptador, já testei diversos cartões com diversos adaptadores; também já testei mais de um módulo em mais de uma placa de Arduino UNO; tentei formatar pelo formatador do windows e por aplicativo desktop, mas sempre obtenho o mesmo erro ao rodar o código Cardinfo da biblioteca SD:
Initializing SD card…Wiring is correct and a card is present.
Card type: SD2
Could not find FAT16/FAT32 partition.
Make sure you’ve formatted the card
Vi que no teste deste post você utilizou um SD (ao invés de micro SD + adaptador). Gostaria de saber se o módulo realmente não funciona com um micro SD. =(
Oi Brenda,
Funciona sim, já testei com algumas configurações diferentes.
Realmente alguns cartões não funcionam, e alguns módulos também são um pouco “chatos” com relação à formatação. Já tentou formatar utilizando “DOS” (cmd)? Use o comando format X: /FS=FAT32
Abraço!
Adilson
Parabéns pelo posto. Muito útil.
Estou com um problema. Os dados são gravados perfeitamente mas quando desligo e ligo movente a data e o time não são atualizados, voltando para o da data de compilação. Como consertar?
[…] Gostou? 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. […]
tem como imprir no google shet em tempo real?
Oi Juliano,
Até tem como fazer isso, mas eu usaria uma Raspberry. 🙂
Abraço!
Adilson
Muito bom, funcionou bem, mas a data não atualizou de jeito nenhum no meu projeto. Pode me ajudar a solucionar este problema por favor?
Boa tarde,
O que acontece? É problema apenas com a data?
Abraço!
Adilson
Isso. a data que retorna é a seguinte: 9/10/2018 00:53:17. Não sei mesmo como corrigir
Boa tarde! Achei muito interessante este projeto. Trabalho com refrigeração e gostaria de criar algo parecido, porem preciso montar um logger com 4 sensores de temperatura.
Oi Walmir,
É possível montar sim. Se precisar, desenvolvemos projetos sob medida.
Abraço!
Adilson