Robot para el cuidado de plantas

De Proyecto Butiá
Saltar a: navegación, buscar

Robot para el cuidado de plantas.jpg

Introducción

La idea de este proyecto es crear una estructura en la cual se puede colocar tu planta (en una maceta) la cual recibirá dos cuidados centrales del proyecto. De estas dos funciones se encarga el robot Butiá. La primer función de estas es un sistema de riego automático en el cual el robot toma agua de un recipiente, y con una bomba de agua la envía a través de una manguera para regar la planta. Mientras tanto, la segunda función es un techo automático el cual se encarga de levantarse por el día, permitiendo la llegada de luz solar a nuestra planta, y bajando por la noche de modo que proteja a la planta de las heladas.


Motivaciones

Esta idea surgió de ver a gente de mi entorno con problemas como olvidar regar su plata, o entrarla antes de la noche cuando cae la helada. Pensé que era una buena idea para una problemática de este estilo y además se puede considerar una solución para otras problemáticas. Un ejemplo de esto es una persona cuyo horario de trabajo es extenso durante el día y no pasa mucho tiempo en su hogar por lo que la automatización de los cuidados de su planta le puede venir muy bien. También para gente que se va de vacaciones y no tiene nadie quien le cuide las plantas durante ese tiempo. A su vez, me pareció interesante a modo de proyecto educativo ya que no requiere de mucho conocimiento previo en la forma en que se programa, por lo tanto es una buena forma de aprender a la vez que se crea y una forma de aplicar la programación del robot a un tema de la vida real. En conclusión, me gustó como idea para hacer mi primer proyecto ya que es muy diferente a lo que han sido mis experiencias anteriores con robots y es un planteamiento interesante de resolver.

Materiales

  • Placa USB4Butia
  • Computadora con Linux (o una máquina virtual de Linux) y el programa TurtleBots instalado
  • Shield
  • Tornillos y tuercas (vienen incluidos en el kit Butiá)
  • Un motor
  • Una batería
  • Un sensor de grises
  • Un botón
  • Un actuador genérico con módulo relé
  • Pack de 4 baterías
  • Una caja de plástico
  • Una varilla hueca (con largo igual o mayor al ancho de la caja)
  • Una bomba de agua pequeña
  • Una manguera (que sirva para la bomba)
  • Recipiente con agua



Tutorial

Estructura

Paso 1

Tomar la caja de plástico y recortarle una de las caras paredes chicas

RobCuidadoPlantasStep1.jpg

Paso 2

Recortar unos centímetros de la base de la caja (11 cm en este caso, a partir del lado recortado). Luego, parar la caja e incrustar el motor en la parte de arriba de la cara izquierda (en este caso, se incrustó a 1cm de alto y 3cm de ancho de la esquina). Después, atornillarlo para que quede bien asegurado.

RobCuidadoPlantasStep2-1.jpg RobCuidadoPlantasStep2-2.jpg


Paso 3

Incrustar el motor en la varilla de modo que atraviese todo el ancho de la caja,y del otro lado, poner un tornillo desde afuera que conecte con la varilla. Esto permitirá que la varilla gire con el motor, y del otro lado se asegure en la pared y pueda girar. Se puede asegurar en el motor con cinta.

Step3.jpg

Paso 4

Atornillar la cara removida en el caso 1 a la varilla, de modo que esta sea la tapa.

RobCuidadoPlantasStep4.jpg

Paso 5

Asegurar la placa y la batería del lado del motor. En este caso lo atornillé con los tornillos y tuercas que vienen con el kit. También agregar al lado el sensor de grises.

RobCuidadoPlantasStep5.jpg

Paso 6

Conectar el actuador con módulo relé a la bomba de agua y darle energía con el pack de 4 pilas. Para este paso es recomendable recibir ayuda de alguien que sepa manejar circuitería, en mi caso fue el docente quien me brindó asistencia para conectar las cosas. Adjuntarlo al proyecto, debajo de la placa. Conectar la manguera a la bomba.

RobCuidadoPlantasStep5-1.jpg RobCuidadoPlantasStep5-2.jpg

Paso 7

