from machine import Pin, PWM
import dht
import time
# Configuração do sensor DHT22
sensor_dht = dht.DHT22(Pin(15)) # DATA conectado ao GPIO 15
# Configuração do buzzer passivo
buzzer = PWM(Pin(2)) # GPIO 2
# Limites de alerta
TEMP_LIMITE = 30 # Temperatura máxima (em °C)
UMIDADE_LIMITE = 40 # Umidade mínima (em %)
# Função para tocar um tom no buzzer
def activate_buzzer_tone(frequency=1000, duration=1):
"""
Ativa o buzzer para tocar um tom audível.
:param frequency: Frequência do tom em Hz (padrão: 1000 Hz)
:param duration: Duração do tom em segundos (padrão: 1 segundo)
"""
buzzer.freq(frequency) # Define a frequência
buzzer.duty(512) # Ativa o buzzer (50% do ciclo de trabalho)
time.sleep(duration) # Duração do som
buzzer.duty(0) # Desliga o buzzer
# Função principal de verificação
def verifica_sensor():
try:
# Leitura do sensor
sensor_dht.measure()
temperatura = sensor_dht.temperature()
umidade = sensor_dht.humidity()
print(f"Temperatura: {temperatura}°C, Umidade: {umidade}%")
# Condições de alerta
if temperatura > TEMP_LIMITE and umidade < UMIDADE_LIMITE:
print("Condições críticas! Ativando alerta sonoro.")
# Tocar tons alternados para alerta crítico
activate_buzzer_tone(frequency=2500, duration=0.5) # Tom mais agudo
time.sleep(0.2) # Pequena pausa entre os tons
activate_buzzer_tone(frequency=1500, duration=0.5) # Tom mais grave
else:
print("Condições normais. Nenhum alerta necessário.")
except OSError as e:
print("Erro ao acessar o sensor:", e)
# Testa o buzzer antes de iniciar o loop principal
print("Testando o buzzer...")
activate_buzzer_tone(frequency=2000, duration=1) # Tom de teste
print("Teste concluído.")
# Loop principal
while True:
verifica_sensor()
time.sleep(5) # Aguarda 5 segundos entre leituras