Todas las noticias

Pastillero semanal interactivo con Arduino

Asignatura: Diseño de interacción.

Titulación: Grado Multimedia

Estudiante: Lorda Belso Pastor.

Consultor y profesor: Santiago Vilanova Angeles / Quelic Berga Carreras.

Introducción

La asignatura es eminentemente práctica y ofrece al alumno la capacidad de realizar sus propios proyectos interactivos basados en el lenguaje de programación Processing y el hardware libre Arduino. El proyecto final que planteaba era la realización de un “pequeño producto o sistema interactivo completo, coherente y con una funcionalidad definida”, aplicando los conocimientos adquiridos a lo largo del semestre.

En concreto se trataba de combinar en un proyecto de temática libre al menos dos de las técnicas de interacción estudiadas: teclado, ratón, Arduino, audio, visión artificial y comunicación.

La práctica realizada ha consistido en la creación de un “Pastillero semanal interactivo”. Este dispositivo pretende satisfacer una necesidad real de un enfermo crónico al que el cambio de medicación ha afectado a la memoria y a los procesos cotidianos. Con este sistema se evitan posibles errores en la organización semanal de la pauta farmacológica al tiempo que aumenta la sensación de independencia del usuario.

Aunque se trata de un prototipo bastante sencillo, es funcional y útil, ya que cumple suficientemente con el objetivo. El sistema se basa fundamentalmente en Arduino e incluye iluminación LED, texto y sonido, que responden, bien a la interacción del usuario, bien al código programado en la IDE de Arduino.

Prototipo del pastillero semanal interactivo
Prototipo del pastillero semanal interactivo

Básicamente, es una alarma que suena para avisar de cada toma de medicación, al tiempo que se muestra un mensaje en la pantalla LCD y se enciende el diodo LED indicando el compartimento correspondiente. Además, un mensaje de voz recuerda al usuario cómo tiene que organizar semanalmente la pauta farmacológica.

