# Controlador de riego automático:
# ● Descripción: Riega plantas automáticamente según la humedad del suelo.
# ● Sensores: Sensor de humedad del suelo.
# ● Funcionalidad: Activa una bomba de agua cuando la humedad del suelo es baja.
# ● Funcionalidad extra: visualizacion de datos en pantalla.
# ELEMENTOS DEL PROYECTO:
# Potenciometro = sensor de humedad del suelo.
# Led = la bomba de agua.
from machine import Pin, I2C, ADC
from ssd1306 import SSD1306_I2C
import time
# Configuración de la pantalla OLED
ancho = 128
alto = 64
i2c = I2C(0, scl=Pin(4), sda=Pin(5))
oled = SSD1306_I2C(ancho, alto, i2c)
# Configuración del sensor de humedad y la bomba de agua
sensor_humedad = ADC(Pin(34))
sensor_humedad.atten(ADC.ATTN_11DB) # Configuración de atenuación para el rango completo
bomba = Pin(22, Pin.OUT)
# Definir umbral de humedad
umbral_humedad = 500
# Función para mostrar datos en el OLED
def mostrar_datos(humedad, estado_riego):
oled.fill(0) # Limpiar pantalla
oled.text("Humedad: {}".format(humedad), 0, 0)
oled.text("Riego: {}".format("Activado" if estado_riego else "Desactivado"), 0, 20)
oled.show()
# Función para el control del riego
def control_riego():
# Leer el valor del sensor de humedad
valor_humedad = sensor_humedad.read()
print("Humedad del suelo: {}".format(valor_humedad))
# Verificar si se debe activar el riego
if valor_humedad < umbral_humedad:
bomba.value(1) # Activar la bomba
estado_riego = True
else:
bomba.value(0) # Desactivar la bomba
estado_riego = False
# Mostrar datos en el OLED
mostrar_datos(valor_humedad, estado_riego)
# Función principal
def main():
# Ejecutar el ciclo principal de control de riego
while True:
control_riego() # Controlar el riego
time.sleep(5) # Esperar 5 segundos antes de la siguiente lectura
if __name__ == "__main__":
main()