Mostrando informações de temperatura no LCD 16×2 com o DHT11 110

No nosso primeiro artigo sobre o sensor de temperatura e umidade DHT11 aqui no blog FILIPEFLOP, mostramos como acompanhar as informações de temperatura e umidade no monitor serial, método ideal para quem ainda não tem um display LCD.

Para quem já tem um LCD 16×2 e quer melhorar o projeto, vamos mostrar como ligar o DHT11 juntamente com o display e mostrar nele as informações que precisamos.

DHT11

Para este circuito, você pode utilizar o módulo DHT11 ou apenas o sensor DHT11. A ligação dos dois é idêntica e utiliza apenas um pino para ligação ao Arduino.

Sensor de temperatura e umidade DHT11

Uma característica do DHT11 é que ele não fornece informações “quebradas” de temperatura. Isso significa que o sensor vai mostrar as informações de, por exemplo, 18, 20, 25 graus, mas não as casas decimais de 18,2 ou 25,6 graus. Os números fornecidos pelo sensor são redondos.

O display LCD 16×2 que vamos utilizar, baseado no controlador HD44780, é um display com backlight azul e caracteres na cor branca, com os pinos de conexão na parte superior numerados de 1 a 16. A conexão básica ao Arduino usa 6 pinos :

  • Pino 4 (RS) ligado ao pino 12 do Arduino
  • Pino 6 (E) ligado ao pino 11 do Arduino
  • Pino 11 (D4) ligado ao pino 5 do Arduino
  • Pino 12 (D5) ligado ao pino 4 do Arduino
  • Pino 13 (D6) ligado ao pino 3 do Arduino
  • Pino 14 (D7) ligado ao pino 2 do Arduino

O pino 3 do display será ligado ao pino central de um potenciômetro de 10K, que tem a função de regular o contraste. As demais ligações são feitas ao GND (pinos 1, 5 e 16) e aos 5v do Arduino (pinos 2 e 15) , e qualquer inversão pode impedir a exibição dos caracteres :

Circuito DHT11 e LCD HD44780

No programa, vamos utilizar a biblioteca LiquidCrystal para controle do LCD (esta biblioteca já vêm instalada na IDE), e também a biblioteca DHT, que pode ser baixada neste link.

Para mostrar o símbolo do grau (º), podemos utilizar um dos caracteres especiais disponíveis nesse display, usando o comando

lcd.print((char)223);

Ou criar um caractere customizado, com a forma mais arredondada. Para isso, criamos um array e desenhamos nosso próprio símbolo, e para utilizá-lo no programa, usamos o comando

lcd.createChar(valor, data);

onde valor se refere ao nome que daremos ao caractere especial, podendo ser um número de 0 a 7, e data se refere ao array criado para formar o símbolo do grau.

O comando delay no final do programa não deve ter um valor abaixo de 2000 (2 segundos), que é o valor mínimo para que o sensor possa fornecer os dados corretamente.

Gostou ? Conte-nos sua experiência com este post e visite nossa loja FILIPEFLOP !

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

