Sensor DHT11 de Temperatura e Umidade

Sensor DHT11 é muito utilizado em projetos eletrônicos e na robótica com auxílio de microcontroladores como Arduino, Raspberry Pi, ARM, AVR, PIC e outros.
Esse sensor permite fazer leituras de temperaturas na faixa de 0 a 50° Celsius e umidade na faixa de 20 a 90%, com uma precisão na temperatura de aproximadamente 2°C e na umidade de 5%.

Composição do Sensor DHT11

O elemento Sensor de Temperatura é um Termistor do tipo NTC e o Sensor de Umidade é do tipo HR202. O circuito interno possui um microcontrolador de 8 bits de alto desempenho, oferecendo excelente qualidade, resposta rápida, capacidade de anti-interferência e se comunica com o Arduino através de uma comunicação simplificada de barramento único.

Calibração

Cada elemento do Sensor DHT11 é devidamente calibrado em laboratório proporcionando um ótimo desempenho na leitura. O coeficiente de calibração é armazenado em forma de programa na memória OTP (One Time Programed), que é utilizado pelo processo interno de leitura do sensor.

Especificações do Sensor DHT11

    • Faixa de medição de umidade: 20 a 90% UR
    • Faixa de medição de temperatura: 0º a 50ºC
    • Alimentação: 3-5VDC (5,5VDC máximo)
    • Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA
    • Precisão de umidade de medição: ± 5,0% UR
    • Precisão de medição de temperatura: ± 2.0 ºC
    • Tempo de resposta: 2s

Sensor DHT11 com Arduino

Então, partindo para o projeto, percebe-se que a conexão do Sensor DHT11 com o Arduino é muito simples. Logo, é só fazer a ligação dos jumpers conforme o esquema:

Esquema DHT11

Em seguida, utilizaremos duas bibliotecas da Adafruit: a Adafruit_Sensor.h e a DHT.h .
Depois de incluirmos essas duas bibliotecas, utilizaremos o próprio exemplo DHT_Unified_Sensor com algumas alterações. Finalizando, agora é só carregar o código:

 1 #include <Adafruit_Sensor.h>
 2  #include <DHT.h>
 3  #include <DHT_U.h>
 4  
 5  #define DHTPIN 2     // Pino digital conectado ao sensor DHT
 6  
 7  // No ESP8266 O PIN 15 pode funcionar, mas o DHT deve ser desconectado durante o upload do programa
 8  
 9  // Selecionar o tipo de sensor:
10  #define DHTTYPE    DHT11     // DHT 11
11  //#define DHTTYPE    DHT22     // DHT 22 (AM2302)
12  //#define DHTTYPE    DHT21     // DHT 21 (AM2301)
13  
14  DHT_Unified dht(DHTPIN, DHTTYPE);
15  
16  uint32_t delayMS;
17  
18  void setup() {
19    Serial.begin(9600);
20    // Inicializar o dispositivo
21    dht.begin();
22    Serial.println(F("DHTxx Exemplo de sensor unificado"));
23    // Imprimir detalhes do sensor de temperatura
24    sensor_t sensor;
25    dht.temperature().getSensor(&sensor);
26    Serial.println(F("------------------------------------"));
27    Serial.println(F("Sensor de Temperatura"));
28    Serial.print  (F("Tipo de sensor: ")); Serial.println(sensor.name);
29    Serial.print  (F("Driver Vercao: "));  Serial.println(sensor.version);
30    Serial.print  (F("Unico ID:  ")); Serial.println(sensor.sensor_id);
31    Serial.print  (F("Max Valor:  ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
32    Serial.print  (F("Min Valor:  ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
33    Serial.print  (F("Precisao:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
34    Serial.println(F(" "));
35    Serial.println(F("------------------------------------"));
36    Serial.println(F(" "));
37    // Imprimir detales do sensor de umidade
38    dht.humidity().getSensor(&sensor);
39    Serial.println(F("Sensor de Umidade"));
40    Serial.print  (F("Tipo de sensor: ")); Serial.println(sensor.name);
41    Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
42    Serial.print  (F("Unico ID:  ")); Serial.println(sensor.sensor_id);
43    Serial.print  (F("Max Valor:  ")); Serial.print(sensor.max_value); Serial.println(F("%"));
44    Serial.print  (F("Min Valor:  ")); Serial.print(sensor.min_value); Serial.println(F("%"));
45    Serial.print  (F("Precisao:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));
46    Serial.println(F(" "));
47    Serial.println(F("------------------------------------"));
48    Serial.println(F(" "));
49    // Definir o tempo entre as leituras do sensor com base nos detalhes do sensor
50    delayMS = sensor.min_delay / 1000;
51  }
52  
53  void loop() {
54    // Tempo entre as leituras
55    delay(delayMS);
56    // Obter evento de temperatura e imprimir seu valor
57    sensors_event_t event;
58    dht.temperature().getEvent(&event);
59    if (isnan(event.temperature)) {
60      Serial.println(F("Erro de leitura de temperatura!"));
61    }
62    else {
63      Serial.print(F("Temperatura: "));
64      Serial.print(event.temperature);
65      Serial.println(F("°C"));
66    }
67    // Get humidity event and print its value.
68    dht.humidity().getEvent(&event);
69    if (isnan(event.relative_humidity)) {
70      Serial.println(F("Erro de leitura de umidade!"));
71    }
72    else {
73      Serial.print(F("Umidade: "));
74      Serial.print(event.relative_humidity);
75      Serial.println(F("%"));
76    }
77    Serial.println(F(" "));
78    Serial.println(F("------------------------------------"));
79    Serial.println(F(" "));
80    delay(3000);
81  }

Então, feito isso é só abrir o Monitor Serial e, finalmente, podemos ver a leitura dos resultados.

Exibição Monitor Serial DHT11

Onde Comprar?

LOJAS

 

Conheça também!