Monitorando Temperatura com DHT11 e Raspberry Pi 27

Neste tutorial vamos ver como você pode monitorar a temperatura e umidade de um ambiente usando um Sensor DHT11 com Raspberry Pi.

Tutorial Temperatura Raspberry Pi

Já mostramos anteriormente a utilização do Sensor DHT11 com Arduino, portanto vamos apenas lembrar as características básicas desse sensor:

  • Alimentação : 3 à 5,5 V
  • Faixa de leitura – Umidade : 20 à 80%
  • Precisão umidade : 5%
  • Faixa de leitura – Temperatura : 0 – 50 ºC
  • Precisão temperatura : +/- 2 ºC

O sensor envia os dados para o microcontrolador utilizando apenas um pino, os outros dois são Vcc e GND, sendo que o terceiro pino não é utilizado. Confira datasheet e pinagem abaixo :

Pinagem DHT11

Conexão do DHT11 com Raspberry Pi B+

Vamos enviar os dados do sensor para o Raspberry Pi B+ em intervalos de 5 segundos. Como alimentação, vamos utilizar os 3.3V da placa, e como pino de entrada no Raspberry o pino 22 (GPIO 25).

Não se esqueça que os pinos do Raspberry utilizam nível de tensão de 3.3V, portanto se você for alimentar o DHT11 com uma fonte externa (maior do que 3.3V), por exemplo, é necessário um divisor de tensão para não danificar a GPIO do Raspberry. Utilize um resistor de 4,7 K como pull-up para o pino de dados do sensor.

Circuito Raspberry Pi DHT11

Biblioteca do sensor de temperatura DHT11

Vamos baixar e instalar a biblioteca da Adafruit para esse sensor de temperatura diretamente no Raspbian. Esta biblioteca serve para o DHT11 e também para o Sensor DHT22, uma versão mais precisa do sensor.

Com o Raspberry conectado à internet, abra o LX Terminal e digite os seguintes comandos:

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

cd Adafruit_Python_DHT

Antes de continuar com a instalação da biblioteca, utilize os comandos abaixo para atualizar o Raspberry:

sudo apt-get update
sudo apt-get install build-essential python-dev

Agora sim, podemos continuar com a instalação da biblioteca:

sudo python setup.py install

Esse processo pode ser um pouco demorado, dependendo da configuração do Raspbian e da sua conexão à internet.

Leitura das informações de temperatura e umidade

Carregue a interface de programação em Python do Raspbian clicando no ícone IDLE, na tela principal. Em seguida, selecione FILE, depois NEW WINDOW. Será aberta uma nova janela, onde você deve digitar ou copiar o programa abaixo:

No início do programa são carregadas as bibliotecas Adafruit_DHT, para leitura do sensor de temperatura, e também as bibliotecas GPIO e timer.

Execute o programa pressionando a tecla F5 e uma nova janela será aberta,  apresentando os dados de temperatura e umidade em intervalos de 5 segundos:

DHT11 - Temperatura e umidade

Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo) e visite nossa loja FILIPEFLOP!

Posts Relacionados

