Memoria Sistemas empotrados y de tiempo real: Grupo 7 21-22

Miembros del grupo

Javier Navarro Martinez

Juan Montes Cano

Cristian Pérez Corral

Juan Antonio Gordillo Gayo

El proyecto planteado es un huerto autónomo en el que la prioridad en el diseño fue asegurar la modularidad del proyecto para que este pudiera ser fácilmente ampliable mediante el uso de varias replicas de todo el módulo, y para que se pudiera transportar y desmontar parcialmente sin demasiada complicación. Su desarrollo llevó acabo en un par de meses y tuvo un coste total (sin contar herramientas ni el kit de arduino) de unos 80€.

ProductosCoste
Caja30€
raspberry pi28,79€
Tierra, alambre y maceta6.30€
bombilla, leds y socket bombilla7,25€
Sensor de humedad de tierra6,10€
TOTAL78.44

Debido a un problema del foro el siguiente Sway no se podia mostrarhttps://sway.office.com/dSw2Hdpf2YBFBK39, no obstante dejamos aquí todo el contenido del mismo.

Descripción del Proyecto  

Nuestro proyecto consiste en la realización de un huerto autónomo, es decir, una plantación que no requiere una atención muy alta sobre la misma, salvo el hecho de rellenar el depósito de agua para que se pueda producir el riego y el mantenimiento necesario de los sensores y demás elementos utilizados. Sin embargo, el resto de las acciones, como pueden ser el riego de las plantas o la necesidad de aplicar frío o calor para el control de la temperatura, se conseguirá todo de forma automática, gracias a la activación de los relés que usamos a partir de los datos recibidos por el Arduino desde los distintos sensores que tenemos en nuestro huerto. 

Diseño del Proyecto 

Con el fin de conseguir que nuestro ordenador central, encargado de controlar todos los dispositivos y también de hacerles llegar la corriente eléctrica, pueda ser usado en otros huertos en los cuales se usen los mismos sensores que tenemos aquí, hemos decidido separar el diseño en dos cajas. 

Por un lado, tenemos el huerto, donde podremos encontrar tanto la plantación correspondiente como los distintos sensores encargados de recopilar la información que necesitamos para el correcto cuidado de las plantas.  

Por otro lado, nos encontramos con otra caja en la que se encuentran alojados todos los componentes electrónicos, así como el lugar donde llevamos a cabo la mayor parte de las conexiones que son necesarias para alimentar todos los componentes de nuestro proyecto. 

Por último, como medio de comunicación entre ambas cajas, hemos decidido colocar fichas de conexión en ambas partes para establecer la conexión entre los sensores y los elementos que funcionan con corriente continua. Este no es el mejor sistema de conexión que hay, ya que no es precisamente cómodo para conectar y desconectar, pero es el que mejor se adecuaba a las limitaciones temporales y económicas que teníamos para desarrollar el proyecto. Una posible mejora en este aspecto, podría ser la inclusión de un segundo Arduino en la parte del huerto y dos módulos wifis, una para cada Arduino, de manera que la transmisión de datos se hiciera a través de este sistema o un sistema análogo que funcione por radiofrecuencia. Para la transmisión de corriente entre una caja y otra la solución podría ser usar conexiones tipo “plug-in”. Sin embargo, a pesar de ser un sistema un poco rudimentario sigue consiguiendo nuestro propósito de modularizar el proyecto y simplificarlo lo máximo posible. También cabe destacar que queremos tener un control total de la actividad del huerto, por lo que hemos añadido una pantalla LCD a nuestra caja de cómputo. 

e5755e6a-54da-48bc-97a6-56929b3da579
Esta imagen presenta el esquema eléctrico del diseño, pudiéndose apreciar el uso de un esquema eléctrico mixto donde las conexiones  5v del Arduino a los sensores/pantalla LCD asi como las conexiones a tierra se han omitido por claridad.

Problemas encontrados 

