from machine import Pin, ADC, PWM # Librería para manejo de pines, ADC y PWM
import utime # Librería para manejo del tiempo
import network # Librería para conectividad de red
import urequests # Librería para hacer solicitudes HTTP
import dht # Librería para el sensor DHT22
# Datos de Wi-Fi para Wokwi
SSID = 'Wokwi-GUEST'
PASSWORD = ''
def conectar_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
print('Conectando a la red...')
utime.sleep(1)
print('Conectado a:', wlan.ifconfig())
led_rojo = PWM(Pin(13), freq=1000)
ldr = ADC(Pin(34))
ldr.atten(ADC.ATTN_11DB)
sensor_dht = dht.DHT22(Pin(15))
sensor_pir = Pin(16, Pin.IN, Pin.PULL_DOWN)
buzzer = PWM(Pin(17), freq=500)
sensor_sonido = ADC(Pin(35))
sensor_sonido.atten(ADC.ATTN_11DB)
umbral_bajo = 1000
umbral_medio = 3000
umbral_humedad = 40
umbral_temperatura = 30
umbral_ruido = 2000
conectar_wifi(SSID, PASSWORD)
def enviar_datos(sensor, valor, message, nivelUmbral, temperature, humidity, regar, plagas):
data = {
'sensor': sensor,
'value': valor,
'message': message,
'nivelUmbral': nivelUmbral,
'temperature': temperature,
'humidity': humidity,
'regar': regar,
'plagas': plagas,
'location': 'Bv los granaderos 1334',
'device_status': 'active',
'battery_level': 100
}
print('Enviando datos:', data)
try:
response = urequests.post('https://iot-75r2.onrender.com/data', json=data)
print('Código de respuesta:', response.status_code)
print('Respuesta JSON:', response.json())
except Exception as e:
print('Error en la solicitud:', e)
while True:
valor_ldr = ldr.read()
print(f"Valor LDR: {valor_ldr}")
sensor_dht.measure()
temperature = sensor_dht.temperature()
humidity = sensor_dht.humidity()
print(f"Temperatura: {temperature}°C, Humedad: {humidity}%")
if humidity < umbral_humedad and temperature > umbral_temperatura:
regar = "Es necesario regar las plantas"
else:
regar = "No hace falta regar las plantas"
if sensor_pir.value() == 1: # Si se detecta movimiento
plagas = "Se detectaron plagas - Rociando spray"
print(plagas)
# Activar buzzer cuando se detecta movimiento
buzzer.duty(512)
print("Movimiento detectado - Activando buzzer")
else:
plagas = "No se detectaron plagas"
buzzer.duty(0) # Desactivar buzzer si no hay movimiento
print("No se detecta movimiento - Buzzer apagado")
# Lógica para controlar el LED
if valor_ldr > umbral_medio:
led_rojo.duty(1023)
message = "Luz alta - LED apagado"
nivelUmbral = umbral_medio
elif umbral_bajo < valor_ldr <= umbral_medio:
led_rojo.duty(512)
message = "Luz media - LED a brillo medio"
nivelUmbral = umbral_medio
else:
led_rojo.duty(0)
message = "Luz baja - LED encendido"
nivelUmbral = umbral_bajo
# Comprobar el nivel de ruido
nivel_ruido = sensor_sonido.read()
print(f"Nivel de ruido: {nivel_ruido}")
if nivel_ruido > umbral_ruido:
print("Ruido detectado")
else:
print("No se detecta ruido")
# Enviar datos al servidor
enviar_datos('LDR', valor_ldr, message, nivelUmbral, temperature, humidity, regar, plagas)
utime.sleep(5)
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4