Máquina expendedora de cápsulas de café

SISTEMAS EMPOTRADOS Y DE TIEMPO REAL

 

Celia Rojo Frutos

Manuel Perlado Maldonado

Javier Moreno de Andrés

INTRODUCCIÓN

En esta memoria vamos a relatar más en profundidad el procedimiento que hemos seguido a la hora de crear nuestra máquina dispensadora de cápsulas de café, a su vez proporcionaremos algunas imágenes y vídeos de los primeros prototipos para mostrar el proceso lineal de la misma.

OBJETIVOS

El objetivo principal de este proyecto era la creación de una máquina dispensadora de cápsulas de café que fuese funcional. Otros de los objetivos de este proyecto fueron::

  •  Diseñar y construir una máquina de bajo costo, eficiente y funcional para dispensar diferentes tipos de cápsulas de café.
  • Desarrollar un sistema de control basado en Arduino para gestionar el proceso de caída de las cápsulas de café.
  •  Explorar posibles mejoras y expansiones del dispositivo, como la incorporación de conectividad inalámbrica (Wi-Fi, Bluetooth) para control remoto o la integración con aplicaciones móviles y asistentes virtuales.
  • Diseñar un sistema de almacenamiento y organización de cápsulas que permita una fácil recarga y mantenimiento del dispensador.
  • Implementar el máximo número de elementos posibles en nuestra máquina para hacerla todavía mucho más funcional (teniendo en cuenta las limitaciones que nos da Arduino UNO)

MATERIALES

La mayoría de productos utilizados en este proyecto fueron proporcionados por la universidad, sin embargo hubo otros cuantos que tuvimos que comprar para generar nuestra máquina.

Listado de elementos proporcionados por la universidad

  • Placa Protoboard
  • Placa base Arduino UNO
  • 7 resistencias de 330 ohmios
  • Pantalla LED de 7 segmentos de 1 dígito

Listado de elementos que tuvimos que comprar

  • 4 servo motores de 90º
  • Teclado matricial 1×4 de membrana
  • Cables hembra-macho

PROCESO

La primera decisión que tomamos en cuanto al proyecto fue los días y las horas que le íbamos a dedicar a la semana, le dedicaríamos entre 3 y 4 horas a la semana desde que se nos presentó la idea de hacer el proyecto.

Para elegir la idea fuimos mirando el blog y los proyectos de años anteriores, empezamos con la idea de hacer un coche teledirigido, lo descartamos debido a que preguntamos al profesor y se nos negó esa idea, continuamos con generar un brazo mecánico, pero al final optamos por hacer algo sencillo que aunque ya se había realizado otros años, le queríamos dar nuestra idea y nuestro toque personal al proyecto.

Una vez decidido el proyecto empezamos a pensar que elementos íbamos a utilizar, sin tener mucho en cuenta las limitaciones de Arduino ya que era la primera vez que íbamos a programar en ese entorno. Determinamos que la máquina iba a tener al principio una pantalla LCD, un altavoz en el que una voz dijese la opción seleccionada (esto último se decidió para ser lo más inclusivos posible), un teclado para seleccionar la opción correspondiente, una pantalla LED de 1 dígito, 4 servos para tener 4 caídas de cápsulas y por último un lector de NFC para que nos diese acceso a poder utilizar nuestra máquina.

Después determinamos cómo haríamos la estructura para que fuese funcional, pensamos en hacer una rueda donde hubiese un hueco con la silueta de la cápsula, esa rueda giraría lo suficiente para que bajase la cápsula y no cayese la de arriba. Al final decidimos de utilizar una especie de tope en forma de L para que hiciese la misma función que la rueda

Una vez establecida la idea de realizar esta máquina, compramos los servos que íbamos a necesitar y comprobamos uno a uno que funcionase. Después pusimos los 4 servos a la vez y por último, ya que todavía no habíamos comprado el teclado utilizamos 4 botones conectados a cada uno de los servos para comprobar la funcionalidad de los mismos.

