Robot para el cuidado de plantas
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
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.
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.
Paso 4
Atornillar la cara removida en el caso 1 a la varilla, de modo que esta sea la tapa.
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.
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.
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.
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.
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.
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.
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.
Ahora solo queda conectar los sensores y la placa y darle vida clickeando la función start.