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();
}
Pública tu duda o comentario
Resuelve tus dudas con la comunidad.
(0) Comentarios
No registra comentarios, se el primero en comentar.
Publicar