Neste artigo 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.
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:
Circuito para monitorar umidade e temperatura com o sensor DHT11 e Raspberry Pi
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.
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 : MakerHero # 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.
Uma pergunta de leigo:
No Raspberry pi é instalado algum SO (Debian, Ubuntu), para que possa ser executado o arquivo Python?
Olá Filipe,
Comumente é instalado o SO Raspberry Pi OS, que é baseado no Debian.
Abraços!
Vinícius – Equipe MakerHero