Tutorial: como utilizar o Sensor de temperatura e umidade RHT03 com Arduino

Adquira estes componentes na Loja do Lab de Garagem

O sensor de temperatura e umidade RHT03 é um sensor de baixo custo e fácil utilização. A leitura é feita apenas por uma única saída do sensor. O sensor já está calibrado e não precisa de componentes extras para funcionamento. Exige apenas um Resistor de Pull-UP no pino de leitura.

Para utilizá-lo com Arduino é necessário a biblioteca dht.cpp e dht.h que pode ser adquirida aqui. Na página não tem nenhum link e sim o próprio código postado na página. Ainda na página da biblioteca, está escrito o dht.cpp e logo abaixo está o código da biblioteca. Copie e cole em um editor de texto, salve-o como dht.cpp e coloque em uma pasta própria (você pode chamá-la de DHT). Idem para o dht.h. Agora copie a pasta que você colocou os arquivos dht.cpp e dht.h e cole dentro da pasta "libraries" da IDE do Arduino.

Vendo o datasheet do RHT03, podemos ver a pinagem e assim fazer as ligações com Arduino:

Agora que sabemos sua pinagem, vamos para a ligação do sensor RHT03 com Arduino:

O sensor RHT03, funciona a partir de 3.3V a 6V, neste tutorial fizemos com a saída de 5V do Arduino, mas nada impede que você utilize o 3.3V do Arduino. O pino 2 do sensor vai para o pino digital 5 do Arduino com um resistor de 1Kohm de Pull-Up como é visto no datasheet pela imagem abaixo:

E o pino 3 fica em aberto (Not Connected). Agora que você já colocou a biblioteca na pasta "libraries" localizada na pasta da IDE do Arduino e já fez as ligações demonstradas, vamos para a programação exemplo modificada do site:

#include <dht.h>

dht DHT;


#define DHT22_PIN 5

void setup()
{
Serial.begin(115200);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void loop()
{
// READ DATA
Serial.print("DHT22, \t");
int chk = DHT.read22(DHT22_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// DISPLAY DATA
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.println(DHT.temperature, 1);

delay(1000);

}

Na programação exemplo, se as ligações estiverem certas, o sensor vai iniciar e mostrará a umidade e temperatura como mostrado na figura abaixo:

No Serial Monitor a umidade relativa do ar e a temperatura em graus Celsius!

E pronto! Simples e fácil! Esperamos que tenham gostado!! Se tiverem dúvidas, postem aqui mesmo no blog! Temos um post para sugestões de tutoriais clicando aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas,cliquem aqui e aqui, respectivamente!

Referências:

http://arduino.cc/playground/Main/DHTLib

http://www.labdegaragem.org/loja/index.php/34-sensores/sensor-de-te...

http://www.sparkfun.com/products/10167

Exibições: 31854

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 bruno panunto em 31 março 2015 às 19:03

Boa tarde ,sou novo aki ,eu queria saber como eu posso acresentar um chave de liga e desliga no sistema e como eu posso determinar um padrão (temperatura e umidade ) para que seja ativado automaticamente (led) quando atingido o padão ??? presiço muito de uma ajuda para esse sistema ...preciso saber como acresentar o led no codigo... Obg. A guardando uma solução ...

Comentário de Nicholas Dicati em 5 março 2014 às 18:01

Resolvi!

Utilizei um resistor de 10 kOhm.

Comentário de Nicholas Dicati em 26 fevereiro 2014 às 10:14

Bom dia pessoal,

eu estou usando um DHT11, segui os passos, mas aparece valores malucos.

DHT TEST PROGRAM
LIBRARY VERSION: 0.1.09

Type,    status,    Humidity (%),    Temperature (C)

DHT22,     OK,    819.2,    691.2

Alguém tem ideia do que pode estar acontecendo?

Abraços.

Comentário de kleber martins de moura em 13 dezembro 2013 às 9:13

O programa do arduino esta dando erro e não consigo rodar

sketch_dec13b:21: error: 'DHTLIB_OK' was not declared in this scope
sketch_dec13b:24: error: 'DHTLIB_ERROR_CHECKSUM' was not declared in this scope
sketch_dec13b:27: error: 'DHTLIB_ERROR_TIMEOUT' was not declared in this scope

Comentário de Tiago Aoki em 20 setembro 2013 às 2:39

Alguém pode me ajudar respondendo uma dúvida que tenho, preciso saber se é possível usar o data acquistion do LabView utilizando este sensor e o arduino. Obrigado

Comentário de Marcus A G da Rocha em 28 maio 2013 às 19:55

Fredman, no laddegaragem tem um projeto de nível intermediário em que um camarada acionou o relé shield usando o if, eu acho que é exatamente o que voce quer.

Comentário de Fredman Carlos de Moraes em 28 maio 2013 às 14:56

Alguém poderia, me dizer em que ponto do código apresentado no tutorial eu poderia fazer um if para acionar um led caso a umidade ultrapasse determinado valor?

Comentário de Marcus A G da Rocha em 26 maio 2013 às 21:56

Não consegui importar a biblioteca do DHT03 para o arduino, conforme o procedimento do tutorial. Alguem pode me ajudar.

Comentário de Marcus A G da Rocha em 16 maio 2013 às 2:08

Alguém poderia, me dizer em que ponto do código apresentado no tutorial eu poderia fazer um if para acionar um led caso a umidade ultrapasse determinado valor?

Comentário de Laboratório de Garagem em 15 maio 2013 às 10:49

Fredman,

É possível sim mas você teria que colocar um RTC. Com o RTC você poderia por exemplo fazer uma programação que te retornasse a máxima e mínima do dia (toda vez que chegasse "X" hora ele gera este relátório).

Jovandir,

Você parece estar com dúvidas com relação ao shield Ethernet  O que fizemos neste tutorial encaminha dos dados via serial. Veja os tutoriais com o shield Ethernet para aprender a como mandar os dados por ele.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço