Nesse Tutorial, você aprenderá como funcionam os Sensores DHT11 e DHT22 de umidade e temperatura e como fazer uma montagem desses sensores com o Arduino.
Umidade é a quantidade de vapor de água na atmosfera. A umidade relativa do ar é uma importante medida usada na previsão do tempo, e indica a possibilidade de precipitação chuva.
A alta quantidade de vapor de água na atmosfera favorece a ocorrência de chuvas. Já com a umidade do ar baixa, é difícil chover.
A alta umidade durante dias quentes faz a sensação térmica aumentar, ou seja, a pessoa tem a impressão de que está mais calor, devido à redução da eficácia da transpiração da pele, e assim reduzindo o resfriamento corporal.
De acordo com a OMS (Organização Mundial da Saúde), valores de umidade abaixo de 20% oferecem risco à saúde, podendo provocar desidratação nas pessoas.
O instrumento chamado de Higrômetro é usado para a medição da umidade relativa presente na atmosfera.
É utilizado principalmente em estudos do clima, mas também em locais fechados onde a presença de umidade excessiva ou abaixo do normal poderia causar danos, por exemplo dentro de museus, bibliotecas e em laboratórios.
Essas são algumas aplicações para os Sensores de Umidade e Temperatura:
Neste artigo, vamos ensinar você sobre o funcionamento dos Sensores DHT11 e DHT22 de umidade e temperatura. Veja, também, como fazer uma montagem desses sensores com o Arduino. Confira!
O sensor DHT11 é um dispositivo de baixo custo usado para medição de umidade e temperatura do ar.
O sensor de umidade é capacitivo e o sensor de temperatura é um termistor NTC, isto é um resistor sensível à variações de temperatura.
Dentro do sensor existe um microcontrolador que faz as medições e transmite os valores no formato digital através de um pino de saída.
Segundo o fabricante, a transmissão digital pode ser realizada através de um cabo de até 20 metros. Mas vale a observação de que a longa exposição do sensor ao sol, poderá afetar a performance do mesmo.
Confira as especificações do sensor DHT11, sempre lembrando que esses valores podem variar dependendo do fabricante:
O Sensor DHT22 ou AM2302 também é usado para medição de umidade e temperatura do ar. Só que com características melhores do que o do DHT11.
Tem maior precisão nas medições e abrange uma faixa maior de temperatura e umidade. Por isso ele custa um pouco mais caro.
Confira as especificações do sensor DHT22, sempre lembrando que esses valores podem variar dependendo do fabricante:
Existem algumas limitações no tamanho do cabo do sensor. Se a tensão de alimentação for de 3,3V, o cabo não pode exceder um metro.
Além disso, uma longa exposição do sensor ao sol, também poderá afetar a performance do mesmo.
Para os curiosos, veja essa imagem do sensor DHT22 aberto e sem a tampa.
Após a alimentação de tensão dos Sensores DHT11 ou DHT22, aguarde cinco segundos para o circuito se estabilizar. Um capacitor de 100 uF é recomendado entre o pino VCC e o GND.
No pino de saída, deve ser usado também um resistor de pullup (4,7K ohms). No caso do módulo sensor DHT11, esses componentes não são necessários pois já estão montados na placa.
A comunicação dos dados no barramento serial (único pino) ocorre nos dois sentidos, isto é, do sensor para o Microcontrolador e vice-versa.
O protocolo de comunicação pode ser dividido em três partes :
Os dois primeiros bytes correspondem à umidade relativa na forma integral e decimal. O terceiro e quarto byte formam a temperatura em graus Celsius na forma integral e decimal. O último byte é o checksum dos dados.
Se quiser saber mais sobre os sensores e os protocolos, sugerimos a leitura dos Datasheets deste documento.
A montagem dos Sensores DHT com Arduino é muito simples.
Como os fios de ligação são curtos, não conectei o capacitor como recomendado. Se for usar cabos mais extensos, monte o capacitor entre o VCC e o terra. Mas o resistor de pullup de 4,7 K ohms é necessário.
Materiais necessários para o projeto com Sensores DHT11 e DHT22
Você também pode substituir o sensor indicado acima por uma das opções a seguir:
O Diagrama Fritzing abaixo serve para os dois sensores, DHT11 e DHT22, já que eles têm a mesma pinagem.
Mas não se esqueça de configurar no programa, o sensor usado. Já que existem algumas diferenças nos protocolos de comunicação.
Considerando que o módulo DHT11 já tem o resistor de pullup no pino de dados, nem esse resistor é necessário. A alimentação recomendável é de 5 V.
Tanto para o uso do Sensor DHT11, quanto para o DHT22, a biblioteca que será usada é a da Adafruit. Ela segue os padrões da IDE Arduino e é bem simples para usá-la.
Para instalar a nova Biblioteca DHT Sensor Library , clique em: Sketch > Incluir Biblioteca > Gerenciar Bibliotecas
Após abrir a janela do Gerenciador de Biblioteca, refine a busca digitando DHT Sensor Library. Na biblioteca da Adafruit, clique em More Info e depois em Instalar.
Após alguns segundos, ela será automaticamente instalada. Lembre-se que o seu computador precisa estar conectado na internet, para poder baixar a biblioteca. A
pós a instalação da Biblioteca, é necessário que feche e abra novamente o programa Arduino IDE.
O programa também é bem simples. Fiz uma tradução do exemplo da Biblioteca da Adafruit, para facilitar o entendimento.
O programa faz com que o Arduino se comunique com o Sensor DHT, para realizar as leituras de umidade e temperatura.
O mesmo programa poderá ser usado para os dois sensores (DHT11 ou DHT22). Mas somente um sensor deverá ser usado de cada vez. É necessário somente a definição no programa, do sensor a ser usado.
#define DHTTYPE DHT11 // Sensor DHT11
//#define DHTTYPE DHT22 // Sensor DHT22 ou AM2302
//#define DHTTYPE DHT11 // Sensor DHT11
#define DHTTYPE DHT22 // Sensor DHT22 ou AM2302
// Arduino - Sensor DHT - Umidade e Temperatura // https://blog.eletrogate.com/ // Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor #include <Adafruit_Sensor.h> // Biblioteca DHT Sensor Adafruit #include <DHT.h> #include <DHT_U.h> // selecione um sensor, retirando o comentário - duas barras #define DHTTYPE DHT11 // Sensor DHT11 //#define DHTTYPE DHT22 // Sensor DHT22 ou AM2302 #define DHTPIN 2 // Pino do Arduino conectado no Sensor(Data) DHT_Unified dht(DHTPIN, DHTTYPE); // configurando o Sensor DHT - pino e tipo uint32_t delayMS; // variável para atraso no tempo void setup() { Serial.begin(9600); // monitor serial 9600 bps dht.begin(); // inicializa a função Serial.println("Usando o Sensor DHT"); sensor_t sensor; dht.temperature().getSensor(&sensor); // imprime os detalhes do Sensor de Temperatura Serial.println("------------------------------------"); Serial.println("Temperatura"); Serial.print ("Sensor: "); Serial.println(sensor.name); Serial.print ("Valor max: "); Serial.print(sensor.max_value); Serial.println(" *C"); Serial.print ("Valor min: "); Serial.print(sensor.min_value); Serial.println(" *C"); Serial.print ("Resolucao: "); Serial.print(sensor.resolution); Serial.println(" *C"); Serial.println("------------------------------------"); dht.humidity().getSensor(&sensor); // imprime os detalhes do Sensor de Umidade Serial.println("------------------------------------"); Serial.println("Umidade"); Serial.print ("Sensor: "); Serial.println(sensor.name); Serial.print ("Valor max: "); Serial.print(sensor.max_value); Serial.println("%"); Serial.print ("Valor min: "); Serial.print(sensor.min_value); Serial.println("%"); Serial.print ("Resolucao: "); Serial.print(sensor.resolution); Serial.println("%"); Serial.println("------------------------------------"); delayMS = sensor.min_delay / 1000; // define o atraso entre as leituras } void loop() { delay(delayMS); // atraso entre as medições sensors_event_t event; // inicializa o evento da Temperatura dht.temperature().getEvent(&event); // faz a leitura da Temperatura if (isnan(event.temperature)) // se algum erro na leitura { Serial.println("Erro na leitura da Temperatura!"); } else // senão { Serial.print("Temperatura: "); // imprime a Temperatura Serial.print(event.temperature); Serial.println(" *C"); } dht.humidity().getEvent(&event); // faz a leitura de umidade if (isnan(event.relative_humidity)) // se algum erro na leitura { Serial.println("Erro na leitura da Umidade!"); } else // senão { Serial.print("Umidade: "); // imprime a Umidade Serial.print(event.relative_humidity); Serial.println("%"); } }
Essas são as telas do Monitor Serial da IDE , para o Sketch das montagens. Veja as diferenças nas leituras dos dois sensores.
Usando o Sensor DHT11:
E para o uso do Sensor DHT22:
Se gostou ou tiver alguma dúvida, deixe um comentário!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!