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
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
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á:
- Aceder ao monitor de serial fornecido pelo seu IDE para adquirir o IP do seu NodeMCU;
- 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!