Como crear un sistema de riego automático basado en ESP

La combinación de ESP con sensores de humedad de tierra ofrece una manera efectiva de monitorear y visualizar datos de la tierra en tiempo real. En este tutorial, te guiaremos a través de la creación de un sensor de humedad utilizando un sensor capacitivo y cómo mostrar los datos en una pantalla LCD y una página web local en html y css.

Este proyecto es de un nivel más avanzado, pero aun así, proporciona una buena base sobre la programación con Arduino.

Materiales Necesarios

Antes de comenzar, asegúrate de tener los siguientes materiales a mano (click en cada uno para ver el producto en Amazon):

  1. Sensor de temperatura y humedad DHT11 o ESP32.
  2. Placas de baquelita para realizar el montaje.
  3. Kit de soldadura y estaño.
  4. Cables de conexión.
  5. LCD para mostrar información.
  6. Cables de conexión entre componentes.
  7. Sensores de humedad de suelo.
  8. Cable para conectar los sensores.
  9. Un relay doble.
  10. Modulo RTC.
  11. Conectores para cable.
  12. Pines para los conectores.
  13. Caja estanca para guardar los componentes.
  14. Fuente de alimentación para el ESP o un cable para batería y baterías.
  15. Una computadora con el software Arduino IDE instalado.

O también puedes adquirir un Kit de inicio Arduino, que contenga todos estos componentes, entre los mostrados a continuación:

Paso 1: Conexión del Sensor DHT

Comienza conectando el sensor DHT a tu Arduino. Por lo general, el sensor DHT tiene tres pines: VCC (alimentación), DAT (datos) y GND (tierra). Conéctalos de la siguiente manera:

  • VCC del sensor DHT a 5V del Arduino.
  • DAT del sensor DHT al pin digital 2 del Arduino.
  • GND del sensor DHT a GND del Arduino.

Paso 2: Conexión de los Displays LED de 7 Segmentos

Conectar dos displays LED de 7 segmentos de 3 dígitos al Arduino es un proceso importante en este proyecto. Asegúrate de seguir estos pasos:

  1. Identifica los Pines de los Displays: Primero, identifica los pines en los display LED de 7 segmentos de 3 dígitos. Dependiendo del modelo (común ánodo o común cátodo), los pines pueden variar. Consulta la hoja de datos del display o la documentación del fabricante para confirmar la disposición de pines.
  2. Conexión a Arduino: Usaremos un display LED para la temperatura y otro para la humedad. Conéctalos de la siguiente manera:
    • Conecta el pin de cátodo común (común ánodo o común cátodo, dependiendo del modelo) del primer display al GND del Arduino.
    • Conecta el pin de cátodo común del segundo display al GND del Arduino.
    • Conecta los pines de ánodo de los dígitos de cada display a pines digitales del Arduino, como el pin 2, 3 y 4 para un display y el pin 5, 6 y 7 para el otro.
    • Conecta los pines de segmentos «a», «b», «c», «d», «e», «f» y «g» de ambos displays a pines digitales del Arduino según corresponda.
  3. Resistencias: Coloca una resistencia de 220 ohmios en serie con cada pin de segmento de los displays LED (pines «a» a «g») para limitar la corriente.

Paso 3: Código Arduino

A continuación, te presentamos el código Arduino para leer los datos del sensor DHT y mostrar la temperatura en un display y la humedad en el otro display LED de 7 segmentos de 3 dígitos. Asegúrate de haber instalado las bibliotecas necesarias («DHT.h» y «SevSeg.h») antes de cargar el programa en tu Arduino. El código realiza la lectura del sensor, convierte los datos y muestra la información en los displays.

#include <DHT.h>
#include <SevSeg.h>

#define DHTPIN 2  // Pin de datos del sensor DHT
#define DHTTYPE DHT11  // Tipo de sensor DHT (DHT11 o DHT22)

DHT dht(DHTPIN, DHTTYPE);
SevSeg tempDisplay;  // Inicializa el objeto SevSeg para la temperatura
SevSeg humDisplay;   // Inicializa el objeto SevSeg para la humedad

void setup() {
  dht.begin();
  // Mapeo de los pines del display de temperatura realizado en la protoboard
  tempDisplay.begin(COMMON_ANODE, 3, 2, 1, 4, 5, 6, 7, 8, 9);
  tempDisplay.setBrightness(90);  // Ajusta el brillo del display de temperatura
  // Mapeo de los pines del display de humedad realizado en la protoboard
  humDisplay.begin(COMMON_ANODE, 12, 11, 10, 13, 14, 15, 16, 17, 18);
  humDisplay.setBrightness(90);   // Ajusta el brillo del display de humedad
}

void loop() {
  float tempC = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Muestra la temperatura en el display
  int temp = int(tempC);  // Convierte la temperatura a entero
  tempDisplay.setNumber(temp, 1);
  tempDisplay.refreshDisplay();

  // Muestra la humedad en el display
  int hum = int(humidity);  // Convierte la humedad a entero
  humDisplay.setNumber(hum, 1);
  humDisplay.refreshDisplay();

  delay(5000);  // Espera 5 segundos
}

Paso 4: Prueba y Ajustes

Carga el programa en tu Arduino y asegúrate de que todo esté funcionando correctamente. Observa la temperatura y la humedad mostradas en los displays LED de 7 segmentos de 3 dígitos. Puedes ajustar el código para mostrar los valores en el formato que prefieras, incluso mostrar un decimal en la temperatura, o agregar características adicionales, como la conversión de unidades o la calibración del sensor.

Con este proyecto, has creado un sensor de temperatura y humedad con Arduino y has aprendido a visualizar los datos en dos displays LED de 7 segmentos de 3 dígitos, uno para la temperatura y otro para la humedad. Esta es solo una de las muchas aplicaciones que puedes explorar con Arduino, sensores y dispositivos de visualización. ¡Diviértete experimentando y expandiendo tus habilidades en electrónica y programación!