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:
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.
Onde Comprar?