Los próximos días intentamos encender la pantalla LCD que además de usar muchos puertos, no conseguimos la manera de que la pantalla imprimiese cualquier cosa, por lo que decidimos descartar esta idea por completo. De la misma manera que decidimos descartar el lector NFC y el altavoz, ya que calculamos los puertos que íbamos a necesitar y no nos daba para utilizar todos los elementos.

Lo siguiente fue realizar una prototipo de lo que iba a ser la máquina para probar la funcionalidad de la idea que habíamos tenido con las L de madera. Conectamos un servo e hicimos la prueba, de tal manera que el prototipo quedó:

  1. este fue el prototipo principal, bastante parecido al final, en esta imagen podemos observar la colocación de las cápsulas antes de caer
  1. Aquí observamos como el servo ha girado los 90 grados especificados en el código y la cápsula cae al suelo
  1. La cápsula que estaba primera ya ha caído y la que estaba justo encima sigue en su lugar y no se ha caído
  1. Al volver a girar el servo cae la siguiente cápsula

Una vez comprobado el prototipo y visto que tenía sentido y funcionaba, decidimos buscar algún teclado por internet, a estas alturas quedaba la mitad de tiempo para presentarlo, así que tuvimos que tener en cuenta el tiempo que tardase en llegarnos el teclado y el dinero que queríamos gastarnos. Pedimos un teclado matricial 1×4, era justo lo que necesitábamos.          

Mientras esperábamos a que llegase el teclado fuimos a probar la pantalla LED, al probarlo nos dimos cuenta que las combinaciones que habíamos encontrado en internet para que se iluminasen los segmentos correspondientes no funcionaban. Tuvimos que gastar bastante tiempo en encontrar las combinaciones para conseguir los números que queríamos.

Cuando nos llegó el teclado, conectamos la pantalla LED con el teclado, de tal manera de que cuando pulsamos el botón 1, se iluminase un 1 en la pantalla LED y así sucesivamente con los números hasta el 4. No conectamos los servos ese día ya que no los teníamos allí. Al pensar en conectar los servos nos dimos cuenta que necesitábamos más puertos digitales, investigando en internet nos dimos cuenta de que podíamos usar los puertos analógicos como puertos digitales.

La semana siguiente conseguimos montar el circuito entero, conectamos los servo, la pantalla y el teclado a la vez y nos funcionó perfectamente. Tuvimos varios problemas ya que Arduino es frágil y los cables se desconectaban o no se metían bien y tardábamos un rato en encontrar el problema.

Una vez hecho todo el circuito nos faltaba realizar el montaje del mismo, basándonos en el prototipo que habíamos realizado hacía unas semanas. Nos resultó bastante fácil el montaje ya que teníamos muy claro cómo iba a ser.

Cabe decir que el único problema que tuvimos con el montaje fue el hecho de que nos habíamos contado con la altura de los servos, así que hubo que elevar las caídas con trozos de cartón para que las cápsulas estuviesen a la altura de la L y no se colaran entre medias.

SOFTWARE

Las primeras dos líneas de código son para incluir las dos librerías necesarias para el código. La primera la usaremos para controlar los servomotores y la segunda para el keypad (el teclado 1×4).

Ahora pasamos a la declaración de variables. Creamos 4 variables, una para cada uno de los servomotores y la variable ángulo que usaremos para mover los servomotores.

Continuamos estableciendo 7 constantes de la A a la G en las que introduciremos los valores del 2 al 8 respectivamente que corresponden con los pines digitales del visualizador de 7 segmentos. Declaramos la variable N y creamos un array SEGMENTOS de N tamaño, en este caso 7 en el que pondremos las constantes anteriormente mencionadas.