110 Comentários

  1. Achei muito interessante e totalmente ao nível de qualquer pessoa fazer esse projeto, graças ao código simples e bem elaborado por vocês. Preciso fazer um projeto pra medir a temperatura da água, esse sensor pode ser colocado na água?

    Christian Raimundo Afonso Barbosa
    1. Boa noite Christian,

      Esse sensor não é indicado para ser colocado na água. Uma alternativa seria o uso, com vedação adequada, do LM35 ou do DS18B20, que são sensores exclusivos para medir temperatura.

      Um abraço e obrigado por visitar o blog FILIPEFLOP !

      Adilson – Equipe FILIPEFLOP

  2. Amigo qual software você utiliza para a montagem virtual e simulação deste circuito?

    1. Boa noite Felipe,

      Para montagem virtual utilizamos o Fritzing. Os circuitos são todos montados e testados na bancada, para garantir o funcionamento dos posts apresentados.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  3. comprei um sensor de temperatura
    mas eu não consigo roda o programa da erro o
    sensor de chuva que eu comprei funcionou legal peguei o programa aqui
    e deu certo mas esse não e eu não sei porque eu to tentando aprender ja comprei alguns
    componente de sua
    loja inclusive os sensores e o Arduino queria um programa pra eu usa aqui com o sensor de temperatura DHT11

    1. Boa noite Manoel,

      Pode nos informar qual erro apresenta quando você compila o programa ?

      Grato.

      Adilson – Equipe FILIPEFLOP

    2. Boa noite Manoel,

      Pode nos passar o que está acontecendo ? o erro é do programa, na hora de compilar ?

      Grato.

      Adilson – Equipe FILIPEFLOP

  4. //Programa : Temperatura e umidade com o DHT11 e LCD 16×2
    //Autor : FILIPEFLOP

    #include //Carrega a biblioteca LCD
    #include //Carrega a biblioteca DHT

    //Define a ligação ao pino de dados do sensor
    #define DHTPIN A5

    //Define o tipo de sensor DHT utilizado
    #define DHTTYPE DHT11

    DHT dht(DHTPIN, DHTTYPE);

    //Define os pinos que serão ligados ao LCD
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    //Array simbolo grau
    byte grau[8] ={ B00001100,
    B00010010,
    B00010010,
    B00001100,
    B00000000,
    B00000000,
    B00000000,
    B00000000,};

    void setup()
    {
    Serial.begin(9600); //Inicializa a serial
    lcd.begin(16,2); //Inicializa LCD
    lcd.clear(); //Limpa o LCD
    //Cria o caractere customizado com o simbolo do grau
    lcd.createChar(0, grau);
    }

    void loop()
    {
    float h = dht.readHumidity(); //Le o valor da umidade
    float t = dht.readTemperature(); //Le o valor da temperatura
    lcd.setCursor(0,0);
    lcd.print(“Temp : “);
    lcd.print(” “);
    lcd.setCursor(7,0);
    lcd.print(t,1);
    lcd.setCursor(12,0);

    //Mostra o simbolo do grau formado pelo array
    lcd.write((byte)0);

    //Mostra o simbolo do grau quadrado
    //lcd.print((char)223);

    lcd.setCursor(0,1);
    lcd.print(“Umid : “);
    lcd.print(” “);
    lcd.setCursor(7,1);
    lcd.print(h,1);
    lcd.setCursor(12,1);
    lcd.print(“%”);

    //Intervalo recomendado para leitura do sensor
    delay(2000);

    porem nao consigo programa ele da erro

  5. Filipe, estou com uma duvida, e acho que você pode me ajudar.
    Estou exibindo um valor no display de 0-1023 (valor da leitura de um potenciometro)
    o problema é quando ele está lendo digamos 24 fica normal, quando lê 100 e volta pra 24 fica 240
    se ele lê os 1023 e volta pra 900 fica 9003 entende? o ultimo numero está ficando ‘preso’ sei lá, tentei com um lcd.clear(); mas fica piscando -.-

    1. Boa tarde Rodrigo,

      Realmente com o lcd.clear() o display fica piscando, e não fica uma coisa “apresentável”.

      O que eu costumo fazer é apagar apenas o espaço aonde vai o número. Por exemplo, digamos que o valor máximo de 1024 vai ser apresentado na linha 0, coluna 0. Antes de apresentar o valor, eu preencho esse espaço com caracteres em branco. Fica mais ou menos assim :

      lcd.setCursor(0,0);
      lcd.print(” “); //4 caracteres em branco
      lcd.setCursor(0,0);
      lcd.print(“1234”); //Imprimo o valor ou variável no mesmo espaço

      São algumas linhas de comando a mais, mas o resultado compensa. Espero ter ajudado. Abraço !

      Adilson – Equipe FILIPEFLOP

  6. O meu sensor dht11 veio pronto na placa, porem creio que nao exista diferenca , pois segui conforme ah pinagem , mais mesmo assim não consegui =/ kkkk

    1. Boa noite,

      Qual erro está apresentando ?

      Abraços.

      Adilson – Equipe FILIPEFLOP

  7. a programação esta apresentando o seguinte erro:

    sketch_jul17a:13: error: ‘DHT’ does not name a type
    sketch_jul17a.ino: In function ‘void loop()’:
    sketch_jul17a:39: error: ‘dht’ was not declared in this scope

    como faço para solucionar esse problema?

    1. Você precisa instalar a biblioteca DHT que se encontra disponivel no começo da postagem.

    2. Eu sei que já faz um bom tempo, mas como tive que usar esse sensor num projeto do técnico e cai no mesmo problema, vou tentar ajudar. Ao utilizar esse sensor, vocês devem entrar no gerenciador de bibliotecas e baixar a biblioteca do dht. Até aí ok. Porém dá um erro no “Adafruit_sensor.h” ou algo assim. Então eu pesquisei bastante e achei um fórum da gringa explicando que você deve entrar no gerenciador de bibliotecas com o nome de “Unified”. E baixar a penúltima biblioteca encontrada “Adafruit Unified Sensor”. Aí compila tranquilo. VALEU!

  8. Não estou obtendo sucesso, o meu DHT11 já veio com a plaquinha, com um resistor de 10k embarcado, mas acho que não mudaria nada, ele simplesmente não traz nenhum valor nas medidas, 0,0 Temperatura, e Umidade varia de uma sigla nan e 0,0 no vizor, o que pode ter acontecido, como eu tiro a prova do sensor se ele realmente esta funcionando, a alguma medição que eu possa fazer diretamente nele com multímetro para verificar sua integridade?

    1. Boa tarde,

      O ideal seria você testar com outro DHT11. Você comprou esse módulo aqui na FILIPEFLOP ?

      Grato.

      Adilson – Equipe FILIPEFLOP

      1. Cara, estou com o mesmo problema.

        Temperatura fica 0.0
        umidade fica nan

        Nao tenho outro sensor pra testar, tem alguma sugestao?

    2. O meu sensor também veio em uma plaquinha e como o do pessoal que reclamou, o meu também não funcionou de primeira.
      Então eu observei que o meu sensor possuía apenas três pernas e não quatro como a da figura apresentada. Então eu observei que a pinagem que o meu seguia era a seguinte: Com o sensor visto de frente(parte azul para frente): porta analógica, 5v, gnd

  9. Olá Pessoal!!
    Comprei o material necessário para realizar esse projeto com vocês e estou aguardando a entrega.
    Enquanto isso, gostaria de tirar uma dúvida.
    Qual sensor eu poderia “acoplar” na parte externa de um objeto para monitorar sua temperatura dentro de um freezer?? Teria que ser um sensor que suportasse temperaturas baixas sem estragar… E outra dúvida: que material posso usar para prender esse sensor no objeto em questão de modo que isole a temperatura do freezer e mostre somente a temperatura do objeto que o sensor está acoplado?? Se vocês tiverem alguma sugestão, agradeço muito!!
    Muito obrigado pela atenção de vocês.
    Aguardo!!
    Abraços.

  10. comprei o sensor DHT11 com vcs,e acabou de chegar,fui fazer o projeto e no display só marca como temperatura 0.0 e como umidade man% ,queria saber qual seria o problema

    1. Boa tarde Rafael,

      Você consegue enviar as informações para o serial monitor e ver se o problema persiste ?

      Grato.

      Adilson – Equipe FILIPEFLOP

  11. Olá. gostaria de saber se é necessário ter o potenciômetro para que a tela lcd funcione no Arduíno, pois comprei o restante dos itens e quando montei não apareceu texto, porém a tela fica ligada.

    1. É só usar um resistor

  12. boa tarde,

    estou com problemas na hora de compilar ai apresenta o seguinte erro ;
    sketch_sep30a:10: error: ‘DHT’ does not name a type
    sketch_sep30a.ino: In function ‘void loop()’:
    sketch_sep30a:36: error: ‘dht’ was not declared in this scope

    1. Boa tarde Diego,

      Essa mensagem parece ser alguma problema na instalação da biblioteca.

      Grato.

      Adilson – Equipe FILIPEFLOP

    2. Diego, conseguiu resolver seu problema?
      Troque o nome da pasta da Biblioteca pra apenas DHT.

  13. Boa noite,
    Conectei tudo conforme o post, mas não aparece simplesmente nada no meu lcd

    1. Boa noite Fernanda,

      Por favor reveja as suas conexões, principalmente a parte do backlight (luz de fundo), e o potenciômetro que regula o contraste.

      Adilson – Equipe FILIPEFLOP

      1. Se usar um arduino mega2560 e um sensor DHT22, usando as mesmas configurações deste post, funciona?

        1. Boa tarde Fernanda,

          Ainda não testamos esse sensor com o Mega2560.

          Abraço.

          Adilson – Equipe FILIPEFLOP

  14. Brother tenho um raspberry pi posso ter o mesmo sucesso com a Prototype Shield para Raspberry Pi + o Sensor DTH11 ?

    1. Boa tarde Anderson,

      É possível montar a mesma configuração no Raspberry, só não temos um exemplo ainda para mostrar.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  15. O projeto funcionou perfeitamente mas eu querei optimiza-lo.
    Estou a fazer um projecto que é basicamente uma maquete de uma estufa, e eu queria que quando a humidade chega-se a um determinado valor liga-se um motor de puxar agua (12v) e quando a temperatura desce-se uma um led acendesse e quando subisse umas ventoinhas começassem a trabalhar.

  16. Olá, tudo bem? Ao invés de utilizar o potenciômetro que serve para regular o brilho da tela, eu não poderia utilizar um resistor diretamente? Obrigado.

    1. Boa tarde Bruno,

      Pode sim, sem problemas.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  17. Boa noite a todos, venho pedir uma ajuda referente ao codigo para ler temperatura e humidade e mostrar no LCD de 16×2 utilizando Arduino UNO e semsor DHT11.

    Bem a questao começa logo quase no inicio da leitura do codigo que me da erro assinalado em baixo entre ==========:

    //Programa : Temperatura e umidade com o DHT11 e LCD 16×2
    //Autor : FILIPEFLOP

    #include //Carrega a biblioteca LCD
    #include //Carrega a biblioteca DHT

    //Define a ligação ao pino de dados do sensor
    #define DHTPIN 7

    //Define o tipo de sensor DHT utilizado
    #define DHTTYPE DHT11

    ==============DHT dht(DHTPIN, DHTTYPE); ==========

    //Define os pinos que serão ligados ao LCD
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    //Array simbolo grau
    byte grau[8] ={ B00001100,
    B00010010,
    B00010010,
    B00001100,
    B00000000,
    B00000000,
    B00000000,
    B00000000,};

    void setup()
    {
    Serial.begin(9600); //Inicializa a serial
    lcd.begin(16,2); //Inicializa LCD
    lcd.clear(); //Limpa o LCD
    //Cria o caractere customizado com o simbolo do grau
    lcd.createChar(0, grau);
    }

    void loop()
    {
    float h = dht.readHumidity(); //Le o valor da umidade
    float t = dht.readTemperature(); //Le o valor da temperatura
    lcd.setCursor(0,0);
    lcd.print(“Temp : “);
    lcd.print(” “);
    lcd.setCursor(7,0);
    lcd.print(t,1);
    lcd.setCursor(12,0);

    //Mostra o simbolo do grau formado pelo array
    lcd.write((byte)0);

    //Mostra o simbolo do grau quadrado
    //lcd.print((char)223);

    lcd.setCursor(0,1);
    lcd.print(“Umid : “);
    lcd.print(” “);
    lcd.setCursor(7,1);
    lcd.print(h,1);
    lcd.setCursor(12,1);
    lcd.print(“%”);

    //Intervalo recomendado para leitura do sensor
    delay(2000);
    }

    Alguem pode dar uma ajuda???

    Obrigado a todos.

    1. o meu tambem estava com o mesmo problema…fiz novamente o download da biblioteca e reinstalei…funcionou perfeito…

    2. Boa noite,

      Qual erro está apresentando ?

      Adilson – Equipe FILIPEFLOP

  18. Bom dia,
    Editei esse programa a fim de deixar compatível com o meu LCD ligado com um modulo I2C, poré eu não tenho um controle do brilho do backlight.

    Teria um jeito de fazer isso vi programa ou só colocando um resistor mesmo?
    O meu modulo I2C e LCD são os mesmos que estes.
    http://www.arduinoecia.com.br/2014/12/modulo-i2c-display-16×2-arduino.html

    1. Boa noite Anderson,

      No módulo I2C você faz isso pelo próprio programa, pelo comando lcd.setBacklight(HIGH).

      Adilson – Equipe FILIPEFLOP

  19. Boa noite, alguém pode me ajudar? Tenho um aquário com duas lampadas diferentes e gostaria que elas acendessem e apagassem em tempos diferentes simulando iluminação solar, e se possível um display pra indicar a temperatura da água.

    1. Boa tarde Anderson,

      Para medir a temperatura da água, existem sensores específicos para o Arduino, como o DS18B20 montado em um cabo isolado.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  20. Boa noite galera, comprei um kit já tem uns dois anos que está parado, tudo isso na esperança de conseguir fazer um servo motor acompanhar o movimento da pessoa tanto para os lados como para baixo e para cima. Alguém pode me dar essa forcinha?

  21. Boa noite,

    Estou com um projeto na faculdade de sistemas distribuídos, e optei por fazer um medidor de temperatura e umidade com display, e que dê pra acessar as informações também via rede. Tem como colocar pra funcionar todas essas funções ? A barreira é só colocar em rede.

    Meu trabalho vai ser implementado no meu emprego, numa sala de servidor refrigerada de um cartório.

    Att,

    Iago Costa

    1. Boa tarde,

      Teoricamente sim, dependendo dos componentes que você for usar.

      Abraço.

      Adilson – Equipe FILIPEFLOP

      1. Boa tarde, dependendo dos componentes, seria o que eu devo comprar ?

        Fiz um orçamento na loja, acho que esta tudo que eu preciso. Você concorda ?
        https://scontent-gru.xx.fbcdn.net/hphotos-xpa1/t31.0-8/10986689_1003236443037696_636779563179702019_o.jpg

        Muito satisfeito por estar me ajudando. Como vou tirar tudo do meu trabalho aqui dos tutoriais, vou comprar esse projeto na loja de voces como incentivo a continuar o blog, que ja me ajudou muito.

        Att, Iago Costa

  22. Estou fazendo um projeto de irrigação controlado por arduino e irei utilizar dois sensores adquiridos aqui, o dht11 e o sensor de umidade do solo, fiz algumas simulações em um software porém só consigo simular o sensor de umidade do solo cuja saída é analógica, porém o sensor de temperatura tem uma saída de dados que eu não consigo simular, existe alguma forma de simular os dados deste sensor utilizando este programa proposto, ou só conseguirei testar mesmo na bancada montando o circuito? Utilizo o proteus para simulação.

  23. Testei o mesmo programa sou cliente do site, mas o codigo não funciona,
    DHT não lê a linha e fica dando erro.
    Já importei a biblioteca e mesmo assim persiste o erro.

  24. bom dia,
    este sensor só serve para arduino ,ou posso utilizalo em micro c,,estou com projeto de umidificador a facu ,queria utilizar este sensor,,o meu micro controlador vai ser um pic 18f4520.abs

    1. Boa noite Josimar,

      Funciona sim, sem problemas, você só precisa da programação adequada.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  25. gostaria de saber no kit arduino beginning vem o sensor DHT11

    1. Boa noite,

      Não vem. Se você precisar de um sensor de temperatura, o kit contém o LM35. O DHT11 deve ser adquirido à parte.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  26. Eu poderia ligar o display e o sensor diretamente no microcontrolador (protoboard). Pelo que eu entendi, as ligações mudariam um pouco (Sou novato no assunto).
    O pino de dados do sensor iria no pino 24 do micro
    Rs iria no 18 do micro.
    E iria no 17
    D4 no pino 6 do micro
    D5 no pino 11
    D6 no pino 12
    D7 no pino 13
    Está correto isso ?
    Me baseei nesta imagem: http://www.chicoree.fr/w/images/9/95/ATmega328P_vs_Arduino_pin_mapping.png

  27. Desejo monitorar temperatura e umidade no mesmo barramento serial, de varios sensores DTH11, visto que a comunicacao e I2C.
    Como posso diferenciar cada sensor???? Tem um ID?

    1. Boa noite Mario,

      O DHT11 não utiliza comunicação I2C. Você terá que ligar cada um em uma porta diferente e efetuar as alterações no programa.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  28. Boa tarde!

    Gostaria de saber se existe limite para a extensão do cabo para ligar o sensor ao arduino?

    Explico: vou colocar o sensor dentro de um abrigo meteorológico, e colocar o arduino dentro de casa. Distância de uns 20 metros mais ou menos.

    Obrigado!

    1. Bom dia Henrique,

      Não temos essa informação, mas pode ser interessante pensar em alguma solução via wireless, como por exemplo o módulo NRF24L01 ou até mesmo o kit RF433 MHz.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  29. Boa tarde, Gostaria de saber sobre como utilizar um sistema de horário no arduino, só consigo com módulo RTC? Tenho um Display Lcd 1602 Modulo Shield Arduino C/ Botões e gostaria de saber se existe uma bilbioteca para isso.

    Obrigado.

    1. Boa tarde,

      A utilização de um módulo RTC seria o mais indicado. Quanto a biblioteca para o keypad, tente este link: http://forum.arduino.cc/index.php?topic=38061.0

      Abraço.

      Adilson – Equipe FILIPEFLOP

  30. eu to com um problema e nao consigo entender o por que , eu fiz refiz vaarias vezes as ligaçoes mais quando eu coloco o programa pra rodar , a tela fica inteira azul e nao escreve nada, alguem conseguil resolver esse problema /?

    1. Tenta alterar o contraste. Se não funcionar, testa primeiro só o LCD se esta funcionando. Se eu não me engane na IDE do arduino tem programa de teste do LCD.

    2. Bom dia Antonio,

      O problema pode estar no ajuste do contraste, feito pelo potenciômetro. Peço também que você reveja as ligações ao display.

      Grato.

      Adilson – Equipe FILIPEFLOP

  31. Olá! Tentei implementar esse código, mas o meu DHT11 só envia 0ºC e 0 de umidade também. O problema deve estar no sensor, certo?

  32. Olá, gostaria de saber qual sensor de temperatura mostra os valores exatos… ex 35.5º. Obrigado

    1. Bom dia Gustavo,

      Você pode usar o DHT22: https://www.filipeflop.com/pd-137442-sensor-de-umidade-e-temperatura-am2302-dht22.html

      Abraço.

      Adilson – Equipe FILIPEFLOP

      1. Vou comprar esse sensor amanha mesmo.
        poderia me informar porque que tenho que desligar e ligar o arduino para ele mostrar no lcd em tempo real a temperatura?
        o que esta errado no codigo?

        1. Bom dia Gustavo,

          Não entendi essa questão de desligar e ligar o Arduino, ele apresenta algum erro ?

          Abraço.

          Adilson – Equipe FILIPEFLOP

  33. Bom dia, Filipe! Estou tentando unificar dois projetos seu, o de temperatura e umidade e o do relógio em tempo real num único display 20×4 e estou tendo algumas dificuldades. Tem como você me informar se há essa possibilidade e uma dica de que ponto posso partir? Obrigado.

    1. Boa tarde Gilberto,

      Temos tutoriais que utilizam o display 20×4, como esse: http://blog.filipeflop.com/modulos/rtc-ds1307-display-lcd-20×4-arduino.html. Pode ser um ponto de partida para o seu projeto.

      Abraço

      Adilson – Equipe FILIPEFLOP

  34. Posso por exemplo : Se a temperatura for maior que determinada temperatura acender um LED na protoboard? É muito dificil?

    1. Bom dia Brendo,

      É simples, faça um IF para testar o valor da variável t (temperatura). Fica mais ou menos assim:

      if (t >= 30) //se a temperatura for maior do que 30….
      {
      digitalWrite(7, HIGH); //acende o led da porta digital 7
      }

      Abraço

      Adilson – Equipe FILIPEFLOP

      1. Entendi, vou testar depois e conferir,obrigado. Tenho mais uma pergunta, tem alguma maneira de eu armazenar em algum lugar os dados da temperatura e da umidade que são lidos pelo sensor???
        Abraços!

        1. Boa tarde Brendo,

          Publicamos hoje um projeto de datalogger, que faz exatamente o que você precisa. Dê uma olhada, por favor: http://blog.filipeflop.com/arduino/datalogger-com-arduino-cartao-sd.html

          Abraço

          Adilson – Equipe FILIPEFLOP

          1. Eu conseguiria conectar o sensor DHT 11, o display LCD, o módulo do cartao SD e o módulo RTC em somente um arduino? Como devo proceder?
            Desde já obrigado!!!!

  35. Primeiramente parabéns pelo blog e pelos produtos!

    Estou tentado fazer um projeto para um terario para repteis, no entanto ele tem que ficar numa determinada temperatura no dia e uma outra durante a noite! para manter a temperatura utilizo lampadas especificas q esquenta para não ficar frio.
    Gostaria de por exemplo das 6 as 19h fica acesa a luz “dia” e o restante a luz “noite” controlando a temperatuna de por exemplo 25graus liga 30 graus desliga!

    Teria como me ajudar por favor!!

    Att

    1. Bom dia Gustavo,

      Você pode utilizar o DHT11 juntamente com módulos relé, dependendo do tipo de ligação que você tem hoje, seguindo as instruções deste artigo: http://blog.filipeflop.com/modulos/controle-modulo-rele-arduino.html. Já para o controle do horário de funcionamento do circuito, você pode utilizar um módulo RTC DS1307, como esse: http://blog.filipeflop.com/modulos/relogio-rtc-ds1307-arduino.html

      Abraço

      Adilson – Equipe FILIPEFLOP

  36. Eu conseguiria conectar o sensor DHT 11, o display LCD, o módulo do cartao SD e o módulo RTC em somente um arduino? Como devo proceder?
    Desde já obrigado!!!!

    1. Bom dia Brendo,

      Consegue sim, dê uma olhada em nossos tutoriais para verificar a ligação de cada um desses dispositivos. Uma boa idéia talvez seja usar o módulo I2C para ligação do display, que é o item que mais vai ocupar as portas do Arduino. Com ele, você liga o display ao Arduino utilizando apenas 2 fios: https://www.filipeflop.com/pd-179dbc-modulo-serial-i2c-para-display-lcd-arduino.html

      Abraço

      Adilson – Equipe FILIPEFLOP

      1. Eu comprei o módulo I2C, mas agora o que eu altero no programa para funcionar o display com DHT11?

        1. Olá Besko,

          Dê uma olhada no seguinte tutorial: http://www.arduinoecia.com.br/2014/12/modulo-i2c-display-16×2-arduino.html

          Lá você aprende como ligar um módulo I2C ao display LCD e também tem um exemplo de código para Arduino.

          Giovanni Bauermeister
  37. Consigo ligar mais de um sensor e utilizando uma tela 16×4 exibir a informação desses dois sensores? Abraços.

  38. gostaria de saber porque na hora de verificar aparece erro nessa parte DHT dht(DHTPIN, DHTTYPE); ?

  39. Olá, gosto muito deste site e já tirei vários exemplos para projetos.No momento estou precisando de uma ajuda,criar um Menu com Botões pulsantes,está muito difícil encontrar exemplos.Alguém sabe de algum ?

    1. Bom dia Danilo,

      Que tipo de menu seria ? pode explicar melhor ?

      Abraço

      Adilson – Equipe FILIPEFLOP

      1. Navegar em um menu através de botões : Up, down, enter e Menu daí vai para a tela desejada
        Ex: Menu 1 = Monitorar Temperatura e umidade
        Menu 2 = Ligar e desligar uma lampada com rele
        Menu 3 = Controlar a umidade atraves de uma bomba d’agua, aí vc digita o valor min e o max. Min liga a bomba e max desliga a bomba (com rele )

        Valew , muito Obrigado

  40. Olá, estou com o seguinte problema, se eu rodar o seu código funciona normal, porém eu coloquei seu código junto de um algoritmo para salvar em uma base de dados, por algum motivo ele não exibe no display, porém salva no banco normalmente. Aparentemente não consigo encontrar nada de errado no algoritmo, saberia me dizer se estou esquecendo de alguma coisa? Obrigado.

    CÓDIGO ABAIXO

    #include
    #include
    #include
    #include

    #define DHTPIN A5
    #define DHTTYPE DHT11

    DHT dht(DHTPIN, DHTTYPE);
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress server(192,168,1,6);
    EthernetClient client;

    byte grau[8] ={ B00001100,
    B00010010,
    B00010010,
    B00001100,
    B00000000,
    B00000000,
    B00000000,
    B00000000,};

    bool connected = false;

    void setup(){
    Serial.begin(9600);

    lcd.begin(16,2);
    lcd.clear();
    lcd.createChar(0, grau);

    if (Ethernet.begin(mac) == 0) {
    Serial.println(“Failed to configure Ethernet using DHCP”);
    }
    }

    void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    lcd.setCursor(0,0);
    lcd.print(“Temp : “);
    lcd.print(” “);
    lcd.setCursor(7,0);
    lcd.print(t,1);
    lcd.setCursor(12,0);

    //Mostra o simbolo do grau formado pelo array
    lcd.write((byte)0);

    lcd.setCursor(0,1);
    lcd.print(“Umid : “);
    lcd.print(” “);
    lcd.setCursor(7,1);
    lcd.print(h,1);
    lcd.setCursor(12,1);
    lcd.print(“%”);

    if (!connected) {
    Serial.println(“Not connected”);

    if (client.connect(server, 80)) {
    Serial.println(“Connected”);
    connected = true;

    client.print(“GET /ethernet/mysql2.php?”);
    Serial.print(“GET /ethernet/mysql2.php?”);

    client.print(“t=”);
    Serial.print(“t=”);
    client.print(t);
    Serial.print(t);
    client.print(“&”);
    Serial.print(“&”);
    client.print(“h=”);
    Serial.print(“h=”);
    client.print(h);
    Serial.print(h);

    client.println(” HTTP/1.0″);
    Serial.println(” HTTP/1.0″);

    client.println();
    } else {
    Serial.println(“Cannot connect to server”);
    }
    } else {
    delay(500);

    while (client.connected() && client.available()) {
    char c = client.read();
    Serial.print(c);
    }

    Serial.println();

    client.stop();
    connected = false;
    }

    delay(5000);
    }

  41. Boa noite

    Amigo eu sempre usei pic´s..e agora estou com um projeto para montar um rário FM com arduíno uno R3, e implementar nele um relógio e um termômetro….estou usando o ds1307, o dht11, o display nokia 5110, e um keypad para controle das funções….alguém pode me ajudar na programação?
    Eu tenho as bibliotecas mas eu não consigo fazer funcionar…se alguém puder me ajudar ou realizar a programação eu até estou disposto a pagar, porque eu faço projetos em casa mas não tenho familiaridade com o Arduíno, eu estou começando agora…quem puder me envia e-mail que eu passo meu contato telefônico.
    Obrigado a todos.

  42. Arduino: 1.6.6 (Windows 7), Placa:”Arduino/Genuino Uno”

    lcd_teste.ino:13: error: ‘DHT’ does not name a type

    DHT dht(DHTPIN, DHTTYPE);

    ^

    C:UsersfagnerDocumentsArduinolcd_testelcd_teste.inolcd_teste.ino.ino: In function ‘void loop()’:

    lcd_teste.ino:39: error: expected primary-expression before ‘.’ token

    float h = dht.readHumidity(); //Le o valor da umidade

    ^

    lcd_teste.ino:40: error: expected primary-expression before ‘.’ token

    float t = dht.readTemperature(); //Le o valor da temperatura

    ^

    olá, aparceu este erro de compilação!!!
    Foram encontradas múltiplas bibliotecas para “LiquidCrystal.h”
    Usado: C:UsersfagnerDocumentsArduinolibrariesLiquidCrystal
    Não usado: C:Program FilesArduinolibrariesLiquidCrystal
    exit status 1
    ‘DHT’ does not name a type

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    1. Olá. Espero que já tenha resolvido seu problema, mas para quem está com o mesmo problema (e pelo que eu li a reincidência acontece na linha 13 do código postado pelo autor). O código está correto, como de costume desta página (PARABÉNS). A dica é rever se baixou a biblioteca do sensor DHT e se copiou correto na pasta “libraries” do arquivos de programas/arduino/libraries. Reforçando, se tiver com outro código do IDE do arduino aberto, é melhor fechar todas as janelas e começar do 0 o código desta página. Se ainda assim acontecer, feche o arquivo salvando e abra-o de novo (O DHT DA LINHA 13 DEVERÁ FICAR LARANJA).

  43. Boa noite, obrigado pelas dicas ate agora, sempre acompanho o site!
    Estou precisando piscar um LED enquanto a temperatura estiver maior que 30°C, por exemplo. Porem, não quero que a programação se interrompa, preciso que o LED pisque simultaneamente com a leitura e impressão no display enquanto estiver acima de certo valor.

    Tentei usar um “if”, mas logo apos atingir a temperatura o LED começa a piscar e o display do LCD aparece uns caracteres estranhos. O “while”também não seria uma opção, pois irá parar toda a programação.

    Estou usando um senso de temperatura DS18B20 e um LCD 16×2

    #include
    #include
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    OneWire ds(10);

    void setup(void) {
    Serial.begin(9600);
    lcd.begin(16, 2);
    pinMode(52, OUTPUT);

    }

    void loop(void) {
    byte i;
    byte present = 0;
    byte type_s;
    byte data[12];
    byte addr[8];
    float celsius;

    if ( !ds.search(addr)) {
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44,1);

    delay(1000);

    present = ds.reset();
    ds.select(addr);
    ds.write(0xBE);

    for ( i = 0; i < 9; i++) {
    data[i] = ds.read();

    }

    unsigned int raw = (data[1] << 8) | data[0];
    if (type_s) {
    raw = raw << 3;
    if (data[7] == 0x10) {

    raw = (raw & 0xFFF0) + 12 – data[6];
    }
    } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;
    else if (cfg == 0x20) raw = raw << 2;
    else if (cfg == 0x40) raw = raw << 1;

    }
    celsius = (float)raw / 16.0;
    Serial.print("Temperatura = ");
    Serial.print(celsius);
    Serial.write(176);
    Serial.print("C");

    lcd.print("Temp. = ");
    lcd.print(celsius);
    lcd.print((char)223);
    lcd.print("C");
    delay(250);
    lcd.setCursor(0, 0);

    }

  44. Ola, eu quero q quando passe de 25 graus um rele seja acionado, qual a modificação deve ser feita no codigo?

    1. ola eu sou novo no mundo do arduino mas acho que posso te ajudar…
      coloque um if no codigo por exemplo:
      if(t >= 25){ //neste caso ele liga se a temp for igual ou maior que 25º
      digitalWrite(rele, HIGH);
      }
      espero ter ajudado 🙂

  45. Opa. Queria saber se tem como modificar esse codigo e mudar para usar em um Sensor de Gas ou MQ….
    Estou querendo montar um projeta, para que o arduino leia o Sensor e envie a porcentagem para o Display. Se estiver como, poderia me responder, caso tenha que mudar algo nesta biblioteca, me ajude, sou leigo no assunto, nao entendo muita coisa. Obrigado!

  46. O meu esta dando este erro… Alguém pode me ajudar?
    In file included from C:UsersMarco AntonioSketchBooklibrariesDHT-sensor-library-masterDHT_U.cpp:22:0:

    C:UsersMarco AntonioSketchBooklibrariesDHT-sensor-library-masterDHT_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

    1. Yo me he metido a la libreria del Dht 11, ejemplo: C:UsersSantosDocumentsArduinolibrariesDHT_sensor_library
      y he elimado los archivos DHT_U.cpp y DHT_U.h,
      despues he compilado el programa y a funcionado muy bien!!!
      espero te sea de ayuda.

      1. estou com um problema no meu display nao aparecem os numeros aparece NAN

  47. estou com um erro no programa que não consigo resolver que é este :
    In file included from C:Program FilesArduinolibrariesDHT-sensor-library-masterDHT_U.cpp:22:0:

    C:Program FilesArduinolibrariesDHT-sensor-library-masterDHT_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 Mega or Mega 2560
    Biblioteca inválida encontrada em C:Program FilesArduinolibraries__MACOSX: C:Program FilesArduinolibraries__MACOSX
    Biblioteca inválida encontrada em C:Program FilesArduinolibraries__MACOSX: C:Program FilesArduinolibraries__MACOSX

  48. Boa tarde. Percebi que no código foi colocado o .0 depois das medidas para que não haja problemas de exibição quando o sensor mostrar “nan” antes de medir pela primeira vez. Há alguma maneira de editar a library do DHT11 para que ele mostre algo como “na” e portanto não comprometa a exibição de temperatura sem a casa decimal?

  49. Alguém poderia me dizer se esse código é C ou C++?

    1. o arduino funciona com uma linguagem própria, é parecido com c e c++, porém com algumas simplificações. Conhecimento em alguma delas pode ajudar bastante na hora de começar a programar

      LEONARDO CARPES DOS SANTOS
  50. o meu em vez de aperecer os valores, aparece “nan” alguém pode mim ajudar?

    cosme costa do sacramento
    1. Sim! O seu sensor deve estar lendo a entrada analógica errada, já verificou? Ligou os terminais certinho? Está corretamente aterrado? O Seu sensor é o DHT11 mesmo?

  51. Perfeito a funcionar à primeira tentativa.

  52. cartierbraceletlove Actually i take that back, my skeddy is jam packed, no room for her!
    van cleef perlee bangle knock off http://www.howtobuybangles.com/

  53. cartierbraceletlove Scary Folks. The same applies to most of these forums. the greater the outreach the greater the backlash.
    bracciali da uomo cartier falso http://www.bestcalove.ru/it/popular-aaa-replica-cartier-love-bracelet-pink-gold-mosaic-ten-diamonds-b6040616-p759/

Trackbacks and Pingbacks

  1. […] no circuito o display 16×2 HD44780 com ligação semelhante ao do artigo Mostrando informações de temperatura no LCD 16×2 com o DHT11. Trocamos apenas os pinos 12 do Arduino pelo pino 6, e o 11 pelo 7, pois os mesmos já estão […]

  2. […] no circuito o Display 16×2 HD44780 com ligação semelhante ao do artigo Mostrando informações de temperatura no LCD 16×2 com o DHT11. Trocamos apenas os pinos 12 do Arduino Uno pelo pino 6, e o 11 pelo 7, pois os mesmos já estão […]