Tutorial - Alarme com sensores de temperatura e umidade

Adquira estes componentes na Loja do Lab de Garagem

Mostramos neste tutorial um pouco mais sobre os sensor digitais de temperatura e umidade relativa RHT03 (DHT22) e o DHT11. Utilizando um alto-falante, vamos fazer um alarme sonoro que será acionado quando a temperatura ou a umidade passar de um valor determinado via software. 

 

Lista de Materiais

1 x  Arduino Uno Rev 3 ou Garagino Rev 1 

1 x Sensor RHT03 (também conhecido como DHT22) ou Módulo sensor de ...

1 x Alto-falante

1 x Resistor de 4K7 Ω

1 x Capacitor de 100μF / 25 V

Alguns jumpers

 

Bibliotecas necessárias

Iremos utilizar a biblioteca DHT-sensor-library distribuída pela Adafruit, ela já implementa todo o protocolo de comunicação utilizado por estes sensores e você pode baixa-la clicando neste link.

 

Os sensores DHT22 e DHT11

Figura 1 - DHT22/RHT03 (direita) e módulo que utiliza o DHT11 (esquerda)

 

Estes sensores de temperatura e de umidade relativa de baixo custo, já são calibrados e se comunicam com o Arduino através do protocolo MaxDetect (implementado pela biblioteca) que utiliza apenas 1 fio do microcontrolador para receber as informações.Por este motivo, eles não são muito rápidos, então recomenda-se amostragens com tempos superiores a 2 segundos neste dispositivos (como a latência de sistemas térmicos é alta, isto não deve afetar seus projetos). 

O valor de temperatura é aferido através de um termistor NTC e a umidade relativa através de um sensor capacitivo (capacitor de polímero especial). Há também uma curva de compensação de temperatura que fica salva dentro de uma memória OTP (um tipo de memória ROM) e faz ajustes por toda a faixa de atuação deste sensor.

Eles podem ser alimentados de 3,3 a 5,5V e contam com um encapsulamento pequeno de 4 pinos

Abaixo você pode ver mais detalhes sobre o encapsulamento e os pinos.

Figura 2 - Detalhes sobre a pinagem e encapsulamento do DHT22/RHt03

 

 

Diferença entre o DHT22 e o DH11

Abaixo segue lista com as principais diferenças entre eles:

Principais diferenças entre os dois sensores

O Circuito

Imagem com o circuito que utilizamos para fazer o alarme por temperatura e umidade com Arduino:

 

O Sketch 

 

// Example de Alarme por temperatura e umidade
// Lab. de Garagem

#include "DHT.h"

#define DHTPIN 7     // O pino onde o DHT vai esta conectado

// Descomente linha com o sensor que vai utilizar
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22 - RHT03 - AM2302
//#define DHTTYPE DHT21   // DHT 21 - AM2301 

DHT dht(DHTPIN, DHTTYPE);

#define ALARME 3 // pino onde o Alto-falante esta conectado

float tmax=50,tmin=0,temp, umid;

void setup()
{
  Serial.begin(9600);
  Serial.println("Alarme por temperatura e umidade");
  Serial.print("Digite a temperatura maxima: ");
  while(tmax == 50)
  {
    if (Serial.available() > 0)
    {  
      tmax= Serial.parseFloat();
    }
  }  
  Serial.println (tmax);
  Serial.print("Digite a temperatura minima: ");
  while(tmin == 0)
  {
    if (Serial.available() > 0)
    {  
      tmin= Serial.parseFloat();
    }
  } 
  Serial.println (tmin);
  dht.begin();
}

void loop()
{
  delay(2000); // delay para garantir no minimo 2s entre cada uma das leituras
  umid = dht.readHumidity(); // leitura de umidade
  temp = dht.readTemperature(); // leitura da temperatura
  if (isnan(temp) || isnan(umid)) //Verifica se é um valor válido
  {
    Serial.println("\nFalha ao ler o Sensor DHT\n");
    tone (ALARME,440,1000);
  } 
  else
  {
    if (temp > tmin && temp < tmax)
    {
      noTone(ALARME);
      leituraSerial();
    }
    else
    {
      tone (ALARME,440,1000);
      Serial.println("PERIGO!!! TEMPERATURA FORA DO ESPERADO");
      Serial.print("Temperatura deve estar entre ");
      Serial.print(tmin);
      Serial.print(" e ");
      Serial.println(tmax);
      leituraSerial();
    }
  }
}

void leituraSerial()
{
      Serial.print("Umidade relativa: ");
      Serial.print(umid);
      Serial.print(" %\t");
      Serial.print("Temperature: ");
      Serial.print(temp);
      Serial.println(" *C\n");
}

 

 

Conclusão 

Este sensores tem um baixo custo e são de fácil utilização com esta biblioteca. O datasheet solicita cuidado especial com a exposição direta aos raios ultra-violeta e também com vapor de produtos químicos. Espero que gostem do tutorial e se tiver alguma sugestão ou dúvida deixem nos comentário logo abaixo.

\o/

 

Referência

http://learn.adafruit.com/dht/overview

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-sensor-de-temperatura-e-umidade-rht03

Exibições: 31120

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Jose Luis Ocerin em 11 março 2015 às 11:28

Também não consegui compilar. Será que mudaram a biblioteca?

Os erros:
Teste_umidificador.ino:4:1: error: 'dht' does not name a type

Teste_umidificador.ino: In function 'void setup()':
Teste_umidificador.ino:12:16: error: 'DHT_LIB_VERSION' was not declared in this scope
Teste_umidificador.ino: In function 'void loop()':
Teste_umidificador.ino:20:14: error: expected primary-expression before '.' token
Teste_umidificador.ino:23:6: error: 'DHTLIB_OK' was not declared in this scope
Teste_umidificador.ino:26:6: error: 'DHTLIB_ERROR_CHECKSUM' was not declared in this scope
Teste_umidificador.ino:29:6: error: 'DHTLIB_ERROR_TIMEOUT' was not declared in this scope
Teste_umidificador.ino:37:17: error: expected primary-expression before '.' token
Teste_umidificador.ino:39:19: error: expected primary-expression before '.' token

Comentário de EDUARDO BICALHO LIMA em 15 setembro 2014 às 10:28

Tem alguma coisa errada no seu Sketch não esta compilando. 

Comentário de Marco Silva em 7 dezembro 2013 às 19:12

Oi pessoal,

Tenho um talho e ao ver este tutorial fiquei muito interessado porque estava de momento a procura de uma "coisa" muito similar ao aqui apresentado e vendo outros tutoriais fiquei com uma questão, será possível só com um Arduino ter os sensores de temp. e humidade e mostrar essa informação num display LCD 16x2 com a possibilidade de fazer a impressão em papel através de uma mini impressora térmica da adafruit ???

Comentário de Tiago Genevro em 29 outubro 2013 às 23:49

otimo projeto, parabens, testei aqui  e deu certinho.

Comentário de Cortez Neto em 22 setembro 2013 às 0:45

Que linguagem de programação é essa?

Comentário de Yure Vieira em 1 setembro 2013 às 7:12

Não tem problema usar uma carga de baixa impedância(alto-falante), na saída digital?

 

Comentário de Samir M Teixeira em 9 agosto 2013 às 9:21

muito bom, parabéns

Comentário de Laboratório de Garagem em 7 agosto 2013 às 17:59

Olá José,

O Garagino Rev 1 já vem montado.

Comentário de Jose Everton Figueiredo Gomes em 4 agosto 2013 às 18:20

Garagino Rev 1 ja vem montado ou tem q montar?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço