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 ...
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
Comentar
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
Tem alguma coisa errada no seu Sketch não esta compilando.
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 ???
otimo projeto, parabens, testei aqui e deu certinho.
Que linguagem de programação é essa?
Não tem problema usar uma carga de baixa impedância(alto-falante), na saída digital?
muito bom, parabéns
Olá José,
O Garagino Rev 1 já vem montado.
Garagino Rev 1 ja vem montado ou tem q montar?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)