fbpx

Medindo temperatura com NodeMCU e o DS18B20

Neste artigo você aprenderá como conectar um sensor de temperatura DS18B20 ao NodeMCU e enviar as medições para uma aplicação na Nuvem.

O DS18B20 é um sensor capaz de medir temperaturas, em uma faixa entre -55°C e +125°C, com meio grau de precisão. O sensor tem uma versão apropriada para o uso em protoboard e uma outra versão a prova d’água.

Mostraremos a seguir o passo a passo para conectar o DS18B20 ao NodeMCU, como criar um código 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 Temperatura DS18B20 (3.3 -5 V);
  • 3 Jumpers Macho/Fêmea;
  • 3 Jumpers Macho/ Macho;
  • 1 Resistor 4.7k Ohm.

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

O mesmo esquemático pode ser usado tanto para a versão de protoboard, quanto para versão a prova d’água do sensor. Lembre-se de sempre conectar o pino D0 do sensor a uma porta digital do NodeMCU, neste projeto usaremos a porta D2.

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:

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

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

Procure por esp8266 by ESP8266 Community clique em instalar:

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

Passo 3 – Instalação da Biblioteca EasyIot

Com a IDE do Arduino aberta, entre em Sketch >> Incluir Biblioteca >> Gerenciar Bibliotecas.

Procure por easyiot e instale a biblioteca EasyioT-Esp8266 by Easyiot.

Passo 4 – Instalação de Bibliotecas adicionais

Em Sketch >> Incluir Biblioteca >> Gerenciar Bibliotecas procure por Dallas e instale a biblioteca DallasTemperature

Passo 5 – Programação no NodeMCU

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

#include <Easyiot-Esp8266.h>
#include <OneWire.h>
#include <DallasTemperature.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)

// GPIO onde o sensor DS18B20 esta conectado
const int oneWireBus = 4;     

// Setup de uma instancia oneWire 
OneWire oneWire(oneWireBus);

// Passando a nossa referencia da instancia oneWire para o sensor de temperatura 
DallasTemperature sensors(&amp;oneWire);

void setup() {

  // Inicializando a Serial
  Serial.begin(9600);
  
  // Inicializando o sensor DS18B20
  sensors.begin();
  
  int timeout = 0;
  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();

  
}

void loop() {
  String Dados, resposta;

  sensors.requestTemperatures();  // Requisicao da temperatura para o sensor
  float temperatureC = sensors.getTempCByIndex(0);

  Dados = "Temperatura: "; // A mensagem que sera enviada para a plataforma contendo a temperatura medida
  Dados = Dados + "[" + temperatureC + "]";
  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 DIGITE_AQUI_SEU_SSID e DIGITE_AQUI_SUA_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.

Substitua DIGITE_AQUI_SEU_EASY_TOKEN, na linha 9 do código, pelo Easy Token do dispositivo criado na Plataforma EasyIot e execute o programa.

Passo 7 – Vendo os dados na Plataforma

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

Passo 8 – Criando um Dashboard

Agora que as medições de temperatura do sensor já estão chegando ao painel, podemos criar um dashboard para visualizarmos melhor os dados.

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

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.

Configure o ponto de análise. Selecione 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 imagem que o dispositivo envia.

Salve e depois conclua a configuração

Adicione um gráfico.

Selecione o Linha como sendo o tipo de gráfico, escolha o ponto de análise, defina um período de visualização para o gráfico e marque o dispositivo que enviará os dados.

Pronto, os dados de temperatura medidos pelo seu sensor DS18B20 já estão sendo exibidos no dashboard.