
Qual é a temperatura do seu quarto? O ar está úmido ou seco? O sensor DHT11 mede a temperatura e a umidade, e o Arduino mostra os valores em um display LCD de duas linhas, atualizando a cada poucos segundos. Se houver algum problema com o sensor, aparece uma mensagem de erro; é o primeiro passo para criar sua própria estação meteorológica.
Vídeo
Esquema do circuito

Código-fonte
Arduino (C++)
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Temperature and Humidity with DHT11
4// ─────────────────────────────────────────
5// The DHT11 sensor measures room temperature and humidity; the I2C LCD
6// shows the temperature on the first line and the humidity on the second.
7// The reading refreshes every 2 s. If a reading fails the screen shows
8// "Sensor Error!".
9//
10// Pins:
11// D3 -> DHT11 data
12// (10k resistor between data and 5V, pull-up)
13// A4 -> LCD SDA
14// A5 -> LCD SCL
15// DHT11 and LCD: VCC to 5V, GND to GND
16
17#include <LiquidCrystal_I2C.h>
18#include <Wire.h>
19#include <DHT.h>
20
21#define DHTPIN 3 // DHT11 data pin
22#define DHTTYPE DHT11 // Sensor type in use
23
24LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16x2 LCD
25DHT dht(DHTPIN, DHTTYPE);
26
27void setup() {
28 dht.begin();
29 // Modern libraries prefer init() over begin()
30 lcd.init();
31 lcd.backlight();
32}
33
34void loop() {
35 // Read humidity and temperature (C)
36 float humidity = dht.readHumidity();
37 float temperature = dht.readTemperature();
38
39 // Check if readings failed
40 if (isnan(humidity) || isnan(temperature)) {
41 lcd.setCursor(0, 0);
42 lcd.print("Sensor Error! ");
43 return;
44 }
45
46 // Line 1: temperature
47 lcd.setCursor(0, 0);
48 lcd.print("Temp: ");
49 lcd.print(temperature);
50 lcd.print((char)223); // Degree symbol (°)
51 lcd.print("C ");
52
53 // Line 2: humidity
54 lcd.setCursor(0, 1);
55 lcd.print("Humidity: %");
56 lcd.print((int)humidity); // Print as a whole number (45)
57 lcd.print(" "); // Trailing spaces to clear old data
58
59 delay(2000); // DHT11 is slow, 2 seconds is more stable
60}
61
Perguntas frequentes
Qual é a precisão das medições do DHT11?▾
O DHT11 mede temperatura com precisão de ±2 °C e umidade com precisão de ±5%, e opera na faixa de 0–50 °C. Para medições mais precisas, recomenda-se o DHT22 (±0,5 °C) ou o BME280.
Aparece "nan" ou uma mensagem de erro no display. Por quê?▾
Não foi possível ler o sensor. Verifique o resistor de pull-up de 10 kΩ no pino de dados, o tipo de sensor (DHT11) nas configurações da biblioteca e se há uma espera de pelo menos 1–2 segundos entre as leituras.
Por que as leituras demoram para atualizar?▾
O DHT11 pode fazer no máximo uma medição por segundo. Tentar ler com mais frequência resulta em valores incorretos ou desatualizados; recomenda-se esperar 2 segundos entre as medições.
Posso calcular a sensação térmica?▾
Sim, a função computeHeatIndex() da biblioteca DHT calcula a sensação térmica com base na temperatura e na umidade.
