🌡️ Sensor de Temperatura DHT11
Ler temperatura e humidade com o sensor DHT11 via protocolo 1-Wire. Usar a biblioteca Adafruit DHT e apresentar os dados no terminal e num LCD.
Instalar a biblioteca
Terminal
pip3 install adafruit-circuitpython-dht sudo apt install libgpiod2 -y
Circuito
DHT11 VCC → 3.3V (pino 1)
DHT11 DATA → Res. 10kΩ para VCC + GPIO 4
DHT11 GND → GND (pino 6)
O pino DATA precisa de uma resistência pull-up de 10kΩ entre DATA e VCC. Muitos módulos DHT11 já têm esta resistência incorporada — verifica se o teu módulo tem 3 ou 4 pinos.
Exercício 1 — Leitura básica
Python · dht_leitura.py
import adafruit_dht import board import time # Inicializar sensor no GPIO 4 sensor = adafruit_dht.DHT11(board.D4) try: while True: try: temp = sensor.temperature hum = sensor.humidity print(f"Temperatura: {temp:.1f}°C | Humidade: {hum:.0f}%") except RuntimeError as e: # Erros de leitura são normais — tentar de novo print(f"Leitura falhou: {e}") time.sleep(2) # DHT11 precisa mín. 1s entre leituras except KeyboardInterrupt: sensor.exit() print("Sensor desligado.")
Exercício 2 — Alerta de temperatura
Python · dht_alerta.py
import adafruit_dht, board, RPi.GPIO as GPIO, time LED_OK = 18 # verde LED_WARN = 23 # vermelho LIMITE = 28 # °C GPIO.setmode(GPIO.BCM) for p in [LED_OK, LED_WARN]: GPIO.setup(p, GPIO.OUT) sensor = adafruit_dht.DHT11(board.D4) try: while True: try: t = sensor.temperature print(f"Temp: {t}°C") if t >= LIMITE: GPIO.output(LED_OK, GPIO.LOW) GPIO.output(LED_WARN, GPIO.HIGH) print("⚠ TEMPERATURA ELEVADA!") else: GPIO.output(LED_OK, GPIO.HIGH) GPIO.output(LED_WARN, GPIO.LOW) except RuntimeError: pass time.sleep(2) except KeyboardInterrupt: sensor.exit(); GPIO.cleanup()