Aula 8: Umidade e a temperatura com o sensor DHT11

Nesta aula vamos ver como você pode monitorar a temperatura e umidade de ambientes usando um Sensor de temperatura e umidade DHT11 com Raspberry Pi, utilizando um programa em Python que vai mostrar essas informações na tela em tempo real.

Circuito sensor DHT11 e Raspberry Pi

Material Necessário

Sensor de umidade e temperatura DHT11

Abaixo estão algumas 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 a Raspberry Pi utilizando apenas um pino, os outros dois são Vcc e GND, sendo que o terceiro pino não é utilizado. Confira o datasheet e na imagem abaixo a pinagem do sensor:

Pinos sensor DHT11

Circuito para monitorar umidade e temperatura com o sensor DHT11

Vamos enviar os dados do sensor para o Raspberry Pi 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).

Utilize um resistor de 6,8kΩ como pull-up para o pino de dados do sensor.

Circuito com sensor DHT11 e Raspberry Pi

Biblioteca do sensor de temperatura DHT11

A fim de facilitar a nossa programação, temos que instalar a biblioteca própria do DHT11. No terminal de comandos basta utilizar o já conhecido “pip” para instalar a biblioteca da Adafruit:

sudo pip3 install Adafruit_DHT

Se quiser saber mais sobre o funcionamento do DHT11, você pode consultar o seu manual e ver exemplos da própria biblioteca.

Código para monitorar umidade e temperatura com o sensor 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.

# Programa : Sensor de temperatura DHT11 com Raspberry Pi
# 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 !!!")

Execute o programa para os dados de temperatura e umidade serem apresentados em intervalos de 5 segundos.