Hacer un agujero en la parte de abajo de la caja, por el cual pase la manguera, hacer que "trepe" la pared hasta un poco antes de la varilla y asegurarla. Luego extenderla horizontalmente y hacer un agujero del otro lado en donde meterla para que quede fija. Luego de esto, se le tapa la salida a la manguera, y se hacen agujeros en la parte que quede mirando para abajo, de este modo el agua caerá en forma de lluvia.

RobCuidadoPlantasStep7-1.jpg RobCuidadoPlantasStep7-2.jpg

Con esto estaría finalizada la estructura del robot.

Código

Primero utilizaremos esta parte de la paleta de TurtleBots en la cual podemos crear funciones y variables, las cuales nos facilitarán el manejo del programa.

PaletaFunciones.png

Usando el bloque "action" se puede crear una función, agregarle bloques y darle un nombre, para luego poder invocar esa porción de bloques solo con llamar el nombre de la función. Con el bloque de "store in" podemos asignarle un nombre a la variable en el parámetro "box" y asignarle un valor en el parámetro "value"

Subir y bajar techo

Estas dos funciones son análogas. En la función subir techo lo que hacemos es, inicializar la velocidad del motor en 300, y hacer que se mueva hacia atrás, de este modo este se moverá en dirección a abrir la tapa. La función espera un segundo y detiene al motor. Luego de esto, se asigna a una variable llamada techoBajo, el valor 0, lo cual nos indica que el techo está alto. Para la función de bajar el techo se cambia la función de que se mueva hacia atrás por la función de que se mueva hacia adelante, de modo que baje el techo, y se almacena al finalizar el movimiento, el valor 1 en la variable de techoBajo.

BajarTecho.jpg SubirTecho.jpg

Regar

El procedimiento de esta función es muy simple. Activamos el actuador del butiá, que representa la bomba de agua, esperamos 4 segundos (o el tiempo que se quiera que dure el regado) y luego la desactivamos. En este caso el actuador se activa en 0 por lo tanto se empieza con la asignación del valor 0 y luego se asigna el valor 1.

Regar.png

Ahora, es momento de crear la función principal. Dentro del bloque de start se adjunta una inicialización en 1 del actuador, esto es porque al iniciar en 0, este inicia prendido, por lo comentado anteriormente. También inicializamos el techo bajo en 1. Luego agregamos un bloque forever, este crea un loop infinito con las cosas que vayamos a agregar dentro. Utilizamos el boque de if, then, else. En el primer if, colocamos un bloque de and, en el primer argumento del and ponemos un bloque de igual, que tome el valor de la variable "techoBajo" y el 1. El segundo argumento llevará un comparador < para comparar si el valor tomado por el sensor de grises es menor a 39000. Este número se puede testear porque a veces puede cambiar dependiendo del sensor los valores tomados por lo tanto es mejor si prueban los valores prendiendo y apagando la luz (esto pueden verlo con un print->gray Butiá). Por lo tanto, este bloque de if evalúa si el techo está bajo y además la luz es menor al valor 39000, y en caso de que sea cierto, llama a la función de subir techo en el then. En la parte del else, agregamos un nuevo bloque de if then, con una operación lógica similar a la de recién. Los cambios serían el comparador por uno de >, y en el bloque de igual la comparación del valor de la caja a 0. Esto hará que si el techo está alto y la luz baja de 39000, se llamará a la función de bajar techo. Por último, saliendo de este if, then, else, colocamos un nuevo if then. Como condición agregamos un bloque de igual, y los argumentos botón Butiá, y el valor 1. En la parte del then invocamos a la función regar. Entonces en este bloque tenemos que si se aprieta el botón, se activa el regado.

ProgramaRiegoYTechoCompleto.png

Ahora solo queda conectar los sensores y la placa y darle vida clickeando la función start.

Cambios a futuro

La automatización es algo importante para cualquier cosa relacionada a la robótica por lo tanto una buena mejora a futuro sería automatizar el momento de riego. Para esto se podría utilizar la librería de Python "datatime" y crear un bloque de Python dentro de TurtleBots. Otra posible mejora sería cambiar la condición de riego por un sensor de humedad que detecte cuando sea necesario el regado. Para finalizar, el cambio del sensor de grises por uno de luz, ya que esto daría una mayor precisión a las variables de luz obtenidas.