Invernadero automático

INVERNADERO AUTOMÁTICO

Grupo 7 – Arduino Uno


Antes de decantarnos por este proyecto, habíamos pensado en realizar una máquina de gancho, también conocida como «Claw Machine»: esta consiste en recoger los productos de su interior con un gancho colgante del techo el cual es controlado con un joystick. Era una idea bastante original y completa; sin embargo, sería necesario una gran cantidad de materiales, y esto mismo iba a causar que superáramos nuestro presupuesto.

Fue entonces cuando decidimos echar un vistazo al Kit Starter de Arduino y en base a eso fuimos evaluando las distintas ideas que se nos fueron ocurriendo. De entre ellas se encontraba la de un invernadero, y, aunque no éramos grandes fanáticos de las plantas y no teníamos gran capacidad para mantenerlas con vida durante un tiempo considerable, era una idea bastante completa de la que podríamos aprender bastante.

Así pues, a continuación, mostramos el proceso de creación de este, elaborado por:

  • Sergio Ortiz Manso
  • Mario Espasandín Hernández
  • Leire Arranz Esteban

PRIMEROS PASOS


Al inicio, nuestra intención era desarrollar un invernadero, tanto manual como automático, con un sistema de regulación de temperatura mediante el control de una ventana, un ventilador y luces LED. Además, buscábamos incorporar un sistema de riego que respondiera a la humedad del suelo y a la disponibilidad de agua. También pensamos en la comodidad del usuario, por lo que ideamos una interfaz que incluyera una pantalla LCD y un potenciómetro para seleccionar y visualizar los datos del invernadero. Asimismo, implementamos un conjunto de LEDs indicadores para alertar sobre posibles problemas en caso de que los componentes mencionados no cumplieran con sus funciones.

No obstante, esta idea pronto se distorsionó debido a problemas con Arduino, como veremos más tarde.

Para ayudarnos a pensar bien en como sería nuestra idea, realizamos un sketch:

Idea general del proyecto

Apertura de la ventana con servomotor

Para llevar esto a cabo, hicimos una lista de componentes necesarios y nos pusimos manos a la obra en la búsqueda de aquellos que nos faltaban:

  • 1 servomotor: Control de ventana según temperatura y para renovar aire automáticamente
  • LEDs: Calentar ambiente + iluminar por la noche
  • 1 ventilador: Enfriar ambiente (necesario un transistor y un diodo)
  • 1 sensor de temperatura y humedad: Controla las LEDs, el ventilador y el sistema de riego 
  • 1 sensor de agua que detecte si hay suficiente agua para regar 
  • LEDs: Informan de errores: temperatura, humedad crítica e insuficiencia de agua 
  • 1 bomba de agua y un tubo de agua: Sistema de regadío (activado si la humedad es baja, y el detector de agua detecta suficiente agua), con interruptor para poder probarlo. 
  • Relé: Interruptor de la bomba.
  • 1 sensor de luminosidad: Para encender luces nocturnas (LEDs nocturnas) 
  • 1 pantalla LCD: Mostrar datos y otros mensajes del invernadero:
    • Temperatura
    • Humedad
    • Nivel de agua
    • Cambio de modo
  • 1 potenciómetro: Variar los datos mostrados en la pantalla 
  • Resistencias y cables oportunos 
  • Para el modo manual: Mando a distancia y detector de infrarrojos para realizar funciones.
  • Bisagras y tornillos: Montaje de la estructura
  • Madera: Base y estructura general
  • Acetato: En vez de cristales. Necesitábamos un material que no fuera tan delicado y que pudiera empujar fácilmente el servomotor.

Bisagras

Madera

Acetato


COSTES


Podemos resumir el coste total de todo lo anterior en la siguiente tabla:


PROCEDIMIENTO


Una vez que ya teníamos los componentes, procedimos a montar la estructura:


Mientras tanto, fuimos elaborando el código y un Tinkercad para comprobar que todo funcionaba como estaba planeado:

La explicación del Tinkercad mostrado, se puede encontrar aquí:


Cabe mencionar que el sensor de temperatura que se encuentra en el pin analógico A0 no corresponde al sensor que poseemos, que es digital y se conectará al pin 12.

Luego, uniríamos la bomba y el sensor de agua, que no están en Tinkercad pero cuya conexión queda representada en las siguientes imágenes:

Conexión de la bomba a una pila de 5V

Conexión del sensor de nivel de agua


PROBLEMAS


