Como criar um Servidor de Temperatura e Humidade com NodeMCU Esp8266



Neste artigo, iremos criar um servidor capaz de monitorizar a temperatura e humidade de uma divisão usando o NodeMCU esp8266 com o DHT11.

Para acompanhar este tutorial precisará dos seguintes artigos:

Imagem Produto Comprar
 

 

 

NodeMcu Esp8266

 


 

 

 

DHT11

 


 

 

 

Cabos Jumper Macho-Femêa

 


Sobre o DHT11

DHT11

O Sensor Temperatura e Humidade DHT11 é um sensor de temperatura e humidade que permite fazer leituras de temperaturas entre 0 a 50º Celsius e humidade entre 20 a 90%, muito usado para projetos com Arduino.
O Módulo DHT11 na prática detecta a humidade e a temperatura e envia essas informações para a placa microcontroladora, que deve estar programada para realizar alguma ação quando é atingida determinada temperatura ou humidade.
O elemento sensor de temperatura é um termistor do tipo NTC e o sensor de humidade é do tipo HR202, o circuito interno faz a leitura dos sensores e comunica a um microcontrolador através de um sinal serial de uma via.

Especificações:

  • Modelo: DHT11;
  • Faixa de medição da humidade: 20 a 90% UR;
  • Faixa de medição da temperatura: 0º a 50ºC;
  • Alimentação: 3-5VDC (5,5VDC máximo);
  • Compatível com Arduino, ARM, AVR, PIC, etc.;
  • Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA;
  • Precisão da medição da humidade: ± 5,0% UR;
  • Precisão da medição da temperatura: ± 2.0ºC;
  • Tempo de resposta: 2s;
  • Dimensões: 23 x 12 x 5mm (incluindo terminais).

Esquema de Montagem

Esquema de Montagem

Preparar Ambiente

Sendo que o NodeMCU usado neste post não é uma placa nativa ao Arduino IDE é necessário efectuar a respectiva instalação do controlador manualmente, para tal pedimos que visite este artigo.

Código

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "DHT.h"

#define DHTTYPE DHT11 // DHT 11

/*Put your SSID & Password*/
const char* ssid = "SSID"; // Enter SSID here
const char* password = "PASSWORD"; //Enter Password here

ESP8266WebServer server(80);

// DHT Sensor
uint8_t DHTPin = D8;

// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);

float Temperature;
float Humidity;

void setup() {
Serial.begin(115200);
delay(100);

pinMode(DHTPin, INPUT);

dht.begin();

Serial.println("Connecting to ");
Serial.println(ssid);

//connect to your local wi-fi network
WiFi.begin(ssid, password);

//check wi-fi is connected to wi-fi network
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: ");
Serial.println(WiFi.localIP());

server.on("/", handle_OnConnect);
server.onNotFound(handle_NotFound);

server.begin();
Serial.println("HTTP server started");

}
void loop() {

server.handleClient();

}

void handle_OnConnect() {

Temperature = dht.readTemperature(); // Gets the values of the temperature
Humidity = dht.readHumidity(); // Gets the values of the humidity
server.send(200, "text/html", SendHTML(Temperature, Humidity));
}

void handle_NotFound() {
server.send(404, "text/plain", "Not found");
}

String SendHTML(float Temperaturestat, float Humiditystat) {
String ptr = "<!DOCTYPE html> <html>\n";
ptr += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
ptr += "<title>ESP8266 Weather Report</title>\n";
ptr += "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
ptr += "body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
ptr += "p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
ptr += "</style>\n";
ptr += "</head>\n";
ptr += "<body>\n";
ptr += "<div id=\"webpage\">\n";
ptr += "<h1>ESP8266 NodeMCU Temperatura</h1>\n";

ptr += "<p>Temperatura: ";
ptr += (int)Temperaturestat;
ptr += "°C</p>";
ptr += "<p>Humidade: ";
ptr += (int)Humiditystat;
ptr += "%</p>";

ptr += "</div>\n";
ptr += "</body>\n";
ptr += "</html>\n";
return ptr;
}

Atenção

const char* ssid = "SSID"; // Enter SSID here 
const char* password = "PASSWORD"; //Enter Password here

Deverá substituir os dados SSID e Password pelos dados correspondentes a sua rede.

Para visualzar os valores lidos pelo seu sensor deverá:

  1. Aceder ao monitor de serial fornecido pelo seu IDE para adquirir o IP do seu NodeMCU;
  2. Aceder ao IP apresentado através de um browser a sua escolha.

 

Para mais projetos, percorram o nosso blog, onde podem encontrar vários artigos interessantes relacionados com eletrónica, robótica e muito mais! Visitem também o nosso site, onde encontram tudo para eletrónica e robótica!