Monitorando Temperatura com DHT11 e Raspberry Pi

Monitorando Temperatura com DHT11 e Raspberry Pi

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:

# Programa : Sensor de temperatura DHT11 com Raspberry Pi B+
# Autor : FILIPEFLOP

# Carrega as bibliotecas
import Adafruit_DHT
import RPi.GPIO as GPIO
import time

# Define o tipo de sensor
sensor = Adafruit_DHT.DHT11
#sensor = Adafruit_DHT.DHT22

GPIO.setmode(GPIO.BOARD)

# Define a GPIO conectada ao pino de dados do sensor
pino_sensor = 25

# Informacoes iniciais
print ("*** Lendo os valores de temperatura e umidade");

while(1):
   # Efetua a leitura do sensor
   umid, temp = Adafruit_DHT.read_retry(sensor, pino_sensor);
   # Caso leitura esteja ok, mostra os valores na tela
   if umid is not None and temp is not None:
     print ("Temperatura = {0:0.1f}  Umidade = {1:0.1f}\n").format(temp, umid);
     print ("Aguarda 5 segundos para efetuar nova leitura...\n");
     time.sleep(5)
   else:
     # Mensagem de erro de comunicacao com o sensor
     print("Falha ao ler dados do DHT11 !!!")

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!

1
Monitorando Temperatura com DHT11 e Raspberry Pi
41 votos, 4.71 classificação média (94% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

24 Comentários

  1. Pedro - 30 de março de 2017

    Como mandar tudo para o MySql?

  2. Matheus - 17 de fevereiro de 2017

    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?

  3. Luiz baroni - 14 de dezembro de 2016

    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?

  4. Vinicius Batista - 9 de novembro de 2016

    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?

  5. Felicio - 27 de setembro de 2016

    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! :)

  6. Ricardo Koyama - 19 de maio de 2016

    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

  7. Lang - 18 de maio de 2016

    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.

  8. Afonso - 28 de abril de 2016

    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

  9. Top 5 Projetos com Raspberry Pi | Blog FILIPEFLOP - 25 de janeiro de 2016

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

  10. Cassio - 12 de janeiro de 2016

    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.

  11. Muryllo - 19 de novembro de 2015

    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

  12. Muryllo - 19 de novembro de 2015

    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?

  13. Lucas - 21 de outubro de 2015

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

  14. daniel - 6 de outubro de 2015

    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

  15. Joel - 17 de agosto de 2015

    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 ?

  16. Pablo Pierre - 21 de julho de 2015

    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

  17. eduardo roosevelt - 11 de junho de 2015

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

    • Rodrigo Grechi - 2 de julho de 2015

      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”.

Deixe uma resposta