Existe un dispositivo similar que sirvió de base para conceptualizar este proyecto (http://duino4projects.com/the-pill-reminder-using-arduino/ ), pero que se decidió mantener al margen con el fin de conservar la autonomía y conocer los propios límites y capacidades a la hora de desarrollarlo.

A continuación se detallará el proceso de realización del proyecto, su funcionamiento y las soluciones dadas a los diversos problemas técnicos que han ido surgiendo.

Etapas y retos

El primer y gran reto fue iniciar el semestre con conocimientos de electrónica prácticamente nulos que me hicieron abordar la segunda prueba de evaluación con mucha inseguridad. Una inseguridad que disminuyó considerable y sorprendentemente al afrontar este proyecto. Aun así, las dudas iniciales eran imponentes:

  • ¿Cómo conectar los componentes previstos a una sola placa de Arduino UNO?
  • ¿Cómo conectar 14 leds que funcionen independientemente?
  • ¿Cómo conectar la pantalla LCD ahorrando pines?
  • ¿Cómo reproducir un mensaje de voz en Arduino?
  • ¿Qué comercio electrónico elegir para economizar tiempo de entrega y costes?

La primera tarea fue recabar información a través de Internet con el fin de saber exactamente las posibilidades que tenía para resolver la práctica. Por un lado, conseguir información sobre el modo y manera de ahorrar pines en Arduino para cada caso. Por otro, averiguar qué comercio electrónico con condiciones de venta y entrega óptimas tenía a la venta los componentes que requería el proyecto.

De aquí surgieron nuevos desafíos. Cuando se encontraban artículos o tutoriales que explicaban el cómo, o surgían otros elementos no previstos al inicio, o el comercio electrónico seleccionado no disponía del componente citado, sino de otro compatible. Esto obligaba a realizar más incursiones en la Red para ampliar la información y conocer con más detalle el nuevo componente.

Con estas primeras dudas resueltas y el listado de componentes definitivos, se procedió a la compra, sabiendo de antemano que se iban a necesitar soldaduras con estaño: un nuevo reto, ya que los componentes eran diminutos y la cercanía de los pines ponía a prueba la precisión… Con 52 años, vista cansada y muchos nervios, deseé haber ideado una mano robótica para soldar.

Distancia entre los pins y la soldadura
Distancia entre los pines y la soldadura

Ahora se trataba de aplicar la teoría de la asignatura y de adaptar los diferentes procedimientos explicados en la Red. En primer lugar, realizar el esquema del circuito con la ayuda de Fritzing, después, dividir el trabajo en bloques para realizar las pruebas de funcionamiento del circuito y de la programación, con el fin de ir descartando posibles errores en el montaje completo.

Por ejemplo, antes de su instalación definitiva, se probó el funcionamiento de los leds y la cantidad de luz que emitían los diodos con las resistencias elegidas. En etapas posteriores, también se iban realizando las comprobaciones pertinentes a medida que se añadían nuevos componentes e iba progresando el montaje del circuito.

Primera prueba con leds
Primera prueba con leds
Esquema del prototipo realizado en Fritzing
Esquema del prototipo realizado en Fritzing

De nuevo, otro reto más. Dos de los nuevos componentes no estaban en la biblioteca de Fritzing. La solución para el módulo de la pantalla se encontró descargando el archivo de http://fritzing.org/projects/arduino-i2c-lcd-display y la del módulo de voz adaptando uno de los componentes básicos de la biblioteca con la ayuda del software de Fritzing.

  • Componentes y materiales:
Arduino UNO R3 compatible CH340 y placa de pruebas
Arduino UNO R3 compatible CH340 y placa de pruebas
Módulo LCD LCM1602 IIC V1, para ahorrar pines conectándolo a través del bus I2C (I2C o IIC)
Módulo LCD LCM1602 IIC V1, para ahorrar pines conectándolo a través del bus I2C (I2C o IIC)
Multiplexor CD74HC4067 de 16 canales, para ahorrar pines conectando los leds.
Multiplexor CD74HC4067 de 16 canales, para ahorrar pines conectando los leds
Módulo ISD1820 grabador y reproductor de voz que incluye micrófono y altavoz.
Módulo ISD1820 grabador y reproductor de voz que incluye micrófono y altavoz
Zumbador incluido en el Starter Kit de Arduino y resistencia de 100Ω.
Zumbador incluido en el Starter Kit de Arduino y resistencia de 100Ω
2 pulsadores Omron B3F con sendas resistencias de 4.7 kΩ
2 pulsadores Omron B3F con sendas resistencias de 4.7 kΩ
14 leds y 18 resistencias de 560Ω (Una por cada led verde y dos por cada led amarillo correspondientes a los sábados y domingos, para matizar el brillo)
14 leds y 18 resistencias de 560Ω (Una por cada led verde y dos por cada led amarillo correspondientes a los sábados y domingos, para matizar el brillo)
Cables puente macho-macho, pines hembra-macho, soldador, estaño, pistola de silicona caliente y dos pastilleros semanales de plástico
Cables puente macho-macho, pines hembra-macho, soldador, estaño, pistola de silicona caliente y dos pastilleros semanales de plástico

Para finalizar, también se utilizaron cables reciclados de conexión telefónica y audio, además, de otras herramientas útiles: medidor de voltaje, pinzas, alicates y lupas.

  • Proceso de montaje en imágenes:

Una vez verificadas las primeras pruebas, se realizó una caja de madera con sus correspondientes orificios para la instalación de todos los componentes en su interior, convenientemente fijados y soldados. Para ello se partió de una plantilla realizada en Microsoft Visio Profesional, la parte trasera de la cual se enmascaró con carboncillo para trasladar el dibujo a la madera.

Plantilla y vista interior de la caja con los orificios practicados

A continuación se procedió al montaje por bloques con la correspondiente programación del código.

Trabajo con leds 1, soldaduras
Trabajo con leds 1, soldaduras
Trabajo con leds 2, conexión 1ª fila de leds a multiplexor
Trabajo con leds 2, conexión 1ª fila de leds a multiplexor
Trabajo con leds 3, conexiones del multiplexor a Arduino
Trabajo con leds 3, conexiones del multiplexor a Arduino
Trabajo con leds 4, conexión de la 2ª fila de leds
Trabajo con leds 4, conexión de la 2ª fila de leds

Con los leds funcionando perfectamente, se procedió a instalar y conectar el módulo de la pantalla de cristal líquido a través del bus I2C. Todo un ahorro de pines, ya que tan sólo necesita dos y, en Arduino UNO corresponden a los pines A4 y el A5 concretamente.

Conexión del módulo LCD
Conexión del módulo LCD

La conexión fue fácil, pero no lo fue averiguar por qué no funcionaba correctamente. Con cada pequeño avance asomaba un nuevo problema:

  1. Una vez subido el programa, la consola de Arduino mostraba un mensaje de error que impedía hacer pruebas.
  2. Se advirtió que se necesitaba realizar un escaneo para averiguar la dirección de conexión, pero el escáner no encontraba el dispositivo.
  3. Tras conseguir la dirección de conexión, se encendía la pantalla pero no aparecía texto.
  4. Ahora sí, aparecía texto, pero sólo la primera letra.

¿Problemas de incompatibilidad del hardware?, ¿o del software?, ¿de bibliotecas obsoletas incompatibles con nuevas versiones de Arduino?

Descartadas las conexiones y el código, finalmente, la solución fue descargar y usar la biblioteca de fdebrabander (https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library ).

Sinceramente, probé dos módulos distintos y, con la presión de la entrega de la práctica y el paso de horas y horas improductivas, cabe la posibilidad de que la primera de las bibliotecas probadas funcionase correctamente (http://www.prometec.net/bus-i2c/ ).

El módulo LCD, por fin en funcionamiento
El módulo LCD, por fin en funcionamiento
Conexión de los pulsadores
Conexión de los pulsadores

La dificultad de los pulsadores fue aún mayor que la del display, concretamente, el botón ‘OK’ que debía apagar el led de aviso correspondiente una vez tomada la medicación. Por una parte, había que decidir qué tipo de conexión elegir (digital o analógica, Pull Down o Pull Up), por otra, cómo programarlo para que cumpliera su objetivo, ya que ambas variables son interdependientes.

Puede que la presión y el cansancio empezaran a hacer mella, pero la falta de progresos obligó a realizar pruebas aisladas hasta comprobar que las conexiones y la programación funcionasen correctamente.

Pruebas aisladas para descartar posibles interferencias
Pruebas aisladas para descartar posibles interferencias

La solución final fue el uso de resistencias Pull Down y la detección de pulsaciones leyendo continuamente el estado de los botones a través del código. Código que, por otra parte, iba aumentando su complejidad y su extensión.

Vista anterior de los pulsadores en su ubicación definitiva
Vista anterior de los pulsadores en su ubicación definitiva

Solamente quedaba conectar el zumbador para realizar las pruebas del completo funcionamiento de la alarma.

Vistas anterior y posterior del zumbador
Vistas anterior y posterior del zumbador

El siguiente paso fue la instalación y programación del módulo de voz. También incluir un pequeño código para la grabación del mensaje y posterior comprobación controlando el dispositivo a través del puerto Serial.

Vista interior de la caja con el módulo de grabación/reproducción de voz
Vista interior de la caja con el módulo de grabación/reproducción de voz
Primer plano del módulo de voz (FT sin conexión)
Primer plano del módulo de voz (FT sin conexión)

Por falta de tiempo no se incluyó un reloj RTC (tiempo real) y las pruebas de funcionamiento se realizaron con el reloj interno de Arduino, menos preciso y con el inconveniente de su reinicio cada 50 días aproximadamente.

Prototipo definitivo (exterior e interior)
Prototipo definitivo (exterior e interior)

Ver vídeo del prototipo en funcionamiento (en catalán):
https://youtu.be/-Umz1CGI6xo

  • Herramientas y descargas:

Herramientas

IDE Arduino Es el entorno de desarrollo de Arduino y se puede descargar en la URL:

https://www.arduino.cc/en/Main/Software# 

Fritzing Se trata de un programa libre para la realización y diseño de circuitos eléctricos que se puede descargar en: http://fritzing.org/home/
Microsoft Visio Profesional Para la realización de la plantilla, aunque se puede utilizar cualquier otro software que permita trabajar con medidas.
Adobe Illustrator CS6 Se utilizó con la intención de crear nuevos componentes para Fritzing en SVG, pero la falta de tiempo impidió finalizarlo, acabando tan solo el icono.

Descargas

Esquema del prototipo Descarga del esquema del archivo
Código en formato Arduino Descarga del código del archivo

Conclusiones

En lo referente al proyecto, entre las diversas soluciones que se podrían haber dado para su ejecución, ésta ha sido la elegida en función del tiempo, de la capacidad y de la disponibilidad y coste asequible de materiales.

Se han resuelto de forma satisfactoria las dudas iniciales:

  • Se han conseguido conectar todos los componentes previstos a una sola placa de Arduino UNO.
  • Los 14 leds funcionan independientemente con tan solo cuatro pines digitales y uno analógico.
  • Se ha conectado la pantalla LCD con solo dos pines frente a los seis que requiere la conexión directa.
  • Se ha conseguido reproducir un mensaje de voz utilizando tres pines digitales.
Vista general y detalle del montaje del prototipo
Vista general y detalle del montaje del prototipo

El resultado es un dispositivo útil y funcional que no deja de ser un prototipo y que, evidentemente, se puede mejorar. De hecho, la intención es dotarlo de mayor autonomía incluyendo el reloj RTC y una alimentación externa de 5 v. Aumentar la interactividad añadiendo un módulo de reconocimiento de voz y una pantalla táctil. Además de extender su funcionalidad programando otras alarmas.

Como conclusión final y a pesar de la dificultad inicial, la asignatura ha resultado ser muy útil, divertida e interesante, ya que ha aportado conocimientos aplicables no sólo en el ámbito personal, sino también en el ámbito profesional abriendo todo un abanico de posibilidades.

Enlaces relacionados

Documentación

LCD:

LEDS:

Multiplexor:

Voz:

Varios:

Derechos de autor:

El dispositivo se comparte con la licencia de Creative Commons siguiente:


Licencia de Creative Commons

Pastillero interactivo de Lorda Belso está sujeto a una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.


Cita recomendada: BELSO, Lorda. Pastillero semanal interactivo con Arduino. Mosaic [en línea], junio 2017, no. 150. ISSN: 1696-3296. DOI: https://doi.org/10.7238/m.n150.1824.

Todas las noticias