fbpx

Monitoramento de Temperatura e Umidade com DHT11 e NodeMCU

Neste artigo você aprenderá como conectar um sensor DHT11 ao NodeMCU e enviar as medições do sensor para a Nuvem.

O DHT11 é um sensor capaz de medir valores de umidade entre 20% e 90% e temperaturas entre 0 e 50 º C. Ao comprar o DHT11 é importante verificar na parte de trás do sensor se a tensão de operação é 3.3 – 5 V, já que os GPIOs do NodeMCU operam em 3.3 V.

Mostraremos a seguir o passo a passo de como programar o NodeMCU para receber as medições do sensor e transmitir os dados recebidos para a Nuvem.

Para este projeto você precisará de:

  • Módulo NodeMCU (versão 0.9 ou 1.0);
  • Sensor de Umidade e Temperatura DHT11 (3.3 -5 V);
  • 3 Jumpers Macho/Fêmea.

Siga o esquemático abaixo para conectar o DHT11 ao NodeMCU.

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Passo 1 – Cadastro na Plataforma EasyIot

Entre no site da Plataforma EasyIot. Caso ainda não esteja cadastrado, faça o seu cadastro gratuitamente.

Usaremos a plataforma para visualizar os dados dos sensores que serão enviados para a Nuvem.

Passo 2 – Configuração da IDE

Se você já configurou a IDE do Arduino para que ela de suporte aos módulos baseados no ESP8266, pule para o Passo 3.

Abra a IDE do Arduino e entre em Arquivo >> Preferências:

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Procure por URLs Adicionais para Gerenciadores de Placas e copie o link abaixo na caixa de diálogo:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Vá em Ferramentas >> Placa >> Gerenciador de Placas:

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Procure por esp8266 by ESP8266 Community clique em instalar:

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Verifique se a sua placa está listada Ferramentas >> Placa:

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Passo 3 – Instalação da Biblioteca EasyIot

Acesse a Plataforma EasyIoT, clique em Bibliotecas e baixe a Biblioteca Easyiot-Esp8266.

Com a IDE do Arduino aberta, entre em Sketch >> Incluir Biblioteca >> Adicionar biblioteca .ZIP e selecione o arquivo Easyiot-Esp8266.zip.

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Passo 4 – Instalação de Bibliotecas adicionais

Inclua a biblioteca Adafruit Unified Sensor em Sketch >> Incluir Biblioteca >> Gerenciar de Bibliotecas

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Ainda em Sketch >> Incluir Biblioteca >> Gerenciar de Bibliotecas procure por DHT11 e instale a Biblioteca DHT sensor library by Adafruit.

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Passo 5 – Programação no NodeMCU

Usando a IDE do Arduino, abra o código dht11_esp8266, que pode ser encontrado em Bibliotecas >> Sensor DHT11.

#include <Easyiot-Esp8266.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>

const char*  ssid = "MEU_SSID"; // <-- Digite aqui o nome da sua rede WiFi
const char* password = "MINHA_SENHA"; // <-- Digite aqui a senha da sua rede WiFi
String EasyToken = "MEU_TOKEN"; // <-- Cole aqui seu Easy Token, obtido na plataforma https://app.easyiot.com.br
int intervalo_de_transmissao = 10000; // <-- Intervalo em milissegundos(10.000 ms == 10s)
  
#define DHTPIN  5 // Pino em que foi conectado a saida dos dados do sensor ao Esp8266
#define DHTTYPE DHT11 // Tipo do sensor DHT -> 11
  
DHT dht(DHTPIN, DHTTYPE); //Declara o objeto dht
  
