import network
import time
import dht
from machine import Pin, ADC
import urequests
SSID = "Wokwi-GUEST"
PASSWORD = ""
THINGSPEAK_URL = "https://api.thingspeak.com/update"
THINGSPEAK_API_KEY = "W5M8BLYQBFSTBDQN"
DHT_PIN = Pin(15)
LDR_PIN = ADC(Pin(34))
TRIG_PIN = Pin(12, Pin.OUT)
ECHO_PIN = Pin(13, Pin.IN)
PIR_PIN = Pin(14, Pin.IN)
POT_PIN = ADC(Pin(34))
dht_sensor = dht.DHT22(DHT_PIN)
ldr_sensor = LDR_PIN
ldr_sensor.atten(ADC.ATTN_11DB)
def conectar_wifi():
print("Conectando a WiFi...")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
intentos = 0
while not wlan.isconnected():
intentos += 1
print(".", end="")
time.sleep(0.5)
if intentos > 20:
print("\nNo se pudo conectar a WiFi.")
return False
print("\nConectado a WiFi!")
return True
def medir_distancia():
TRIG_PIN.off()
time.sleep_us(2)
TRIG_PIN.on()
time.sleep_us(10)
TRIG_PIN.off()
while ECHO_PIN.value() == 0:
inicio = time.ticks_us()
while ECHO_PIN.value() == 1:
fin = time.ticks_us()
duracion = time.ticks_diff(fin, inicio)
distancia = (duracion * 0.0343) / 2
return distancia
def enviar_a_thingspeak(temp, hum, luz, dist, pir, pot):
data = {
"api_key": THINGSPEAK_API_KEY,
"field1": temp,
"field2": hum,
"field3": luz,
"field4": dist,
"field5": pir,
"field6": pot,
}
try:
respuesta = urequests.post(THINGSPEAK_URL, json=data)
print("Enviado a ThingSpeak:", respuesta.text)
respuesta.close()
except Exception as e:
print("Error al enviar datos:", e)
if conectar_wifi():
while True:
try:
dht_sensor.measure()
temperatura = dht_sensor.temperature()
humedad = dht_sensor.humidity()
luz = ldr_sensor.read()
distancia = medir_distancia()
pir = PIR_PIN.value()
pot = POT_PIN.read()
print("Temperatura:", temperatura, "°C")
print("Humedad:", humedad, "%")
print("Luz:", luz)
print("Distancia:", distancia, "cm")
print("PIR:", pir)
print("Potenciómetro:", pot)
enviar_a_thingspeak(temperatura, humedad, luz, distancia, pir, pot)
time.sleep(15)
except Exception as e:
print("Error en la lectura:", e)