Una de las primeras ideas que se planteó en este proyecto fue el uso de un mando infrarrojo para la gestión local de los parámetros que controlan el comportamiento del huerto. Tras realizarse diversas pruebas con Tinkercad, se intentó llevar a la práctica la idea, pero no se logró que el detector infrarrojo funcionase de acuerdo a nuestros requisitos. Sin embargo, logramos suplir estas necesidades con creces con el control casi total del Arduino remotamente vía SSH y uso de scripts Python que hacían uso del puerto Serial del Arduino. 

Durante la etapa de montaje del proyecto, las mayores dificultades que se han encontrado han sido en su mayoría programáticas, como es el caso de la gestión del lector de temperatura (DHT11), el cual debido a que bloqueaba el sistema se decidió implementar mediante el uso de protothreading. Lo cual, al igual que en el caso del mando se pudo realizar durante la etapa de pruebas, pero a la hora de implementarlo encontramos diversos problemas con la importación de la librería TimedAction y RTOS por lo que finalmente se decidió gestionar las llamadas mediante variables temporales haciendo uso de millis().  

Por otro lado, la implementación de mostrar los datos en la pantalla no resultó ser tan fácil como se planteó en un principio, tuvimos problemas con la representación de floats y con la asignación de cursores para respetar el formato. Sin embargo, tras realizar pruebas logramos el resultado deseado. 

Uno de los mayores problemas que nos encontramos y que condicionaron absolutamente el diseño del proyecto fue la variedad de voltajes necesarios. Tuvimos que usar 12V, 5V y corriente alterna, esto nos obligó añadir un transformador a 12V y a usar relés para poder controlar estos voltajes desde el Arduino. 

También tuvimos problemas con la comunicación bidireccional entre Arduino y Raspberry, tuvimos que diseñar un protocolo para que ambos dispositivos pudiesen comunicarse sin ningún problema. 

Finalmente, a la hora de implementar el servidor SSH, y tras haber montado toda la estructura de la caja, nos dimos cuenta de que el cabezal que alimentaba a la Raspberry (que no era el mismo con el que testeamos fuera de la caja), no tenía suficiente potencia lo que no solo imposibilitaba el uso del servidor, sino que también inhabilitaba que el Arduino iniciase correctamente por estar alimentado por la Raspberry. 

Reparto de tareas y desarrollo de las mismas  

En muchos puntos del proyecto hemos decidido no hacer un reparto de tareas como tal, sino reunirnos todos para poder poner nuestras ideas en común y llegar así a una mejor solución. 

Primeramente, realizamos un diseño básico para la caja del huerto e hicimos una primera compra de los componentes que vimos necesario, entre los que se incluyen una caja, tierra, semillas de tomate, alambre y el tubo usado para regar, ya que sin estas cosas nos era imposible empezar a montar nada. Paralelamente íbamos organizando teóricamente la estructura del proyecto y anotando las posibles dificultades que tendríamos, así como los objetivos principales y las metas a corto plazo. 

Una vez claro estos puntos, nos pusimos con la parte importante del proyecto, la que consiste en juntar todos los componentes electrónicos con nuestro Arduino y realizar todas las comunicaciones y conexiones necesarias, esta parte es la que sin duda más tiempo nos ha llevado, ya que además ser compleja de ejecutar, también nos han aparecido diferentes problemas. 

Como esta parte era bastante más extensa y fácilmente divisible, decidimos que era mejor realizar un reparto de tareas y cuando lo tuviéramos todo listo por separado, juntarlo todo para comprobar su correcto funcionamiento. Decidimos hacerlo de la siguiente manera:  

  • Muestra de datos en la pantalla e investigación del control de la misma por infrarrojos. Protothreading. Juan Antonio Gordillo. 
  • Diseño del código de todos los sensores, actuadores y del montaje y funcionamiento del servidor SSH. Juan Montes y Cristián Pérez. 
  • Montaje de las conexiones internas de la caja y de la correcta gestión de la corriente alternar y la corriente continua. Javier Navarro. 

