Sensor de temperatura e umidade DHT22 (AM2302)
O sensor de temperatura e umidade DHT22 (ou AM2302), é uma evolução do DHT11, do qual já falamos algumas vezes aqui no Arduino e Cia. É um sensor bem simples e prático de utilizar tanto com placas Arduino como com placas Raspberry Pi, ESP32, ESP8266, etc.
O Sensor de temperatura e umidade DHT22
O DHT22 é um sensor com baixo consumo de corrente (2,5 mA durante medições, e 100-150µA em standby), e que possui internamente um sensor de umidade capacitivo e um termistor, além de um conversor analógico/digital para comunicação com o microcontrolador.
O sensor DHT22 (datasheet) é semelhante ao DHT11 (embora um pouco maior). Ambos utilizam apenas 1 pino de dados para conexão ao microcontrolador, mas internamente eles possuem diferenças significativas.
O DHT22, por exemplo, é mais lento do que o DHT11, porém ele é capaz de medir uma faixa mais ampla de temperatura e umidade.
Para ilustrar isso montei uma tabela com as principais características de cada um:
Assim como seu antecessor, o DHT22 também possui 4 pinos, dos quais apenas 3 são usados para conexão ao microcontrolador:
Como você pode notar na imagem, recomenda-se deixar o pino 3 livre, ou seja, sem conexão.
Conexão do DHT22 ao Arduino
Utilizar esse sensor com o Arduino é muito fácil. Vamos montar um circuito usando o Arduino Uno e um display LCD 16×2. Um resistor de 10 K é utilizado no pino de dados do sensor como resistor pull-up.O pino de dados do sensor será ligado ao pino digital 7do Arduino:
Antes de carregar o programa que vai mostrar o valor da temperatura e umidade no display, como mostrado na imagem acima, baixe a biblioteca DHT nesse link. Descompacte o arquivo, renomeie a pasta para DHT e coloque-a dentro da pasta Libraries da IDE do Arduino.
Essa biblioteca também serve para outros sensores DHT, como o DHT11 e o DHT21. No início do programa, logo após a definição do pino do sensor, altere a linha #define DHTTYPE de acordo com o sensor que você está utilizando.
//Programa: Sensor de temperatura DHT22 //Autor: Arduino e Cia #include <DHT.h> #include <LiquidCrystal.h> //Pino conectado ao pino de dados do sensor #define DHTPIN 7 //Pinos do display LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Utilize a linha de acordo com o modelo do sensor //#define DHTTYPE DHT11 // Sensor DHT11 #define DHTTYPE DHT22 // Sensor DHT 22 (AM2302) //#define DHTTYPE DHT21 // Sensor DHT 21 (AM2301) //Definicoes do sensor : pino, tipo DHT dht(DHTPIN, DHTTYPE); //Array simbolo grau byte grau[8] ={ B00001100, B00010010, B00010010, B00001100, B00000000, B00000000, B00000000, B00000000,}; void setup() { //Inicializa o display lcd.begin(16, 2); lcd.clear(); //Cria o caracter customizado com o simbolo do grau lcd.createChar(0, grau); //Informacoes iniciais no display lcd.setCursor(0,0); lcd.print("Temp. : "); lcd.setCursor(13,0); //Mostra o simbolo do grau lcd.write(byte(0)); lcd.print("C"); lcd.setCursor(0,1); lcd.print("Umid. : "); lcd.setCursor(14,1); lcd.print("%"); Serial.begin(9600); Serial.println("Aguardando dados..."); //Iniclaiza o sensor DHT dht.begin(); } void loop() { //Aguarda 2 segundos entre as medicoes delay(2000); //Leitura da umidade float h = dht.readHumidity(); //Leitura da temperatura (Celsius) float t = dht.readTemperature(); //Verifica se o sensor esta respondendo if (isnan(h) || isnan(t)) { Serial.println("Falha ao ler dados do sensor DHT !!!"); return; } //Mostra a temperatura no serial monitor e no display Serial.print("Temperatura: "); Serial.print(t); lcd.setCursor(8,0); lcd.print(t); Serial.print(" *C "); //Mostra a umidade no serial monitor e no display Serial.print("Umidade : "); Serial.print(h); Serial.println(" %"); lcd.setCursor(8,1); lcd.print(h); }
Caso queira utilizar o circuito sem o display, os dados sobre temperatura e umidade também são enviados ao serial monitor:
Veja como utilizar este sensor de temperatura também no Raspberry no artigo Como ligar o sensor de temperatura DHT22 ao Raspberry Pi B+.
como eu faço para os valores sejam mostrados em apenas 3 digitos, ex: 27.3 graus, e não 27.35 com 4 digitos
ja mudei o codigo para int em vez de float, mas dai ele mostra apenas 2 digitos ex: 27 graus.
alguem pode me ajudar
Boa noite,
Mantenha o formato em float, e adicione um parâmetro no lcd.print() para que ele mostre apenas 1 digito :
lcd.print(t,1);
O numero 1 indica que você quer mostrar apenas 1 digito depois do ponto decimal.
Abraço !
Novamente, era exatamente o que eu procurava…sempre acho aqui no blog. auahahuahu obrigado!
Opa !!! fico contente em ajudar. 🙂
Valeu. Abraço!
não consegui compreender, como ficaria?
what is the value for the potentiometer? i wait for your response here: jose.gonzalez141992gmail.com
Hi Jose,
You can use any value that you have, but I recommend 10K, 50K or 100K, that are the most common types.
Best Regards !
Bom dia. Mais uma vez recorro aos que sabem muito mais.Estou montando uma pequena "estação" com Clock DS1307; LCD 128X64 ST7920; DHT22 (AM2302);
Não estou consiguindo fazer a função temperatura e humidade na tela, como faço para inserir os valores. A data e hora tudo bem, eu consigo. Só estou encontrando esta dificuldade com o DHT22. Já com o DHT11 tudo bem.
//EMAIL: [email protected]
SKETCK USANDO DHT11; LCD 128X64; DS1307
//——————DHT11_CLOCK_DS1307_LCD_128X64_ST7920———————————–
//————————USAR PLACA UNO R3
//D7-NC
//D6-E
//D5-R/W
//D4-RS
//GND-BLK
//BLA-VCC
//PSB-GND
//V0- MEIO DO POTENCIOMETRO —-
//—————————————————————–
#include
#include
#include // Comes with Arduino IDE
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X u8g(6, 5, 4 ,7); //Enable, RW, RS, RESET
int display = 1;
DS1307 rtc(A4, A5);//SDA to A4, SCL to A5 on Arduino
#define DHT11PIN 2
dht11 DHT11 ; //Inicializa o sensor
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr( 0, 10, "Data:" );
u8g.setFont(u8g_font_robot_de_niro);
u8g.drawStr( 0, 25, "UMIDADE:" );
u8g.setPrintPos(40, 25);///posição onde irá aparecer o valor da umidade
u8g.setFont(u8g_font_unifont);
u8g.print((float)DHT11.humidity);////umidade
u8g.setFont(u8g_font_robot_de_niro);
u8g.drawStr( 85, 25, "%" );
u8g.drawStr( 0, 45, "TEMPERATURA:" );
u8g.drawStr( 102, 45, "*C" );
u8g.setPrintPos(60, 45);////posição onde irá aparecer o valor da temperatura
u8g.setFont(u8g_font_unifont);
u8g.print((float)DHT11.temperature);////temperatura
u8g.setFont(u8g_font_robot_de_niro);
u8g.drawStr( 0, 35, "Versao.:22-05-2015-A" );
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 40, 10, rtc.getDateStr(FORMAT_SHORT)); // DATA
u8g.drawStr( 0, 60, "Hr:" );
u8g.drawStr( 30, 60,rtc.getTimeStr()); // RELOGIO
u8g.drawStr( 93, 60, "," );
u8g.drawStr( 100, 60, rtc.getDOWStr(FORMAT_SHORT)); // DIA DA SEMANA
}
void setup(void) {
// flip screen, if required
// u8g.setRot180(); // COMANDO PARA LIGAR A TELA EM 180 GRAUS
// set SPI backup if required
//u8g.setHardwareBackup(u8g_backup_avr_spi);
//Aciona o relogio
rtc.halt(false);
//As linhas abaixo setam a data e hora do modulo
//e podem ser comentada apos a primeira utilizacao
// rtc.setDOW(MONDAY); //Define o dia da semana para ajuste do relogio
// rtc.setTime(20, 40, 47); //Define o horario para ajuste do relogio
// rtc.setDate(18, 8, 2014); //Define o dia, mes e ano para ajuste do relogio
//Definicoes do pino SQW/Out
rtc.setSQWRate(SQW_RATE_1);
rtc.enableSQW(true);
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
DHT11.read(DHT11PIN); //Lê as informações do sensor
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(500);
}
//EMAIL: [email protected]
//DHT22_CLOCK_DS1307_LCD_128X64_ST7920
//—-SENSOR DHT22—- Pino conectado ao pino DIGITAL de dados do sensor
#define DHTPIN 2
// Utilize a linha de acordo com o modelo do sensor
//#define DHTTYPE DHT11 // Sensor DHT11
#define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)
//#define DHTTYPE DHT21 // Sensor DHT 21 (AM2301)
// Definicoes do sensor : pino, tipo
DHT dht(DHTPIN, DHTTYPE);
//—————————————————————
//——SENSOR DHT11———–
///////#define DHT11PIN 2
//////// dht11 DHT11 ; //Inicializa o sensor
//—————————————————————————————–
int t;
int h;
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr( 0, 10, "Data:" );
u8g.setFont(u8g_font_robot_de_niro);
u8g.drawStr( 0, 25, "UMIDADE:" );
u8g.setPrintPos(40, 25);///posição onde irá aparecer o valor da umidade
u8g.setFont(u8g_font_unifont);
///////// u8g.print((float)DHT11.humidity);////umidade
// u8g.print((float)DHT22.h);////umidade
// u8g.print((float)DHT22.H);////umidade
u8g.print(h);
//u8g.print((float)dht22.Humidity);////umidade
// u8g.print((float)DHT22.humidity);////umidade
u8g.setFont(u8g_font_robot_de_niro);
u8g.drawStr( 85, 25, "%" );
u8g.drawStr( 0, 45, "TEMPERATURA:" );
u8g.drawStr( 102, 45, "*C" );
u8g.setPrintPos(60, 45);////posição onde irá aparecer o valor da temperatura
u8g.setFont(u8g_font_unifont);
///////////// u8g.print((float)DHT11.temperature);////temperatura
u8g.print(t);
u8g.setFont(u8g_font_robot_de_niro);
u8g.drawStr( 0, 35, "Versao.:22-05-2015-A" );
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 40, 10, rtc.getDateStr(FORMAT_SHORT)); // DATA
u8g.drawStr( 0, 60, "Hr:" );
u8g.drawStr( 30, 60,rtc.getTimeStr()); // RELOGIO
u8g.drawStr( 93, 60, "," );
u8g.drawStr( 100, 60, rtc.getDOWStr(FORMAT_SHORT)); // DIA DA SEMANA
}
void setup(void) {
// flip screen, if required
// u8g.setRot180(); // COMANDO PARA LIGAR A TELA EM 180 GRAUS
// set SPI backup if required
//u8g.setHardwareBackup(u8g_backup_avr_spi);
//Aciona o relogio
rtc.halt(false);
// Iniclaiza o sensor DHT
dht.begin();
//As linhas abaixo setam a data e hora do modulo
//e podem ser comentada apos a primeira utilizacao
// rtc.setDOW(MONDAY); //Define o dia da semana para ajuste do relogio
// rtc.setTime(20, 40, 47); //Define o horario para ajuste do relogio
// rtc.setDate(18, 8, 2014); //Define o dia, mes e ano para ajuste do relogio
//Definicoes do pino SQW/Out
rtc.setSQWRate(SQW_RATE_1);
rtc.enableSQW(true);
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
/////////// DHT11.read(DHT11PIN); //Lê as informações do sensor
//———————DHT22
// Aguarda 2 segundos entre as medicoes
delay(2000);
// Leitura da umidade
float h = dht.readHumidity();
// Leitura da temperatura (Celsius)
float t = dht.readTemperature();
// Verifica se o sensor esta respondendo
if (isnan(h) || isnan(t))
{
Serial.println("Falha ao ler dados do sensor DHT !!!");
return;
}
//———————————————————————–
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(500);
}
Amigo montei o sensor tudo direitinho e sempre me dá erro de DHT dht(DHTPIN, DHTTYPE); o que tenho que fazer? Abraço e obrigado pela sua atenção. o Meu E-mail é [email protected]
// Programa : Sensor de temperatura DHT22
// Autor : Arduino e Cia
#include
#include
// Pino conectado ao pino de dados do sensor
#define DHTPIN 7
// Pinos do display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Utilize a linha de acordo com o modelo do sensor
//#define DHTTYPE DHT11 // Sensor DHT11
#define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)
//#define DHTTYPE DHT21 // Sensor DHT 21 (AM2301)
// Definicoes do sensor : pino, tipo
DHT dht(DHTPIN, DHTTYPE);
// Array simbolo grau
byte grau[8] ={ B00001100,
B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};
void setup()
{
// Inicializa o display
lcd.begin(16, 2);
lcd.clear();
// Cria o caracter customizado com o simbolo do grau
lcd.createChar(0, grau);
// Informacoes iniciais no display
lcd.setCursor(0,0);
lcd.print("Temp. : ");
lcd.setCursor(13,0);
// Mostra o simbolo do grau
lcd.write(byte(0));
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umid. : ");
lcd.setCursor(14,1);
lcd.print("%");
Serial.begin(9600);
Serial.println("Aguardando dados…");
// Iniclaiza o sensor DHT
dht.begin();
}
void loop()
{
// Aguarda 2 segundos entre as medicoes
delay(2000);
// Leitura da umidade
float h = dht.readHumidity();
// Leitura da temperatura (Celsius)
float t = dht.readTemperature();
// Verifica se o sensor esta respondendo
if (isnan(h) || isnan(t))
{
Serial.println("Falha ao ler dados do sensor DHT !!!");
return;
}
// Mostra a temperatura no serial monitor e no display
Serial.print("Temperatura: ");
Serial.print(t);
lcd.setCursor(8,0);
lcd.print(t);
Serial.print(" *C ");
// Mostra a umidade no serial monitor e no display
Serial.print("Umidade : ");
Serial.print(h);
Serial.println(" %");
lcd.setCursor(8,1);
lcd.print(h);
}
ola tenho uma dúvida:
faz diferença não usar o resistor de pull-up conectando o data com o VCC?
Sim
Boa tarde.
Possuo o kit de desenvolvimento NodeMCU 1.0, cujo qual embarca o chip ESP8266-12E. Ao carregar este exemplo através da interface Arduino surge o seguinte erro: "undefined reference to `__ieee754_sqrt'"
Já procurei em diversos foruns, e pelo que entendi este chip não suporta a função "sqrt", função matemática de raiz quadrada. Tentei encontrar na biblioteca DHT.h o local onde pudesse ter esta referência, mas não encontrei.
Alguém já tentou fazer este exemplo com o ESP8266? Algum outro método para leitura de temperatura e umidade do DHT utilizando o ESP?
Grato desde já!
por favor gostaria de realizar o codigo para dois sensores dht22, como eu faço?
Bom dia,
Crie uma nova linha para cada sensor DHT22, da mesma forma que está no código, por exemplo:
#define DHTPIN 7
crie uma linha com
#define DHTPIN_2 6 (segundo DHT22 ligado na porta 6)
#define DHTTYPE_2 DHT22
DHT dht(DHTPIN_2, DHTTYPE_2);
E assim por diante.
Abraço!
Olá… Quando eu chamo a função umidade ou temperatura, como fazer para definir qual dos sensores será lido?
Obrigado
Neste ponto do código…
// Leitura da umidade
float h = dht.readHumidity();
// Leitura da temperatura (Celsius)
float t = dht.readTemperature();
Como especificar qual o sensor?
Obrigado novamente
Oi Luis,
Se você criou uma outra instância do DHT no programa, como na linha 19, basta chamar o segundo sensor, por exemplo:
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
Abraço!
desculpem, entendo pouco de programaçao, mas é possivel escrever as mediçoes com os horarios em que foram realizadas? desde ja obrigado
Bom dia leonardo,
É possível sim, eu recomendo colocar um módulo RTC no seu circuito, como o DS1307, DS3231 ou o DS1302. Tenho posts sobre eles aqui no blog.
Abraço!
Adilson
Desculpem, sou iniciante em programaçao, mas é possivel registrar os horarios em que as mediçoes foram feitas? desde ja obrigado
Oi Leonardo,
Sim, eu recomendo que você coloque no circuito um módulo RTC. A gravação pode ser feita, por exemplo, em um cartão SD.
Abraço!
Boa noite,
Gostaria dois cooler e controlar a velocidade de rotação nesse circuito
Devo criar o código e usar a função include ?
Estou começando a aprender a mexer no programa e tenho algumas dúvidas. Seria possível, a ideia e controlar a temperatura.
email :[email protected]
Se puder da alguma dica ou conselho. Fico grato
Oi amigo!
É possível adaptar exatamente esse código para um simples display 7 segmentos de 2 dígitos (anodo ou catodo comum)? Obrigado
Boa tarde.
Gostaria de saber entre o DHT21 e o DHT22 qual é melhor.
Obrigado
Meu DHT22 tá marcando errado a umidade após 1 semana de uso. Está sempre abaixo de 10%. Liguei com fonte 5V na protoboard sem capacitores, pode ser isso?
https://github.com/adafruit/Adafruit_Sensor
tem que incluir essa lib tbm
VALEU A MINHA TAVA FALTANDO ISSO, SEM ISSO NO TUTORIAL MUITA GENTE NÃO CONSEGUE.
Boa tarde.
Fiz um sistema idêntico, DHT22 e a tela LCD para uma estufa, entretanto o sensor começa medindo bem, mas com o tempo da erro na leitura, não sei oque pode está dando errado, já olhei tudo.
Acredito que seja o fio do sensor DHT22, a distância entre o arduino e o sensor está com cerca de 3 a 5 m de fio.
Tem limite de distância entre o sensor e o arduino?
BoA tarde.
Montei um sistema igual a esse, mas o sensor DHT22 está dando erro de leitura, gostaria de saber se tem limite de distância?
Porque coloquei o sensor de 3 a 5 m de distanica do arduino.
Oi santos, não tem problema com essa distância, não sei como ligou mas seria bom se vc soldasse os fios no dht, e no arduino usa o conector de pino mesmo, se tiver que fazer qualquer emenda solde e isole bem. lembro que qualquer mau contato ínfimo, faz esse sensor enviar dados errôneos.
Só uma dúvida, vi no datasheet que precisa de um capacitor de 100nf ligado no positivo e gnd do sensor, para filtragem, já instalei diversos aqui na empresa e nunca tinha atentado para isso, é válido fazer um teste com capacitor para ver se não vai alterar os mensurandos do sensor.
Amigo montei o sensor tudo direitinho e sempre me dá erro de DHT dht(DHTPIN, DHTTYPE); o que tenho que fazer? Abraço e obrigado pela sua atenção. o Meu E-mail é [email protected]
Boa noite,
Estou usando o programa descrito acima, já baixei a biblioteca do DHT mas está aparecendo o seguinte erro:
Arduino: 1.8.3 (Windows 7), Placa:"Arduino/Genuino Uno"
In file included from C:Program Files (x86)ArduinolibrariesDHTDHT_U.cpp:22:0:
C:Program Files (x86)ArduinolibrariesDHTDHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
#include
^
compilation terminated.
exit status 1
Erro compilando para a placa Arduino/Genuino Uno
Placa em COM3 não está disponível.
Placa em COM3 não está disponível.
Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"
Antes de carregar o código, vc selecionou o arduino que tá trabalhando e a porta de comunicação?
Verifique se você baixou os arquivos necessários para utilizar a biblioteca DHT.H. Aconteceu comigo, você precisa ir no GitHub e pegar a biblioteca completa do AdaFruit.
No seu erro ele já aparece C:Program Files (x86)ArduinolibrariesDHTDHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory ou seja não foi encontrado o adafruit_sensor.h que é utilizado em diversos sensores. Depois verifique as portas USB do seu computador!!
Vw!!!!! Resolvido
Porque deu esse erro? Arduino: 1.8.5 (Linux), Placa:"Arduino Leonardo"
/home/user/Arduino/biblioteca arduino/Sensor_de_Temperatura_e_Umidade/Sensor_de_Temperatura_e_Umidade/Sensor_de_Temperatura_e_Umidade.ino:12:17: fatal error: DHT.h: No such file or directory
#include "DHT.h"
^
compilation terminated.
exit status 1
Erro compilando para a placa Arduino Leonardo
Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"
Oi Wellington,
Você instalou a biblioteca DHT? A IDE não está encontrando essa biblioteca.
Abraço!
Adilson
boa tarde eu tenho um sensor DHT11 que faz leitura da temperatura e umidade, registra a min e max em um lcd com comunicação i2c de ambos. gostaria de substituir este sensor por um AM 2301. não estou conseguindo.
Esse seu blog é excelente, sempre tô tirando duvidas e aprendendo muito aqui, obrigado
Oi Elton!
Muito obrigado. Aguardo a sua visita sempre que possível. 🙂
Abraço!
Adilson
estou a usar a biblioteca ,mas esta dar erro… uso arduino mega e todas ligacoes estao boas…peco ajuda
Boa noite,
Vamos lá. Que erro está aparecendo?
Abraço!
Adilson
Boa tarde.
Estou a montar o esquema tal e qual como esta na imagem. Em todas as vezes que tentei compilar o programa para o arduino me deu a seguinte mensagem de erro:
Arduino: 1.8.8 (Windows 10), Board: "Arduino/Genuino Uno"
In file included from C:UsersuserDocumentsArduinolibrariesDHT_sensor_libraryDHT_U.cpp:22:0:
C:UsersuserDocumentsArduinolibrariesDHT_sensor_libraryDHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
O que podera estar a acontecer aqui?
O meu e-mail e [email protected]
Obrigado
Oi Miguel,
Me parece algo com a instalação da biblioteca..vc chegou a verificar se está tudo certo com essa parte?
Abraço!
Adilson
Boa noite, saberiam me informar a distancia maxima de cabo para ler o sensor dht11?
Bom dia,
Já vi alguns projetos usando sensores DHT com cabos de 5 metros, mas só testando mesmo pra saber, pq vai depender do tipo de cabo, isolamento, qualidade, etc.
Abraço!
Adilson
bom dia!
sempre utilizei com sucesso o sensor DHT22 juntamente com o Arduino Uno.
Ocorre que de uns dias pra cá não consigo ler de forma alguma.
Segue código:
#include
#include
#include
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
float t = dht.readTemperature();
float u = dht.readHumidity();
Serial.println(t,1);
Serial.println(u,1);
delay(30000);
}
Grato,
Nazareno
Olá.
Fiz algumas alterações no código pois usei um sensor DHT11 e o display com o módulo I2C porém não aparece no display os textos "temp.:" e nem "Umid.:"
Alguem saberia dizer onde está errado?
Obrigado desde já
// Programa : Display LCD 16×2 e modulo I2C
// Autor : Arduino e Cia
#include
#include
#include
#define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
dht DHT;
void setup()
{
Serial.begin(9600);
delay(1000);//Aguarda 1 seg antes de acessar as informações do sensor
{
lcd.begin (16,2);
}
}
void loop()
{
DHT.read11(dht_dpin); //Lê as informações do sensor
Serial.print("Umidade = ");
Serial.print(DHT.humidity);
Serial.print(" % ");
Serial.print("Temperatura = ");
Serial.print(DHT.temperature);
Serial.println(" Celsius ");
//Não diminuir o valor abaixo. O ideal é a leitura a cada 2 segundos
delay(2000);
{
// Verifica se o sensor esta respondendo
if (isnan(DHT.humidity) || isnan(DHT.temperature))
{
Serial.println("Falha ao ler dados do sensor DHT !!!");
return;
}
}
{
// Mostra a temperatura no serial monitor e no display
lcd.setCursor(0,0);
Serial.print("Temp ");
Serial.print(DHT.temperature);
lcd.setCursor(8,0);
lcd.print(DHT.temperature);
Serial.print(" *C ");
// Mostra a umidade no serial monitor e no display
lcd.setCursor(0,1);
Serial.print("Umid ");
Serial.print(DHT.humidity);
Serial.println(" %");
lcd.setCursor(8,1);
lcd.print(DHT.humidity);
}
}
Bom dia,
Faltou essa parte aqui:
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
Abraço!
Adilson
Parabéns pelo site amigo, as explicações são ótimas, em breve farei um projeto para automatizar um terrario de cogumelos, ele só fara o controle de temperatura e umidade, acionar relés e desligar. Obrigado
Oi Diego!
Muito legal. Dê uma olhada nos meus posts sobre relés e sensores, com certeza tem algo que vai te ajudar. 🙂
Abraço e até a próxima!
Adilson
Boa tarde, para usar o DHT22 com cabos mais longos (4 ou 5m), li que é necessário colocar um capacitor entre o VCC e o GND. É isto mesmo? Alguém já usou desta forma? Tem algum diagrama para mostrar como colocar?
Olá. Qual a função do potenciometro?
Oi Márcio,
Apenas regular o contraste do display.
Abraço!
Adilson
Boa tarde, liguei um DHT11 no esp32 a uns 10 metros de distancia do processador, o sinal não chega.
Ligando ao lado do esp32, ele funciona perfeitamente.
Qual a distancia máxima que eu consigo ligar estes sensores de temperatura e umidade do processador até onde quero medir?
Obrigado,
Oi Glaubert,
Entendi, mas 10m pra um sensor com uma corrente baixa me parece bastante coisa. Não tenho como te falar qual a distância máxima pq vai depender do tipo de fonte que você está usando para o circuito, o tipo de fio, etc.
Abraço!
Adilson
Boa noite,
Num ambiente real, qual seria o padrão de altura ou localização ideal para instalação? existe algum documento que contenha normas para a instalação?