Prototipo para el monitoreo de variables ambientales como temperatura, intensidad de luz, humedad de aire y humedad de suelo.

Este proyecto tiene como objetivo desarrollar un sistema de monitoreo en tiempo real de variables ambientales críticas utilizando un conjunto de sensores conectados a un microcontrolador. Las variables monitoreadas incluyen temperatura y humedad del aire mediante el sensor DHT11, intensidad de luz a través de una fotorresistencia, y humedad del suelo mediante el sensor YL-100. El sistema incluye una pantalla LCD I2C para mostrar los valores recogidos, así como un potenciómetro para ajustar el brillo de la pantalla. Esta solución está diseñada para ofrecer información precisa y accesible, ideal para aplicaciones en agricultura, domótica o monitoreo ambiental en interiores y exteriores.

Componentes utilizados:

  • Sensor DHT11: Mide la temperatura y la humedad del aire.
  • Fotorresistencia: Detecta la intensidad de la luz ambiental.
  • Sensor YL-100: Mide la humedad del suelo.
  • LCD I2C: Pantalla para mostrar las lecturas de los sensores.
  • Potenciómetro: Controla el brillo de la pantalla.

Objetivos:

  1. Monitorear y visualizar la temperatura, la humedad del aire, la intensidad de luz y la humedad del suelo en tiempo real.
  2. Ajustar el brillo de la pantalla mediante un potenciómetro para una lectura óptima en diversas condiciones de luz.
  3. Proporcionar una solución económica y efectiva para el monitoreo ambiental en aplicaciones de agricultura, invernaderos, domótica y otras áreas afines.

Empecemos:

Diseño del prototipo portable en 3d:

Este diseño es el contenedor tiene espacio para usar tarjeta arduino nano con su respectiva shield de expansión o esp32 con su respectiva shield de expansión, esta diseñado para facilitar las conexión con los diferentes componentes presentes, por otra parte tiene un soporte para colocar el potenciometro con el cual se controla el brillo de la lcd, tiene una ranura para la conexión del sensor de humedad yl-100, otra ranura para conectar la placa a nuestro equipo, con el proposito de hacer prueba sin que requiera destaparse.

 

 

y otra ranura donde se coloca el conector de carga de las baterias.

 

 

 

El diseño de la tapa viene ajustado para encajar con su caja, lo cual hace que no requiere de algun conector o cierre adicional, esta creada para usarse con pantalla lcd de 16x2.

 

 

Tiene el espacio de conexión para el sensor dht11 o dht22, un espacio para colocar la fotorresitencia que es precisamente el que esta justo encima del sensor de temperatura y a su derecha el espacio por el cual sale el potenciometro.

Si deseas los diseños puedes solicitarlos en la caja de comentarios de la publicación.

Diseño esquema de conexión:

Código fuente:

#include <LiquidCrystal_I2C.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11

int humedad = A0;
int intensidadLuz = A2;
int potPin = A1; // Pin del potenciómetro
int medidorBateria =A7;

int voltaje = 0;

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  dht.begin();
  pinMode(humedad, INPUT);
}

void loop() {
  int valHumedad = map(analogRead(humedad), 0, 1023, 100, 0);
  int valLuz = map(analogRead(intensidadLuz), 0, 850, 0, 100);
  int temp = 0, hum = 0;
  int valorVoltaje = (analogRead(medidorBateria) * 5)/1023;

  voltaje = map(valorVoltaje, 0, 5, 0, 100);

  temp = dht.readTemperature();
  hum = dht.readHumidity();

  int potValue = analogRead(potPin); // Leer valor del potenciómetro
  int brightness = map(potValue, 0, 1023, 0, 255); // Mapear valor a rango de 0-255

  analogWrite(3, brightness); // Ajustar la intensidad de la luz del LCD (usando pin PWM)

  lcd.print("HSU:");
  lcd.print(valHumedad);
  lcd.print("% ");
  lcd.print("L:");
  lcd.print(valLuz);
  lcd.print("%");
  lcd.setCursor(0, 1);
  lcd.print("T:");
  lcd.print(temp);
  lcd.print("HAI:");
  lcd.print(hum);
  lcd.print("%");
  lcd.print("M:");
  lcd.print(voltaje);
  lcd.print("%");

  Serial.print("Humedad de suelo: ");
  Serial.print(valHumedad);
  Serial.print(" ");
  Serial.print("Intensidad de luz: ");
  Serial.print(analogRead(intensidadLuz));
  Serial.print(" ");
  Serial.print("Temperatura C: ");
  Serial.print(temp);
  Serial.print(" ");
  Serial.print("Humedad aire: ");
  Serial.print(hum);
  Serial.print(" ");
  Serial.print(" ");
  Serial.print("Voltaje");
  Serial.println(voltaje);


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

Este código permite la recolección de datos en cultivos agricolas como temperatura, humedad de aire, humedad de suelo e intensida de luz, lo cual permite al agricultor capturar los datos en tiempo real de su cultivo y apartir de ello tomar decisiones en cuanto a su riego y fertilización, la lectura se hace cada 5 segundos (estos valores los puedes ajustar a tus necesidades).

Si tienes alguna duda, consejo o sugerencia no dudes en dejarla en los comentarios de la publicación.


(0) Comentarios

No registra comentarios, se el primero en comentar.
Publicar

Pública tu duda o comentario

Resuelve tus dudas con la comunidad.

*Obligatorio*