Luego de tener cada uno nuestra parte y tener todo probado y testeado en conjunto, pasamos finalmente al diseño de la caja exterior y la colocación de los componentes en la misma, de tal forma que encapsulamos todos los elementos posibles, dejando visibles el Arduino, Raspberry y relés, para que se pudiera ver a través de la tapa transparente cuando se activa y desactiva cada uno. 

El último paso fue volver a comprobar que todo funcionaba correctamente una vez que se quedó integrado en la caja contenedora y también, preparar los cables que se encuentran en el lado del huerto para evitar posibles cortocircuitos al entrar en contacto con el agua. También los acomodamos de forma que estuvieran los más ordenados posibles. 

Casos de Uso 

La gran modularidad y la capacidad de modificar las constantes que regulan el comportamiento del huerto, permiten que este se adapte (dentro de sus limitaciones) a cualquier cultivo que se le quiera introducir. Debido a que se busca que el cultivo mantenga unas condiciones constantes, los casos de usos se limitan a activar los diferentes elementos del huerto para que estos fuercen las condiciones que se le han solicitado.  

De esta forma, si la temperatura cayese por debajo de la temperatura mínima, el dispositivo encendería la bombilla principal (con una gran potencia para que genere calor), así como en el caso de que la temperatura se elevase por encima de la temperatura máxima, el dispositivo activará los dos ventiladores en los laterales del huerto para intentar disminuirla.  

En el caso de la luz, si los sensores de luz no detectan la suficiente luz los LEDs intentarán suplir esta necesidad de luz activándose. 

Para el riego tenemos un detector de humedad de la tierra, si éste no detecta suficiente humedad se activará la bomba que permitirá un riego por goteo 

En este sentido, el código del Arduino se ha limitado a una sucesión de lecturas de los diferentes sensores y de condicionales para tratar las situaciones en que las eventualidades del huerto se alejasen de lo establecido, así como de un código de escritura para la pantalla para mostrar los datos y la gestión del puerto Serial para la comunicación con la Raspberry y con ello con el servidor. 

El protocolo de comunicación entre Raspberry y Arduino consiste en dos scripts: 

  • osiris.py: El primer script de Raspberry enviará al Arduino una letra T, H o L, y el Arduino devolverá su valor actual de Temperatura, Humedad o Luz. 
  • osiris_actions.py: El segundo script permite a la Raspberry editar los valores máximos y mínimos de temperatura, humedad y luz, usando el formato ST<numero> para cambiar la temperatura máxima a dicho número, St<numero> para cambiar la temperatura mínima, Sl<numero> para cambiar el porcentaje de luz mínima, SH<numero> para cambiar el porcentaje de humedad en la tierra máximo. 

Además aquí dejamos un video en el que se puede contemplar el proyecto en físico y en el que mostramos como funciona y las diferentes situaciones en las que nuestro huerto activará sus diferentes elementos para mantener las condiciones adecuadas para que nuestros cultivos puedan crecer sin problemas.

Finalmente os dejamos un enlace al github del proyecto donde podreis encontrar todo el codigo necesario para que podais haceros vosotros mismos vuestro propio huerto:

https://github.com/OsirisGarden

Desarrollo en fotos

WhatsApp Image 2022-05-12 at 3.38.23 PM
WhatsApp Image 2022-05-12 at 3.38.23 PM(1)
WhatsApp Image 2022-05-12 at 3.38.24 PM
WhatsApp Image 2022-05-12 at 3.38.24 PM(1)
WhatsApp Image 2022-05-12 at 3.38.27 PM
WhatsApp Image 2022-05-12 at 3.38.26 PM(4)
WhatsApp Image 2022-05-12 at 3.38.26 PM(3)
WhatsApp Image 2022-05-12 at 3.38.26 PM(2)
WhatsApp Image 2022-05-12 at 3.38.26 PM
WhatsApp Image 2022-05-12 at 3.38.25 PM(3)
WhatsApp Image 2022-05-12 at 3.38.25 PM(2)
WhatsApp Image 2022-05-12 at 3.38.25 PM(1)
WhatsApp Image 2022-05-12 at 3.38.25 PM

También te podría gustar...

Deja una respuesta

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