- Materiais requisitados:
- Diagrama de circuito:
- Explicação do programa Arduino:
- Explicação de trabalho:
Como engenheiros / desenvolvedores, sempre contamos com os dados coletados para projetar ou melhorar um sistema. Gravar dados e analisá-los é uma prática comum na maioria das indústrias, aqui estamos construindo o Projeto Arduino Data Logger, onde aprenderemos como podemos registrar dados em um intervalo de tempo específico. Usaremos uma placa Arduino para ler alguns dados (aqui temperatura, umidade, data e hora) e salvá-los em um cartão SD e no computador simultaneamente.
Os dados salvos podem ser facilmente abertos em uma planilha do Excel para análises posteriores. Para manter a data e hora usaremos o famoso módulo RTC DS3231 e para obter a Temperatura e Umidade usaremos o Sensor DHT11. No final do projeto você aprenderá
- Como registrar dados no cartão SD com data, hora e valores do sensor.
- Como escrever dados diretamente na planilha do Excel no PC via comunicação serial.
Materiais requisitados:
- Tábua de pão
- Arduino UNO (qualquer placa Arduino)
- Sensor de temperatura DHT11
- Módulo DS3231 RTC
- Módulo de cartão SD
- cartão SD
- Fios de conexão
- Computador / Laptop
Diagrama de circuito:
O diagrama de circuito para este projeto do registrador de temperatura do Arduino é mostrado abaixo.
Conforme mostrado no diagrama de circuito, as conexões são muito simples, uma vez que as usamos como módulos, podemos construí-las diretamente em uma placa de ensaio. As conexões são ainda classificadas na tabela abaixo
Pin Arduino |
Pin do Módulo |
Sensor de temperatura - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Fora |
Pino 7 |
Módulo RTC DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pino A5 |
SDA |
Pin A4 |
Módulo de cartão SD |
|
Vcc |
5V |
Gnd |
Gnd |
MISSÔ |
Pino 12 |
MOSI |
Pino 11 |
SCK |
Pino 13 |
CS |
Pino 4 |
Você pode substituir o sensor de temperatura DHT11 por qualquer um dos seus sensores do qual você precise registrar os valores. Você pode verificar o LM35 com Arduino para ler a temperatura.
O módulo RTC DS3231 tem interface com o Arduino usando a comunicação I2C (SCL, SDA) e o módulo do cartão SD é conectado usando a comunicação SPI (MISO, MOSI, SCK, CS). Os pinos 4 e 7 são definidos como o pino CS e o pino de saída pelo programa Arduino, você pode alterá-los para qualquer outro pino, se necessário. Anteriormente, fizemos interface com o cartão SD com o Arduino no projeto do Music player.
Explicação do programa Arduino:
Temos que escrever o programa Arduino que pode fazer o seguinte.
- Leia os dados do sensor DTH11 (ou quaisquer outros dados que você deseja registrar).
- Inicialize o barramento I2C para ler os dados do módulo RTC.
- Inicialize o barramento SPI para fazer a interface do módulo do cartão SD com o Arduino.
- Armazene a data, hora, temperatura e umidade no cartão SD.
- Armazene a data, hora, temperatura e umidade em uma planilha do Excel rodando em um computador / laptop.
As etapas acima podem parecer complicadas, mas são muito fáceis, pois temos as bibliotecas para fazer o trabalho difícil para nós. Você deve baixar as duas bibliotecas a seguir
- Biblioteca de sensores DHT11 do GitHub
- Biblioteca do módulo DS3231 RTC da Rinky-Dink Electronics
Depois de fazer o download da biblioteca, adicione-os ao seu IDE Arduino seguindo
Sketch-> Incluir Biblioteca -> Adicionar Biblioteca.ZIP
Para alimentar os dados do Arduino em uma planilha Excel no computador, também precisaremos instalar o software chamado PLX-DAQ fornecido pela Parallax Inc. Siga o link para baixar o arquivo e instalá-lo com base no seu sistema operacional. Isso deve ter criado uma pasta chamada PLS-DAQ em sua área de trabalho. Cuidaremos disso mais tarde em nossa seção de trabalho.
Agora, após adicionar as duas bibliotecas e instalar o software, você pode usar o Código Completo (fornecido na parte inferior do tutorial) e carregá-los para o seu Arduino. Tentei o meu melhor para manter o código o mais simples possível e as explicações também são fornecidas por meio de seções de comentários. Além disso, explicarei os segmentos importantes abaixo.
1. Leitura de dados do DS3231:
DS3231 é um módulo RTC (Real Time Clock). É usado para manter a data e a hora da maioria dos projetos de Eletrônica. Este módulo tem sua própria fonte de alimentação de célula tipo moeda, usando a qual ele mantém a data e a hora mesmo quando a alimentação principal é removida ou o MCU passou por um hard reset. Assim, uma vez que definimos a data e a hora neste módulo, ele manterá o controle sempre.
Usar este módulo é muito fácil por causa da biblioteca fornecida pelo Arduino.
// Inicie o DS3231 usando a interface de hardware DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicialize o objeto rtc rtc.begin (); // #### as linhas a seguir podem ser descomentadas para definir a data e a hora pela primeira vez ### / * rtc.setDOW (FRIDAY); // Defina o dia da semana como DOMINGO rtc.setTime (18, 46, 45); // Defina a hora para 12:00:00 (formato de 24 horas) rtc.setDate (6, 30, 2017); // Defina a data para 1º de janeiro de 2014 * /}
Nota: Ao usar este módulo pela primeira vez, você deve definir a data e a hora. Isso pode ser feito simplesmente removendo os comentários mencionados acima e escrevendo a data e a hora. Certifique-se de comentar e fazer o upload, caso contrário, cada vez que você executar o fórum, a data e a hora serão definidas novamente. Você também pode usar RTC IC DS1307 para ler a hora com o Arduino.
2. Leitura de dados de DHT11:
DHT11 é um sensor de temperatura e umidade. Ele envia os valores de temperatura e umidade como dados de 8 bits em série através do pino de saída do módulo. A biblioteca lê esses dados usando a função serial do software do Arduino.
#define DHT11_PIN 7 // O pino de saída do sensor está conectado ao pino 7 dht DHT; // Objeto de sensor nomeado como DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Aqui eu conectei o pino de saída ao pino 7, como exemplo, você pode escolher qualquer pino que suporte Software Serial. Chamando DHT.read (número PIN); irá ler o valor de temperatura e umidade e armazená-lo nos parâmetros DHT.temperature e DHT.Humidity respectivamente. Verifique também esta Medição de Temperatura Arduino baseada em DHT11.
3. Inicializando o módulo do cartão SC:
void Initialize_SDcard () {// veja se o cartão está presente e pode ser inicializado: if (! SD.begin (chipSelect)) {Serial.println ("O cartão falhou ou não está presente"); // não faça mais nada: return; } // abre o arquivo. observe que apenas um arquivo pode ser aberto por vez, // portanto, você deve fechar este antes de abrir outro. Arquivo dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // se o arquivo estiver disponível, escreva nele: if (dataFile) {dataFile.println ("Date, Time, Temperature, Humidity"); // Grava a primeira linha do arquivo excel dataFile.close (); }}
Usar um cartão SD com o Arduino é fácil por causa da biblioteca do cartão SD que será adicionada ao IDE do Arduino por padrão. Na função de inicialização do cartão SD, criaremos um arquivo de texto denominado “LoggerCD.txt” e escreveremos a primeira linha do nosso conteúdo. Aqui separamos os valores usando “,” como delimitador. Ou seja, quando uma vírgula é colocada, significa que temos que passar para a próxima célula na planilha do Excel.
4. Gravando dados no cartão SD
void Write_SDcard () {// abre o arquivo. observe que apenas um arquivo pode ser aberto por vez, // portanto, você deve fechar este antes de abrir outro. Arquivo dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // se o arquivo estiver disponível, escreva nele: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Armazena a data no cartão SD dataFile.print (","); // Mover para a próxima coluna usando um "," dataFile.print (rtc.getTimeStr ()); // Armazena a data no cartão SD dataFile.print (","); // Mover para a próxima coluna usando um "," dataFile.print (DHT.temperature); // Armazena a data no cartão SD dataFile.print (","); // Mover para a próxima coluna usando um "," dataFile.print (DHT.humidity); // Armazena a data no cartão SD dataFile.print (","); // Mover para a próxima coluna usando um "," dataFile.println (); // Fim da linha move para a próxima linha dataFile.close ();// Fechar o arquivo} else Serial.println ("OOPS !! Falha na gravação do cartão SD"); }
Como dito anteriormente, nossa intenção é salvar a Data, Hora, Temperatura e Umidade em nosso cartão SD. Com a ajuda da biblioteca DS3231 e da biblioteca DHT11, nosso Arduino será capaz de ler todos esses quatro parâmetros e armazená-los nos seguintes parâmetros, conforme mostrado na tabela abaixo
Encontro |
rtc.getDateStr ()); |
Tempo |
rtc.getTimeStr ()); |
Temperatura |
DHT.temperature |
Umidade |
DHT.umidity |
Agora podemos usar diretamente esses parâmetros para armazená-los no cartão SD usando a linha de impressão
dataFile.print (parâmetro);
Você pode notar que cada parâmetro é separado por uma vírgula para torná-lo legível e um dataFile.println (); é usado para indicar o fim da linha.
5. Gravando dados em PLX-DAQ
PLX-DAQ é um software de plug-in do Microsoft Excel que nos ajuda a escrever valores do Arduino diretamente em um arquivo Excel em nosso laptop ou PC. Este é o meu favorito por dois motivos:
1.Você pode escrever e monitorar os dados ao mesmo tempo e nos fornece uma maneira de traçá-los como gráficos.
2. Você não precisa de um Módulo RTC como o DS3231 para controlar a data e a hora. Você pode simplesmente usar a data e hora em execução no seu laptop / computador e salvá-los diretamente no Excel.
Para usar este software com o Arduino, temos que enviar os dados serialmente em um padrão específico, assim como exibir o valor no monitor serial. As linhas principais são explicadas abaixo:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // apaga todos os dados deixados de projetos anteriores Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // escreva sempre LABEL, para indicar como primeira linha} void Write_PlxDaq () {Serial.print ("DATA"); // sempre escreva "DATA" para Inidicate o seguinte como Data Serial.print (","); // Mover para a próxima coluna usando um "," Serial.print ("DATE"); // Armazena a data no Excel Serial.print (","); // Mover para a próxima coluna usando um "," Serial.print ("TIME"); // Armazena a data no Excel Serial.print (","); // Mover para a próxima coluna usando um "," Serial.print (DHT.temperature); // Armazena a data no Excel Serial.print (","); // Mover para a próxima coluna usando um "," Serial.print (DHT.humidity);// Armazena a data no Excel Serial.print (","); // Mover para a próxima coluna usando um "," Serial.println (); // Fim da linha mover para a próxima linha}
O software pode reconhecer palavras-chave como LABEL, DATA, TIME, DATE etc. Conforme mostrado na função Initialize, a palavra-chave “LABEL” é usada para escrever a primeira LINHA da planilha Excel. Posteriormente, na função Write, usamos a palavra-chave “DATA” para indicar que as seguintes informações devem ser consideradas como DATA. Para indicar que temos que passar para a próxima linha, temos que usar vírgula (“,”). Para indicar o final da linha, temos que enviar um Serial.println ();.
Como dito anteriormente, podemos escrever a data e hora do sistema enviando as palavras-chave “DATA” e “HORA”, respectivamente, conforme mostrado acima.
Nota: Não use monitor serial ao usar este software PLX_DAQ.
Explicação de trabalho:
O funcionamento do Arduino Data Logger é simples. Assim que o hardware e o software estiverem prontos, é hora de gravar o programa na placa Arduino. Assim que seu programa for carregado, seus valores de temperatura e umidade começarão a ser armazenados em seu cartão SD. Você deve seguir as etapas abaixo para permitir que o PLX-DAQ faça o login na planilha do Excel no computador.
Etapa 1: Abra o arquivo “Plx-Daq Spreadsheet” que foi criado em sua área de trabalho durante a instalação.
Etapa 2: Se houver um bloqueio de Segurança, clique em Opções-> Habilitar o conteúdo -> Concluir -> OK para obter a tela a seguir.
Etapa 3: Agora selecione a taxa de transmissão como “9600” e a porta à qual seu Arduino está conectado e clique em Conectar. Seus valores devem começar a ser registrados como mostrado na imagem abaixo.
Você pode deixar esta planilha do Excel aberta e monitorar os valores conforme eles são registrados. Enquanto isso estava acontecendo, nosso cartão SD também teria salvo os mesmos valores. Para verificar se está funcionando basta remover o cartão SD e abri-lo no seu Computador. Você deve encontrar um arquivo de texto chamado “LoggerCD.txt” nele. Quando aberto, teria a seguinte aparência.
Este arquivo contém dados, mas seria difícil analisá-los em um bloco de notas. Portanto, podemos abri-lo no Excel como um arquivo CSV (valores separados por vírgula), tornando-o mais eficaz. Para abrir no excel
1. Abra o Excel. Clique em Arquivo-> Abrir e selecione “Todos os arquivos” no canto inferior direito e selecione o arquivo “LoggerCD” do cartão SD. Isso abrirá um assistente de importação de texto.
2.Clique em “Avançar” e selecione a vírgula como delimitador. Clique em “Next” novamente. Então termine.
3.Agora seus valores serão abertos em um arquivo Excel como mostrado abaixo
Registrei os valores a cada 5 segundos; você pode registrá-los por qualquer hora desejada alterando a função de atraso no programa. Para uma compreensão detalhada do funcionamento, assista ao vídeo abaixo.
Espero que tenham gostado do projeto, se você tiver alguma dúvida escreva na seção de comentários abaixo e eu te ajudarei.
Melhoria do bônus - registro de dados sem fio usando Arduino:
Depois de ter obtido sucesso até este ponto, com alguns avanços e apenas adicionando algumas linhas de código, você pode registrar dados sem fio.
Basta conectar um dispositivo Bluetooth como HC-05 e gravar os dados no PLX-DAQ via Bluetooth em vez de serial. Isso é substituir Serial.print (parâmetro); com BluetoothName.print (parâmetro); e conecte seu laptop ao módulo Bluetooth e selecione a porta COM à qual o Bluetooth do seu laptop está conectado e Taadaaa…… Você tem um sistema de registro de dados sem fio funcionando em pouco tempo.