Tutorial ESP32 28/55 - Sensor de Temperatura DHT11 com LCD | Kit de Aprendizado IoT ESP32 da SunFounder
Neste tutorial, exploraremos como interligar o sensor de temperatura e umidade DHT11 com o microcontrolador ESP32. Usando esta configuração, mediremos a temperatura e a umidade ambiente, exibindo os resultados tanto no monitor serial quanto em uma tela LCD. Além disso, implementaremos um buzzer que é ativado quando a temperatura excede um determinado limite.
Este projeto não apenas demonstra o uso do sensor DHT11, mas também destaca a versatilidade do ESP32, que inclui capacidades de Wi-Fi e Bluetooth integradas. Ao final deste tutorial, você terá uma configuração funcional que monitora continuamente as condições ambientais e fornece feedback em tempo real.
Para um guia visual, confira o vídeo que acompanha este tutorial (no vídeo às 00:00). Vamos mergulhar!
Hardware Explicado
Os principais componentes usados neste projeto são o microcontrolador ESP32, o sensor DHT11 e um display LCD. O ESP32 servirá como o cérebro da operação, processando dados do sensor DHT11 e controlando a saída do LCD.
O sensor DHT11 mede a umidade e a temperatura, fornecendo leituras através de uma única linha de dados. Ele requer uma fonte de alimentação de 3,3V a 5,5V e tem um baixo consumo de corrente, tornando-o adequado para aplicações alimentadas por bateria. O LCD exibirá os valores de temperatura e umidade em tempo real.
Detalhes da Ficha Técnica
| Fabricante | POMAR |
|---|---|
| Número da peça | DHT11 |
| Tensão de lógica/IO | 3,3 - 5,5 V |
| Tensão de alimentação | 3,3 V |
| Corrente de saída (por canal) | 0,5 mA típico |
| Corrente de pico (por canal) | 2,5 mA máx. |
| Orientação sobre frequência PWM | N/A |
| Limiares de lógica de entrada | 0,3 VCC (baixo), 0,7 VCC (alto) |
| Queda de tensão / RDS(on)saturação | Não aplicável |
| Limites térmicos | 0°C a 60°C |
| Pacote | DIP-4 |
| Notas / variantes | Resolução: 1°C / 1% UR |
- Use um resistor pull-up (5 kΩ recomendado) na linha de dados.
- Mantenha os fios do sensor curtos (menos de 20 m) para garantir leituras precisas.
- Alimente o DHT11 com 3,3V para um desempenho ideal.
- O período de amostragem não deve ser inferior a 1 segundo.
- Verifique as conexões da fiação se as leituras falharem (por exemplo, não conectado, pino incorreto).
Instruções de Fiação