Cuando lo pasamos a físico, encontramos una serie de problemas que nos obligaron a cambiar el funcionamiento del proyecto:

  • Falta de pines digitales: Intentamos resolverlo con la implementación de un registro de desplazamiento de bits pero esto causó que la pantalla LCD no se encendiera.
  • Conflicto entre librerías: Adafruit_LiquidCrystal con IRremote, tuvimos que eliminar más tarde la librería de terceros de Adafruit y usar simplemente la de LiquidCrystal, obligándonos a quitar el registro de desplazamiento de bits y a volver a tener el problema de falta de pines digitales.
  • El programa parecía requerir más memoria de la que Arduino podía soportar, y entonces algunas funciones en el modo manual no se realizaban.
  • La función servo.attach(servoPin) daba error en el programa y tuvimos que quitarlo, también debido a la falta de pines.
  • Las luces de error tuvieron que suprimirse por la falta de pines también.
  • Ventilador defectuoso: El cable del ground venía suelto, así que tuvimos que unirlo y sujetarlo con cinta adhesiva.
  • Mando a distancia defectuoso: Tuvimos que usar un mando de televisión y obtener los nuevos códigos hexadecimales de señal para actualizar el código.

Así pues tuvimos que reestructurar todo nuestro código, optimizarlo, y alterar la forma en la que funcionaba además de los componentes utilizados:

  • LDR: Este es el sensor de luminosidad. Cuando detecta que hay poca luz en el ambiente, activará unas LEDS a modo de bombillas para tener luz.
  • Sensor de temperatura DHT11: Cuando la temperatura supere los 30 grados, activará un ventilador. Cuando la temperatura no supere los 10 grados, se encenderán unas LEDS a modo de luz térmica. Básicamente, produce valores de los que dependerá el funcionamiento automático del ventilador y las LEDs.
  • Sensor de humedad de suelo: Cuando la humedad sea menor de un 75% y el sensor de nivel del agua detecta suficiente agua almacenada en el recipiente, activará la bomba de agua para el sistema de regadío.
  • Sensor de nivel del agua: Cuando el nivel del agua sea estable para regar y la humedad ambiente no sea suficiente (75%), se permitirá activar la bomba de agua.
  • Ventilador: Se activará cuando el sensor de temperatura lo indique (temperaturas mayores a 30ºC), regulando así la temperatura del invernadero hasta que ya no sea necesario y se apague (temperatura estable entre 10ºC y 30ºC).
  • Bomba de agua: Es la encargada de regar cuando los valores de los sensores de humedad y nivel del agua sean los oportunos. De la bomba sale un tubo de plástico que recorre el invernadero por encima, tiene unos agujeros pequeños donde el agua caerá poco a poco para regar las plantas. Esta es controlada con un relé.
  • Mando y detector de infrarrojos: Una vez el invernadero esté en modo manual, el mando podrá ejercer las funciones al pulsar un botón concreto:
    • Botón 1 : Enciende LEDs
    • Botón 2 : Apaga LEDs
    • Botón 3 : Se muestra por el Serial Monitor el valor captado por los sensores
    • Botón 4 : Activa el ventilador (2s)
    • Botón 5 : Activa la bomba de agua (2s)
    • Botón 6 : Activa la pantalla LCD y pone los valores de los sensores (2s)
    • Botón 7 : Modo automático hasta que se presione algún otro botón (entonces entra en modo manual)
  • Pantalla LCD: Va a ser la parte visual de la interfaz de nuestro código dónde veremos los niveles de humedad, agua, temperatura y luz. Se enciende con el mando.
  • LEDs: Usadas para dar calor respecto a los valores del sensor de temperatura y para iluminar respecto a los valores del sensor de luminosidad.
  • Cables, resistencias, diodos, transistores, una pila de 5V.

Como podemos notar, ha desaparecido la idea de las LEDs que indican errores, el potenciómetro, la ventana y el servo, y el registro de desplazamiento de bits 74HC595.


APARIENCIA FINAL DEL PROYECTO



Explicación del funcionamiento, el cableado y el código:


CÓDIGO



REFLEXIÓN FINAL


Estamos contentos con los resultados obtenidos y con las lecciones aprendidas durante la creación de nuestro proyecto. Nos enfrentamos a desafíos que pusieron a prueba nuestras habilidades creativas y de resolución de problemas, lo que resultó en un valioso crecimiento. Hemos perfeccionado nuestras técnicas de programación, ampliado nuestro conocimiento del hardware y, lo más crucial, hemos desarrollado la capacidad para superar obstáculos.

A pesar de estos logros, reconocemos que hubiéramos preferido no tener que simplificar nuestro primer prototipo hasta llegar a la versión actual. Lamentablemente, esto fue necesario, probablemente debido a las limitaciones de las librerías de terceros que utilizamos o a las restricciones del Arduino Uno, que no podía admitir todas nuestras funcionalidades. 

Aunque nos satisface el resultado, nos queda el deseo de haber podido mantener más fielmente nuestra idea original sobre todo después del material que compramos precisamente para ello.


Esperamos que os haya parecido interesante nuestro proyecto

También te podría gustar...

1 respuesta

  1. maria del rosario dice:

    si, me pudieras proporcionar los valores de los diodos y los transistores

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *