import machine
import dht
import time
import network
import urequests # Biblioteca para enviar dados para a internet
# 1. Configurações de Conexão
SSID = "Wokwi-GUEST" # Rede padrão do simulador Wokwi
PASSWORD = ""
API_KEY = "HSH9SI25IL6QA83L" # <--- COLE SUA CHAVE AQUI!
# 2. Configuração dos Pinos
sensor = dht.DHT22(machine.Pin(15))
led_red = machine.Pin(12, machine.Pin.OUT)
led_green = machine.Pin(13, machine.Pin.OUT)
led_blue = machine.Pin(11, machine.Pin.OUT)
TEMP_MIN = 18.0
TEMP_MAX = 24.0
# 3. Função para conectar ao Wi-Fi do simulador
def conecta_wifi():
print("Conectando ao Wi-Fi...", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(SSID, PASSWORD)
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.5)
print(" Conectado!")
conecta_wifi()
while True:
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
# Lógica dos LEDs
if temp > TEMP_MAX:
led_red.value(1); led_green.value(0); led_blue.value(0)
status = "Quente"
elif temp < TEMP_MIN:
led_red.value(0); led_green.value(0); led_blue.value(1)
status = "Frio"
else:
led_red.value(0); led_green.value(1); led_blue.value(0)
status = "Ideal"
# 4. ENVIO PARA O THINGSPEAK
print(f"Lendo: T={temp}C, H={hum}% - Enviando para Nuvem...")
# Criamos o link de envio (field1 é Temperatura, field2 é Umidade)
url = f"http://api.thingspeak.com/update?api_key={API_KEY}&field1={temp}&field2={hum}"
resposta = urequests.get(url)
print("Resposta do Servidor:", resposta.status_code) # 200 significa que deu certo!
resposta.close()
except Exception as e:
print("Erro ao ler ou enviar:", e)
# O ThingSpeak precisa de pelo menos 15 segundos entre cada envio (plano gratuito)
print("Aguardando 20 segundos para a próxima leitura...")
time.sleep(20)