void setup() {
  int timeout = 0;
  
  Serial.begin(9600);
  delay(5000);
  Serial.print("Conectando a ");
  Serial.print(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while ((WiFi.status() != WL_CONNECTED) || (timeout < 10)) {
    Serial.print(".");
    timeout++;
    delay(1000);
    if(timeout == 30){
        timeout = 0;
        Serial.println();
        Serial.println("Falha na conexão, verifique os dados da sua WiFi!");
        Serial.println("Tentando conectar novamente");
        Serial.println();
        Serial.print("Conectando a ");
        Serial.print(ssid); 
    }
  }
  Serial.println();
  Serial.println("WiFi conectado");
  Serial.print("Endereço IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();


  SNTP();
  dht.begin(); //Inicializa o sensor
}
  
void loop()  {
  String Dados, resposta;
  
  float h = dht.readHumidity(); //Realiza a leitura da umidade e armazena na variavel h
  float t = dht.readTemperature(); //Realiza a leitura da temperatura e armazena na variavel t
  // testa se retorno é valido
  if (isnan(t) || isnan(h))  {
    Serial.println("Erro ao ler dados do sensor :("); // Retorno invalido, logo ocorreu erro
  } 
  else {
  
    Dados = "Umidade: ["; // A mensagem que sera enviada para a plataforma contendo a temperatura e umidade medidas
    Dados = Dados + h; 
    Dados = Dados + "]%    Temperatura: [";
    Dados = Dados + t;
    Dados = Dados + "] *C";
  


    resposta = send(Dados, EasyToken); //A resposta do servidor estará no variavel resposta
  }
  
  delay(intervalo_de_transmissao);
}

 
 
 
 
 
 
 
 
 
 
 
 

Passo 6 – Programação no NodeMCU (Parte 2)

No código substitua MEU_SSID e MINHA_SENHA, nas linhas 5 e 7 do código, pelo login e senha da sua rede WiFi.

Na Plataforma EasyIot vá em Dispositivos >> Dispositivos Cadastrados e adicione um novo dispositivo.

Selecione o Protocolo WiFi.

Crie uma aplicação e clique em Continuar.

Selecione ESP8266 e clique em Continuar.

Copie o Easy Token da sua aplicação.

Monitoramento de temperatura e umidade com DHT11 e NodeMCU

Substitua MEU_EASY_TOKEN, na linha 9 do código, pelo token do dispositivo criado na Plataforma EasyIot e execute o programa.

Entre no painel do site da Plataforma EasyIot você verá os dados do seu sensor chegando.

Passo 7: Vendo as medições no Dashboard

Uma vez que as medições do sensor estão chegando no Painel da Plataforma EasyIot, criaremos um dashboard para exibir os valores de temperatura e umidade.

Na Plataforma EasyIot clique em Dashboards e adicione um novo dashboard.

De um nome ao dashboard, defina o tipo como sendo Gráfico e selecione a aplicação, criada anteriormente, para enviar os dados de temperatura.

Adicione um ponto de análise.

Um ponto de análise é a parte da mensagem, enviada pelo dispositivo, onde se encontra a informação que se deseja exibir no dashboard. Essa informação deve aparecer na mensagem entre colchetes, para que o dashboard a identifique como um ponto relevante. Como o DHT11 mede dois valores é preciso criar dois pontos de análise, um para a umidade e outro para a temperatura.

Adicione o primeiro ponto de análise para a umidade.

Selecione o tipo de dado como sendo String, de um nome ao ponto de análise e selecione a posição do dado no payload. Essa posição é dada pela ordem em que as informações de interesse, que serão apresentadas no dashbord aparecem na mensagem que o dispositivo envia. Como na mensagem do sensor a umidade é o primeiro valor a aparecer, a posição do dado no payload será 1. Ao terminar a configuração clique em Salvar.

Adicione um segundo ponto de análise para a temperatura. Dessa vez a posição do dado no payload será 2.

Com os dois pontos configurados clique em concluir.

Vamos criar um Card para exibir os dados de Temperatura.

Adicione um gráfico.

Selecione o gráfico do tipo Card, o ponto de análise da temperatura configurado anteriormente e o dispositivo que deve servir de fonte de dados para o dashboard.

Pronto, os dados do sensor já estão sendo exibidos no dashboard.