Ahora vamos a crear un array llamado patrones de tamaño 4 ya que solo necesitaremos mostrar hasta ese número, en el que guardaremos el comportamiento del visualizador de 7 segmentos en función del número que necesitemos mostrar. En el caso de que necesitemos mostrar el número 1 entrará en patrones[0] y hará lo que hayamos definido. Si el número que representa el segmento está a 1 significa que ese segmento se iluminará y si está a 0 se quedará apagado.

Ahora pasamos al teclado numérico 1×4. Para definir sus conexiones, hemos creado una matriz 1×4 en la que guardaremos los propios números del 1 al 4, después definimos los pines correspondientes a la fila y a las 4 columnas y creamos el objeto keypad con todo lo anteriormente mencionado.

Ahora vamos a comenzar con la parte de inicialización o setup() del código. Lo primero que hacemos es inicializar los 7 segmentos del visualizador y posteriormente asignamos los pines a los 4 servomotores. También inicializamos el monitor serie.

Ahora vamos con la última parte del código, el cuerpo o loop(). Lo primero que hacemos es leer del teclado el botón que hayamos pulsado del 1 al 4. En el caso de que ese número sea 1 entraremos por el if y definiremos la variable “numero” con un 0, que será la posición del array de patrones a mostrar por el visualizador y que se mostrará gracias al for. Como he dicho antes, en la posición 0 de ese array mostrará el número 1 que es el número que se ha pulsado en el keypad. Después definimos el ángulo al que queremos que se mueva el servomotor para poder dejar caer la cápsula de café, esperamos un poco para que le dé tiempo a caer y después volvemos a poner todo en la posición inicial en la que se encontraba.

Después de esto, el resto del código consta de 3 ifs más, iguales al anterior, con unas pequeñas modificaciones. El número que leeríamos, por el que entraríamos a los otros ifs, y el que se mostraría en el visualizador sería o el 2, o el 3, o el 4.

Este sería el código para cuando se pulsa el botón número 2.

Este sería el código para cuando se pulsa el botón 3.

Este sería el código para cuando se pulsa el botón 4.

HARDWARE

Para este proyecto hemos usado 4 servomotores, el visualizador de 7 segmentos y un teclado 4 x 1 teclas. Debido a este número de componentes, hemos tenido que hacer uso de los puertos analógicos tratándolos como si fueran puertos digitales.

Los 4 servomotores que son los encargados de dejar caer las cápsulas, los cuales tienen 3 puertos (datos, voltaje y tierra), están conectados a los puertos analógicos sus cables de datos y los cables de voltaje y tierra van conectados a la placa protoboard.

La placa protoboard tiene conectado en el carril del positivo y negativo el cable de alimentación (5V) y el cable tierra (GND) los cuales vienen desde la placa de Arduino. Esto se decidió hacer así para poder simplificar el montaje y evitar tener mayores problemas con la organización de cables debido a las limitaciones de la placa base Arduino UNO, la cual hemos podido comprobar que ha sido un factor limitante importante a la hora del montaje.

El visor de 7 segmentos tiene 10 conexiones, de las cuales nosotros solo usamos 8 debido a que descartamos usar el controlador del “.” dado que únicamente queremos representar números enteros del 1 al 4, las cuales van conectadas a la placa protoboard donde se encuentran unas resistencias de 330 ohmios para poder evitar daños al componente. Todos los puertos, van conectados posteriormente a los puertos digitales de la placa Arduino UNO donde les daremos las órdenes de encender los segmentos correspondientes mediante el software desarrollado.

El último componente relativo a la parte hardware es el teclado de 4 teclas, el cual tiene 5 conexiones de las cuales 4 van directamente conectadas a los puertos digitales y la restante va conectada a la placa protoboard al carril negativo (tierra o GND).

Funcionamiento y casos de uso

Para crear el prototipo final del proyecto decidimos usar un trozo de madera rectangular, en donde con otros cachos de madera íbamos a generar esas caídas necesarias para la máquina.