Para conectar o sensor DHT11 ao ESP32, comece ligando o pino VCC do DHT11 (o pino mais à esquerda) à saída de 3,3V do ESP32. Em seguida, conecte o pino de terra (o quarto pino) a um pino de terra (GND) no ESP32. O pino de dados (o segundo pino) deve ser conectado ao pino GPIO 14 no ESP32.
Para o LCD, conecte o pino VCC à saída de 5V do ESP32. O pino de terra deve ser conectado a um pino de terra no ESP32. Os pinos SDA e SCL do LCD devem ser conectados aos pinos GPIO 21 e 22, respectivamente. Certifique-se de que todas as conexões estejam seguras para evitar problemas ao ler os dados.
Exemplos de Código e Passo a Passo
Na primeira parte do código, inicializamos o sensor DHT e definimos o número do pino com#define DHTPIN 14Este identificador nos permite referenciar facilmente o pino conectado à linha de dados do DHT11 ao longo do código.
#include "DHT.h"
#define DHTPIN 14 // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
No textosetup()função, inicializamos a comunicação serial para depuração e começamos o sensor DHT. O loop principal inclui um atraso de 2 segundos para garantir que não sobrecarreguemos o sensor com solicitações.
Em seguida, lemos os valores de umidade e temperatura usandofloat humidity = dht.readHumidity();efloat temperature = dht.readTemperature();Esses identificadores armazenam os valores medidos para uso posterior.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Finalmente, verificamos se há erros de leitura e imprimimos os valores no monitor serial usandoSerial.print(). Isso nos permite observar as leituras em tempo real.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
No texto do código LCD, inicializamos o LCD e exibimos a temperatura e a umidade na tela usando olcd.print()função. Isso fornece uma representação visual dos dados coletados pelo sensor DHT11.
Demonstração / O que Esperar
Uma vez que tudo esteja conectado corretamente e o código esteja carregado no ESP32, você deve ver as leituras de temperatura e umidade exibidas no monitor serial e na tela LCD. Se a temperatura exceder 30°C, o buzzer será ativado, fornecendo um alerta sonoro.
Tenha cuidado com conexões invertidas e certifique-se de que o sensor não esteja exposto a condições extremas, pois isso pode afetar as leituras. Você pode precisar ajustar o limite para o alarme dependendo das suas necessidades (no vídeo às 15:30).
Marcadores de Vídeo
- 00:00 Início
- 1:57 Introdução ao DHT11
- 6:18 Ligação do DHT11 com o ESP32
- 7:67 Código Arduino explicado
- 11:49 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 13:30 Demonstração do projeto
- 15:32 Obtendo Fahrenheit
- 16:04 exibindo temperatura no LCD usando ESP32
- 17:20 DHT11 e LCD com código ESP32
- 19:49 Demonstração do DHT11 LCD com ESP32
- 21:33 Tomando medidas sobre o valor da Temperatura
#include "DHT.h"
#define DHTPIN 14 // Defina o pino conectado ao pino de dados do DHT11.
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT11 test!");
dht.begin();
}
void loop() {
// Aguarde alguns segundos entre as medições.
delay(2000);
// Medir a temperatura ou a umidade leva cerca de 250 milissegundos!
// As leituras do sensor podem também estar até 2 segundos 'atrasadas' (é um sensor muito lento)
float humidity = dht.readHumidity();
// Leia a temperatura em Celsius (o padrão)
float temperature = dht.readTemperature();
// Verifique se alguma leitura falhou e saia cedo (para tentar novamente).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Imprima a umidade e a temperatura
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
}
/*
* Este é um código Arduino para medir a temperatura e a umidade usando DHT11/DHT22 e exibi-los na tela LCD, escrito por Ahmad Shamshiri para o kit de aprendizado ESP32 IoT da SunFounder. Assista ao vídeo completo em https://youtu.be/qRUFZX4eDJg. O código completo, o diagrama de fiação e outros recursos para este tutorial estão em https://robojax.com/RJT711.
*/
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 14 // Defina o pino conectado ao pino de dados DHT11.
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
// Inicialize o objeto LCD com o endereço I2C 0x27, 16 colunas e 2 linhas
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Inicie a comunicação serial a 115200 bps
Serial.begin(115200);
// Inicialize o dht11
dht.begin();
// Inicialize o LCD
lcd.init();
lcd.backlight();
// Limpe o LCD
lcd.clear();
}
void loop() {
// Espere alguns segundos entre as medições.
delay(2000);
// Ler a temperatura ou a umidade leva cerca de 250 milissegundos!
// As leituras do sensor podem ter até 2 segundos de 'atraso' (é um sensor muito lento)
float humidity = dht.readHumidity();
// Leia a temperatura em Celsius (o padrão)
float temperature = dht.readTemperature();
// Verifique se alguma leitura falhou e saia cedo (para tentar novamente).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Exibir temperatura e umidade no LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.write(223); // Símbolo de grau
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
}
Common Course Links
Common Course Files
Coisas que você pode precisar
-
AmazonasCompre o DHT11 da Amazonamzn.to
-
BanggoodCompre o módulo DHT11 da Banggood.banggood.com
Recursos e referências
-
Documentação
Arquivos📁
Arquivo Fritzing
-
Sensor de Umidade e Temperatura DHT11 (3 pinos)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Manual do Usuário
-
Manual do Usuário DHT11
robojax-DHT11_manual.pdf0.82 MB