from machine import Pin, ADC
import dht
import time
# Definir pines
SENSOR_SUELO_PIN = 34 # Sensor de humedad del suelo (analógico)
DHT_PIN = 4 # Sensor DHT22 (digital)
RELAY_PIN = 26 # Relé para bomba/electroválvula
# Umbrales de humedad
UMBRAL_HUMEDAD_SUELO = 40 # Umbral para activar el riego (0-100%)
UMBRAL_HUMEDAD_AMBIENTE = 30 # Umbral de humedad ambiente
# Configuración del sensor de humedad del suelo
sensor_suelo = ADC(Pin(SENSOR_SUELO_PIN))
sensor_suelo.atten(ADC.ATTN_11DB) # Rango 0-3.3V
# Configuración del relé
rele = Pin(RELAY_PIN, Pin.OUT)
rele.value(1) # Apagar el relé al inicio
# Configuración del sensor DHT22
dht22 = dht.DHT22(Pin(DHT_PIN))
while True:
try:
# Leer humedad del suelo (0 - 4095) y convertir a porcentaje (0% - 100%)
humedad_suelo = sensor_suelo.read()
humedad_suelo = (4095 - humedad_suelo) * 100 // 4095
# Leer temperatura y humedad del DHT22
dht22.measure()
temperatura = dht22.temperature()
humedad_ambiente = dht22.humidity()
# Mostrar valores en consola
print(f"Humedad suelo: {humedad_suelo}%")
print(f"Temperatura: {temperatura}°C, Humedad ambiente: {humedad_ambiente}%")
# Control de riego automático
if humedad_suelo < UMBRAL_HUMEDAD_SUELO or humedad_ambiente < UMBRAL_HUMEDAD_AMBIENTE:
print("Activando riego...")
rele.value(0) # Encender la bomba/electroválvula
else:
print("Humedad suficiente, riego apagado.")
rele.value(1) # Apagar la bomba/electroválvula
except Exception as e:
print("Error:", e)
time.sleep(5) # Esperar 5 segundos antes de la siguiente lectura
Humedad Suelo
Humedad Ambiente
Temperatura Ambiente
Bomba de riego