Sistema de Monitoreo de Cultivo con Arduino: Temperatura, Humedad y Luz

En este tutorial, aprenderás a crear un sistema de monitoreo de variables ambientales en un cultivo utilizando un Arduino. Este proyecto registrará tres parámetros claves: temperatura, humedad del suelo e intensidad de luz. Los datos recolectados se mostrarán en una pantalla LCD I2C, permitiendo un monitoreo en tiempo real de las condiciones de tu cultivo.

Materiales:

  • 1 x Arduino Uno
  • 1 x Sensor de temperatura LM35
  • 1 x Sensor de humedad de suelo YL-100 resistivo
  • 1 x Fotorresistencia (LDR)
  • 1 x Pantalla LCD I2C de 16x2
  • 1 x Resistencia de 220Ω (para el LDR)
  • 1 x Protoboard
  • Cables de conexión
  • Fuente de alimentación (USB o batería)

Descripción de materiales:

  • Arduino Uno: Microcontrolador que actuará como el "cerebro" del sistema, recogiendo y procesando los datos de los sensores.
  • Sensor LM35: Mide la temperatura ambiente en grados Celsius con alta precisión, y proporciona una salida analógica proporcional a la temperatura.
  • Sensor de humedad de suelo YL-100: Mide la humedad en el suelo mediante la conductividad entre dos sondas, permitiendo saber si el suelo está seco o húmedo.
  • Fotorresistencia (LDR): Detecta la cantidad de luz que recibe la planta. Su resistencia cambia con la intensidad de luz, lo que permitirá al sistema medir el nivel de iluminación.
  • Pantalla LCD I2C de 16x2: Mostrará los valores de temperatura, humedad y luz en tiempo real. La conexión I2C reduce el número de pines necesarios.
  • Resistencia de 220Ω: Utilizada en el divisor de tensión del LDR para convertir los cambios de luz en una señal que pueda leer el Arduino.

Consideraciones y sugerencias:

  • Ubicación de los Sensores:
    • Coloca el sensor de humedad en el suelo cerca de las raíces de la planta para obtener una lectura precisa.
    • Ubica el LM35 lejos de fuentes de calor directas para evitar distorsión en las lecturas.
    • Coloca el LDR en un lugar donde pueda captar la luz natural o artificial que incide sobre la planta.
  • Calibración:
    • El sensor de humedad de suelo puede requerir una calibración para definir los niveles de "seco" y "húmedo". Puedes ajustar los valores umbrales basándote en las condiciones de tu planta.
    • La sensibilidad del LDR a diferentes niveles de luz puede depender del entorno, por lo que también se recomienda experimentar con las lecturas en diferentes condiciones de iluminación.
  • Suministro de Energía:
    • Si planeas mantener este sistema en operación constante, considera usar una batería recargable o conectar el Arduino a una fuente de alimentación permanente.
  • Mejoras Futuras:
    • Puedes agregar más sensores, como un sensor de humedad ambiental o de CO2, para monitorear otros aspectos del entorno.
    • Considera agregar un módulo de comunicación inalámbrica (WiFi o Bluetooth) para monitorear los datos de forma remota.

Diagrama de conexión:

  • Sensor LM35:
    • VCC a 5V
    • GND a GND
    • Salida a A1 del Arduino
  • Sensor de humedad de suelo YL-100:
    • VCC a 5V
    • GND a GND
    • Salida analógica a A0 del Arduino
  • Fotorresistencia (LDR):
    • Un extremo del LDR a 5V
    • El otro extremo a A2 del Arduino
    • Entre el LDR y tierra, coloca la resistencia de 10kΩ
  • Pantalla LCD I2C:
    • SDA a A4
    • SCL a A5
    • VCC a 5V
    • GND a GND
#include <LiquidCrystal_I2C.h>

int humedad = A0;
int intensidadLuz = A2;
int temp=A1;

LiquidCrystal_I2C lcd(0x20,16,2);

void setup() {
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
}

int valTemp=0;

void loop() {
  int valHumedad = map(analogRead(humedad),0, 876,0,100);
  int valLuz = map(analogRead(intensidadLuz),0, 310, 0, 100);
  
  valTemp = analogRead(temp);
  valTemp = ((5.0 * valTemp * 100)/1024)-50;
  
  lcd.print("HSU:"); //Indicador Humedad de suelo
  lcd.print(valHumedad);
  lcd.print("% ");
  lcd.print("L:"); // Indicador Intensidad de luz
  lcd.print(valLuz);
  lcd.print("%");
  lcd.setCursor(0,1);
  lcd.print("TEMP:"); //Indicador de temperatura
  lcd.print(valTemp);
  lcd.print("C");
  
  //De aqui hacia abajo se muestran los datos para validación

  Serial.print("Humedad de suelo: ");
  Serial.print(analogRead(humedad));
  Serial.print(" ");
  Serial.print("Intensidad de luz: ");
  Serial.print(analogRead(intensidadLuz));
  Serial.print(" ");
  Serial.print("Temperatura C: ");
  Serial.print(valTemp);
  Serial.println(" ");

  delay(3000);
  lcd.clear();
}

(0) Comentarios

No registra comentarios, se el primero en comentar.
Publicar

Pública tu duda o comentario

Resuelve tus dudas con la comunidad.

*Obligatorio*