Cómo la altura del servo junto con la L pegada a él sobrepasaba la altura de las cápsulas, decidimos pegar varios niveles de cartón de tal manera que la caída quedaba elevada lo suficiente como para que hiciese tope con la L y no se cayesen.

Para cerrar la máquina y hacer tope con las cápsulas para que no cayesen hacia delante ni pudiesen salir de las caídas, pegamos un trozo de metacrilato con la medida necesaria, aun así, la máquina generó algún problema y hubo que elevar un poco más las caídas de la misma manera que se comenta en el párrafo anterior.

Decidimos que todo el circuito, la placa base y la protoboard iría detrás de la máquina, por lo que fue necesario hacer unos pequeños agujeros debajo de cada servo para que entrasen justamente los cables y se pudiesen conectar perfectamente.

Por otro lado, en el lado derecho de la máquina pusimos el teclado y la pantalla LED para que fuese accesible y de esta manera no se viesen los cables.

Por último creamos dos rampas en diagonal para generar la caída de las cápsulas y que al usuario de fuese sencillo recogerlas

Cómo casos de uso tenemos:

  1. La introducción de cápsulas de café: al introducir las cápsulas de café por la correspondiente caída, al pulsar el botón del teclado, se nos iluminará la pantalla LED con el número que hayamos pulsado y la cápsula caerá por la rampa
  1. Introducir la cápsula de café dada la vuelta: de la misma forma que el primer caso de uso, al introducir la cápsula dada la vuelta, tiene el mismo funcionamiento que el primer caso de uso
  1. Máximo número de cápsulas en una caída: comprobamos que el máximo número que entran en una misma caída son 9. El servo aguanta el peso de las cápsulas y funciona igual que en los casos anteriores.

PROBLEMAS Y SOLUCIONES

Hemos ido teniendo muchos problemas a lo largo de los 3 meses de trabajo que nos ha llevado la construcción de nuestro proyecto, las primeras semanas no nos decidíamos sobre qué proyecto hacer hasta que al final nos decantamos por este. En la primera lluvia de ideas que hicimos para organizarnos y ver cómo íbamos a enfrentarnos al proyecto, se nos apareció el primer problema. Cómo podíamos hacer para que cuando cayese una cápsula, no cayesen más y se quedasen esperando su turno.

Tras pensar varias cosas, se nos ocurrió que lo que dejaba pasar las cápsulas tuviese forma de L para que así la pata superior de la L detuviera la cápsula superior dejando caer a su vez la que tenía que caer. Sorprendentemente llevamos a cabo nuestra idea de manera un poco cutre para probar que funcionase y funcionó correctamente así que problema solucionado.

Más tarde, para meterle más complejidad al código, decidimos poner el visualizador de 7 segmentos que nos costó bastante averiguar cómo funcionaba y conectarlo a la vez a los servomotores y al teclado, pero también conseguimos solucionarlo. Tuvimos muchos problemas con los cables y algunos servomotores que dejaban de funcionar y no sabíamos el por qué o que se soltaban y no nos dábamos cuenta y ya la teníamos liada de nuevo. Pero tras mucho pelearnos con eso, al final conseguimos que funcionase todo a la perfección.

Tuvimos que comprar varios materiales que nos faltaban y que tardaban en llegar así que hubo días que tuvimos que reinventarnos usando leds como si fueran los servomotores para ir avanzando e ir comprobando que todo funcionaba a la perfección. Ahora venía lo difícil, llevar todo el circuito que funcionaba e integrarlo en la propia máquina expendedora. Seguimos teniendo problemas con cables que se desconectaban o alguna resistencia que no estaba lo suficientemente bien colocada y no se encendía el segmento que tocaba del visualizador o no giraba algún servo cuando tenía que hacerlo y cosas así. Una vez todo estaba bien montado, con el cristal pegado y todo perfecto, faltaba probar que funcionase con las cápsulas.

