ESP32 - Sensor de Temperatura e Umidade

Este tutorial ensina como usar o ESP32 para ler os valores de temperatura e umidade dos sensores DHT11 ou DHT22 e mostrá-los no Serial Monitor.

Sobre os Sensores de Temperatura e Umidade DHT11 e DHT22

Em resumo, o sensor DHT22 é mais preciso e tem uma faixa maior, mas é mais caro que o DHT11. Vamos ver o que eles têm em comum e as diferenças entre eles

O que têm em comum

  • A mesma pinagem
  • A mesma ligação ao ESP32
  • Código ESP32 parecido

As diferenças

A tabela abaixo mostra as diferenças detalhadas entre o DHT11 e o DHT22:

DHT22 DHT11
Preço baixo custo custo muito baixo
Faixa de umidade 0% a 100% 20% a 80%
Precisão de umidade ± 2% a 5% 5%
Faixa de temperatura -40°C a 80°C 0°C a 50°C
Precisão de temperatura ± 0,5°C ± 2°C
Taxa de leitura 0,5Hz (uma vez a cada 2 segundos) 1Hz (uma vez por segundo)
Dimensões 15,1mm x 25mm x 7,7mm 15,5mm x 12mm x 5,5mm
Tensão de operação3 a 5V 3 a 5V

Pinagem do DHT11 e do DHT22

Os sensores DHT11 e DHT22 têm 4 pinos:

  • Pino GND: conecte este pino ao GND (0V)
  • Pino VCC: conecte este pino ao VCC (3,3V ou 5V)
  • Pino DATA: este pino é usado para a comunicação entre o sensor e o ESP32
  • Pino NC: Não conectado
Pinagem dos sensores de temperatura e umidade DHT11 e DHT22

Recomendamos fortemente que você use os módulos de sensor DHT11 e DHT22. Os módulos têm um resistor embutido e têm apenas três pinos: VCC, GND e DATA (ou, alternativamente: +, - e OUT).

Pinagem dos módulos de temperatura e umidade DHT11 e DHT22
image source: diyables.io

A ordem dos pinos no módulo pode ser diferente entre os fabricantes. Verifique com atenção as identificações dos pinos impressas no módulo.

Diagrama de Ligação entre DHT11/DHT22 e ESP32

A ligação ao ESP32 é a mesma para os dois sensores. Na forma original, é necessário um resistor de 5K a 10K Ohms para manter a linha de dados em nível alto e permitir a comunicação entre o sensor e o ESP32

Ligação do Sensor DHT11 com ESP32

Diagrama de ligação do sensor de temperatura e umidade DHT11 com ESP32

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Ligação do Sensor DHT22 com ESP32

Diagrama de ligação do sensor de temperatura e umidade DHT22 com ESP32

This image is created using Fritzing. Click to enlarge image

Ligação do Módulo DHT11 com ESP32

A maioria dos módulos de sensor DHT11 tem um resistor embutido, então você não precisa adicioná-lo. Isso nos poupa um pouco de trabalho de ligação ou soldagem.

Diagrama de ligação do módulo de temperatura e umidade DHT11 com ESP32

This image is created using Fritzing. Click to enlarge image

Ligação do Módulo DHT22 com ESP32

A maioria dos módulos de sensor DHT22 tem um resistor embutido, então você não precisa adicioná-lo. Isso nos poupa um pouco de trabalho de ligação ou soldagem.

Diagrama de ligação do módulo de temperatura e umidade DHT22 com ESP32

This image is created using Fritzing. Click to enlarge image

Código ESP32 - DHT11

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-temperature-humidity-sensor */ #include <DHT.h> #define DHT_SENSOR_PIN 21 // ESP32 pin GPIO21 connected to DHT11 sensor #define DHT_SENSOR_TYPE DHT11 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { Serial.begin(9600); dht_sensor.begin(); // initialize the DHT sensor } void loop() { // read humidity float humi = dht_sensor.readHumidity(); // read temperature in Celsius float tempC = dht_sensor.readTemperature(); // read temperature in Fahrenheit float tempF = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(tempC) || isnan(tempF) || isnan(humi)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Código ESP32 - DHT22

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-temperature-humidity-sensor */ #include <DHT.h> #define DHT_SENSOR_PIN 21 // ESP32 pin GPIO21 connected to DHT22 sensor #define DHT_SENSOR_TYPE DHT22 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { Serial.begin(9600); dht_sensor.begin(); // initialize the DHT sensor } void loop() { // read humidity float humi = dht_sensor.readHumidity(); // read temperature in Celsius float tempC = dht_sensor.readTemperature(); // read temperature in Fahrenheit float tempF = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(tempC) || isnan(tempF) || isnan(humi)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Os dois códigos acima diferem em apenas uma linha.

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Clique no ícone Libraries na barra esquerda do Arduino IDE.
  • Digite “DHT” na caixa de pesquisa e procure a biblioteca DHT sensor library da Adafruit
  • Instale a biblioteca clicando no botão Install.
Biblioteca DHT sensor para ESP32
  • Uma janela aparece pedindo que você instale as dependências da biblioteca
  • Instale todas as dependências da biblioteca clicando no botão Install All.
Biblioteca Adafruit Unified Sensor para ESP32
  • Copie um dos códigos acima e abra-o no Arduino IDE
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload no Arduino IDE
  • Deixe o sensor mais frio ou mais quente. Por exemplo, colocando o sensor perto de uma xícara de café quente
  • Veja o resultado no Serial Monitor. Ele se parece com o seguinte:.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 32.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 32.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!