27 Comentários

  1. no caso senhor(a) utilizo 1 sensor. Queria saber no caso de tiver mais de 1 sensor

    1. Dentro do WHILE tem uma função:
      # Efetua a leitura do sensor
      umid, temp = Adafruit_DHT.read_retry(sensor, pino_sensor);
      basta repetir a função, com novas variáveis e outro valor em “pino_sensor”.

  2. Olá!
    Quando aperto F5 na IDLE aparece esse erro

    >>> ================================ RESTART ================================
    >>>

    Traceback (most recent call last):
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/Adafruit_DHT.py”, line 5, in
    import Adafruit_DHT
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/Adafruit_DHT.py”, line 10, in
    sensor = Adafruit_DHT.DHT11
    AttributeError: ‘module’ object has no attribute ‘DHT11’
    >>>

    Como se eu não tivesse importado a biblioteca, mas importei.
    Agradeço
    Uso o Censor DHT11 e resistor de 4,7k como instruido acima

    1. Resolvido, depois que importei a biblioteca desliguei o raspberry totalmente e voltei a ligá-lo. Funcionou belezinha

      1. Boa tarde Pablo,

        Legal, precisando, estamos à disposição.

        Abraço.

        Adilson – Equipe FILIPEFLOP

  3. Fiz igual o tutorial, est[a retornando este erro

    *** Lendo os valores de temperatura e umidade
    Traceback (most recent call last):
    File “sensor.py”, line 23, in
    umid, temp = Adafruit_DHT.read_retry(sensor, pino_sensor);
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 90, in read_retry
    humidity, temperature = read(sensor, pin, platform)
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 76, in read
    platform = get_platform()
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 48, in get_platform
    import Raspberry_Pi
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/Raspberry_Pi.py”, line 22, in
    import Raspberry_Pi_Driver as driver
    ImportError: No module named Raspberry_Pi_Driver

    Sou novo no Rasp, poderia me ajudar por favor ?

    1. Tenho o mesmo erro aqui….

  4. Não rolou para mim aqui.

    Traceback (most recent call last)
    file “home/pi/dht22-python…..”, line 6, in
    import adafuit_DHT
    importerror: no module named ‘adafruit_dht’

    ta tudo instalado certinho

    ajuda favor

  5. Para quem estiver com problemas ao carregar a biblioteca utilizando o IDLE, certifique-se de que seu usuário tem permissão de administrador!

  6. Bom dia, estou com um problema, da um erro no código dizendo que os drives do DHT22 não estão instalados, como eu os instalo?

  7. ESTOU COM ESSE MESMO ERRO DO NOSSO AMIGO JOEL, COMO RESOLVO?

    *** Lendo os valores de temperatura e umidade
    Traceback (most recent call last):
    File “sensor.py”, line 23, in
    umid, temp = Adafruit_DHT.read_retry(sensor, pino_sensor);
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 90, in read_retry
    humidity, temperature = read(sensor, pin, platform)
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 76, in read
    platform = get_platform()
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/common.py”, line 48, in get_platform
    import Raspberry_Pi
    File “/home/pi/Adafruit_Python_DHT/Adafruit_DHT/Raspberry_Pi.py”, line 22, in
    import Raspberry_Pi_Driver as driver
    ImportError: No module named Raspberry_Pi_Driver

  8. Olá, estou com o seguinte erro.

    *** Lendo os valores de temperatura e umidade

    Traceback (most recent call last):
    File “/home/pi/DHT11Teste.py”, line 21, in
    umid, temp = Adafruit_DHT.read_retry(sensor, pino_sensor);
    File “build/bdist.linux-armv6l/egg/Adafruit_DHT/common.py”, line 90, in read_retry
    humidity, temperature = read(sensor, pin, platform)
    File “build/bdist.linux-armv6l/egg/Adafruit_DHT/common.py”, line 77, in read
    return platform.read(sensor, pin)
    File “build/bdist.linux-armv6l/egg/Adafruit_DHT/Raspberry_Pi.py”, line 34, in read
    raise RuntimeError(‘Error accessing GPIO. Make sure program is run as root with sudo!’)
    RuntimeError: Error accessing GPIO. Make sure program is run as root with sudo!
    >>>

    Poderiam me ajudar?

    Muito obrigado.

  9. Para quem teve o erro : Error accessing GPIO. Make sure program is run as root with sudo!
    É só salvar o arquivo do Python e executarcom o sudo no Terminal.

    Mais ou menos assim : sudo python nome_do_arquivo.py

    1. Boooooaaaa, Afonso.
      Valeu

  10. Olá, no caso as temperaturas ali estão e Fahrenheit, certo? (Caso já estiver em Celsius, Ignore abaixo)

    Bem, eu gostaria de saber se eu mudasse para Celsius eu precisaria alterar por completo a estrutura “Temperatura = {0:0.1f} Umidade = {1:0.1f}” ou poderia colocar como “Temperatura = {0:0.1c} Umidade = {1:0.1c}n”)” ? E teria como introduzir um teste de controle para caso a temperatura ultrapassar (tantos) ele executar um comando como (Temperatura esta muito alta ou baixa)?

    Obrigado a todos que responderem minhas duvidas, Grato.
    #SouIniciante.

  11. Bom dia,

    Estou com dúvidas se posso colocar mais de um sensor destes e como conectar ele na GPIO.
    Pensei em monitorar a temperatura do lado de dentro e fora de uma sala.

    Obrigado

    1. Bom dia Ricardo,

      Não testei com dois sensores, mas tente criar um “sensor2”, por exemplo:

      sensor2 = Adafruit_DHT.DHT11

      E depois, conectá-lo, por exemplo, na GPIO 23 (pino 16):

      pino_sensor2 = 23

      O mapeamento da GPIO você encontra neste link: http://www.raspberrypi-spy.co.uk/wp-content/uploads/2012/06/Raspberry-Pi-GPIO-Layout-Model-B-Plus-rotated-2700×900.png

      Abraço!

      Adilson – Equipe FILIPEFLOP

  12. Em Python 3 dá o seguinte erro: ‘Nonetype’ object has no attribute ‘format’

    A solução é só alterar o print para:

    print (“Temperatura = {0:0.1f} Umidade = {1:0.1f}n”.format(temp, umid));
    ^
    Foi só uma questão de localização dos parêntesis, pois no Python 3 print é uma função.

    Obrigado ao autor pelas instruções. Valeu! 🙂

  13. Boa tarde, estou tentando fazer uma leitura desse sensor com um raspberry pi3, segui o tutorial completo, porém ele não faz a leitura dos valores, há algum problema desse sensor com o rpi3?

  14. Fiz tudo certinho, compila e roda, porém não aparece nenhum valor na tela, não entendo, tem algum jeito diferente de imprimir as variáveis?

  15. Olá, muito obrigado pelas dicas do post.

    Eu ainda estou começando a trabalhar com o RPi e tenho uma série de dúvidas.
    Primeiramente, eu executei todos os passos desse tutorial e tudo funcionou corretamente. Agora eu gostaria que o RPi rodasse de forma autônoma e além de um display LCD, gostaria de chamar um comando de voz para falar a temperatura e umidade. Eu instalei alguns aplicativos com o apt e sempre rodo eles via LXTerminal para pronunciar algo (ou até mesmo comandos para o leitor de textos Google). Com isso, seria possível implementar no script desse tutorial, uma linha de código para executar um aplicativo externo desses ou então abrir e escrever o comando (para executar os aplicativos) no LXTerminal de forma automática?

  16. Como mandar tudo para o MySql?

  17. ERRO
    Traceback (most recent call last):
    File “/home/pi/Giovane/temperatura1.py”, line 5, in
    import Adafruit_DHT
    ImportError: No module named ‘Adafruit_DHT’

    Instalei conforme o procedimento … não consigo ler o sensor. Estou usando o DHT 22, mas alterei no programa para tal.
    O erro parece ter a ver com a biblioteca, mas ela está lá!
    Aguardo help!

    1. Giovane,

      Sim, o erro ocorre na importação da biblioteca adafruit. Tenho um projeto com o sensor DHT22 também e antes funcionava normalmente, até que atualizei o raspberry. Ainda não encontrei a solução… Caso consiga entro em contato. (Não sou muito de programação, rs).

  18. Prezados,

    Acredito que este tutorial esteja desatualizado.A importação da biblioteca adafruit não está ocorrendo no .py. Quando é executado o script é retornado um erro. Como podemos resolver isto?

Trackbacks and Pingbacks

  1. […] Veja o post completo: Monitorando Temperatura com DHT11 e Raspberry Pi […]

Deixe uma resposta

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