Tuvimos que hacer los carriles de caída de las cápsulas más altos para que fueran cayendo pegados al cristal ya que a la hora de tocar el servo, los que venían detrás se amontonaban y después caían 2 a la vez y varios problemas más.

Elevamos un poco más los carriles para que fuesen del tamaño de las cápsulas e iba perfecto. Salvo una cosa. Había veces que del propio peso de la cápsula al caer sobre el servo, este se soltaba y había que colocarlo de nuevo, todo esto con el cristal pegado. Con esfuerzo al final logramos volver a colocarlo en su sitio justo a tiempo y listo para la presentación en la que quedó una demostración perfecta. Todo salió como queríamos al final.

POSIBLES MEJORAS

Durante la realización del proyecto, nos enfrentamos a varias limitaciones en cuanto al tiempo disponible, las capacidades de la placa base y nuestros conocimientos técnicos, lo que nos impidió implementar ciertas funcionalidades que habíamos planeado.

Una de las funcionalidades que no pudimos implementar fue el uso de cuatro sensores en los carriles de cápsulas de café, para detectar cuándo se agotaba el suministro de un sabor específico. Para ello, hubiéramos utilizado sensores de presencia de carga de celda, los cuales son muy precisos y capaces de detectar incluso las cápsulas más ligeras. Creemos que esta mejora sería muy beneficiosa para la máquina, ya que aumentaría su versatilidad y facilidad de uso.

Además, nos hubiera gustado implementar la vinculación de la máquina a Alexa o Google Home para poder controlarla mediante asistentes de voz. Sin embargo, esta mejora no fue viable debido al costo del módulo Arduino Wifi necesario, que rondaba los 60 dólares. Aunque no pudimos implementar esta funcionalidad en este proyecto, seguimos considerándola una opción interesante para futuros desarrollos.

REPARTO DE TAREAS

Durante la realización del proyecto, cada integrante del equipo tuvo una tarea específica. Javier se encargó del código, Manuel del hardware y Celia del montaje. Aunque cada uno tuvo una función importante, se notó que Javier dedicó más tiempo al código, Manuel al hardware y Celia al montaje. Gracias a la dedicación y habilidad de cada uno, el proyecto se completó con éxito y funcionó de manera óptima. La colaboración en equipo permitió una buena finalización del proyecto y una oportunidad para que cada integrante aprendiera y desarrollara sus habilidades.

CONCLUSIONES

Javier

Me ha parecido una práctica muy divertida ya que ha sido la única asignatura de la carrera en la que hemos hecho un proyecto físico. He aprendido mucho de arduino y seguramente ponga en práctica estos nuevos conocimientos en un futuro.

Manuel

La realización de este proyecto ha resultado ser bastante interesante, especialmente porque durante nuestra formación académica nos enfocamos principalmente en la parte intangible de la informática. Es gratificante descubrir que, gracias al aprendizaje adquirido, podemos crear cosas tangibles, útiles y aplicables en la vida cotidiana. Es importante mencionar que hemos desarrollado el proyecto de manera gradual, lo que nos ha permitido comprender con claridad cada una de las áreas involucradas, y creo que esto marca la diferencia. En lo personal, considero que esta ha sido una de las prácticas que más he disfrutado, además de brindarnos valiosos conocimientos sobre Arduino, los cuales espero poder aplicar en diversos proyectos futuros.

Celia

Esta práctica me ha resultado bastante interesante ya que hemos aprendido a aplicar los conceptos a cualquier cosa de la vida real generando proyectos bastante interesantes, tanto el nuestro como los de nuestros compañeros. Considero que ha sido una de las mejores prácticas realizadas en la carrera ya que hemos visto la posibilidad de generar máquinas funcionales para el día a día. A su vez hemos aprendido el trabajo que supone generar un proyecto grande.

A continuación, un video explicativo:

https://youtu.be/iZ0SdKQAUmg

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 *