#https://wokwi.com/projects/461594775289563137
from machine import Pin
import dht
import time
# dados para o sistema sistema
dados = {
"intervalo_leitura": 2,
"pinos": {
"sensor_dht": 12,
"led_azul": 18,
"led_amarelo": 19,
"led_vermelho": 21
},
"historico_temp":[]
}
# Configuração de hardware
dispositivos = {
"sensor": dht.DHT22(Pin(dados["pinos"]["sensor_dht"])),
"led_frio": Pin(dados["pinos"]["led_azul"], Pin.OUT),
"led_normal": Pin(dados["pinos"]["led_amarelo"], Pin.OUT),
"led_quente": Pin(dados["pinos"]["led_vermelho"], Pin.OUT)
}
#Função para classificar a temperatura
def classificar_temp(leitura):
if leitura["temperatura"] <= 20:
return 'frio'
elif leitura["temperatura"] > 20 and leitura["temperatura"] <= 25:
return 'normal'
elif leitura["temperatura"] > 25:
return 'quente'
# Função de leitura do sensor de temperatura
def ler_sensor():
dispositivos["sensor"].measure()
leitura = {
"temperatura": dispositivos["sensor"].temperature(),
"umidade": dispositivos["sensor"].humidity(),
"tempo_atual": time.time()
}
return leitura
#Função calcular medias de temperatura
def media_temp():
media = sum (dados["historico_temp"]) / len(dados["historico_temp"])
return media
#Apagar todos os leds
def apagar_leds():
dispositivos['led_frio'].off()
dispositivos['led_normal'].off()
dispositivos['led_quente'].off()
# Mecanismo de alerta de acordo com o nível de temperatura
def acender_led(nivel):
apagar_leds()
if nivel == 'frio':
dispositivos["led_frio"].on()
elif nivel == 'normal':
dispositivos["led_normal"].on()
elif nivel == 'quente':
dispositivos["led_quente"].on()
# Programa principal
while True:
leitura = ler_sensor()
nivel = classificar_temp(leitura)
dados["historico_temp"].append(leitura["temperatura"])
print("=== MONITORAMENTO DE TEMPERATURA ===")
for chave, valor in leitura.items():
print("\t",chave, ":", valor)
print("O clima está", nivel)
print("dados:",dados["historico_temp"])
print("A média das temperaturas medidas são", media_temp())
print('-' * 36)
acender_led(nivel)
time.sleep(dados["intervalo_leitura"])