Aplicación gráfica del manejo de arduino

Dada la popularidad de las plataformas de prototipado como arduino que permiten la comunicación mediante la conexión USB, se hace particularmente importante poder visualizar los datos provenientes de sensores muy populares en kits básicos, como lo son los sensores de tipo resistivos y además es necesario probar, de manera sencilla, actuadores pudiendo abarcar todo su rango de trabajo.

El problema

El problema consiste entonces en lograr visualizar los datos provenientes del arduino y enviar datos a él para interactuar con los actuadores, así como la necesidad de tener una interfaz en la cual el usuario pueda interactuar con los sensores y actuadores. Además, se plantea que los sensores y actuadores se conecten al computador a través de una plataforma la cual puede pertenecer a la familia Arduino, placas basadas en el ESP8266 o las basadas en el STM32.

Es decir, que este sistema interactúa tanto con un usuario como con los sensores y actuadores conectados a la plataforma. Para acotar el proceso de diseño, se considera que los sensores conectados al arduino son del tipo resistivos, es decir que estos son alimentados por una fuente y entregan un voltaje proporcional a la variable a medir, luego el arduino se encarga de digitalizar esta señal y enviar  dicha información (en forma de cadena de caracteres) a través de comunicación serial con el computador, donde el programa se encarga de procesar los datos y mostrarlos al usuario.  Por otro lado, el usuario podrá interactuar con la interfaz gráfica del programa la cual utilizará los datos establecidos por el usuario para enviar datos (strings) al arduino, el cual debe responder enviando diferentes señales PWM a los actuadores.

A continuación se muestran ejemplos de sensores a utilizar como la fotoresistencia, un sensor de humedad y un sensor de fuerza:

Fotoresistencia Sensor humedad Sensor fuerza

Y los actuadores que se desean implementar son motores DC, servo motores y LEDs:

Motor DC Servo motor LED

Algunos casos de uso

Pruebas de sensores resistivos

Al comprar sensores de tipo resistivos se espera poder probar dicho sensor y graficar los datos provenientes de las lecturas que este mide. Entonces, se conecta un sensor resistivo de luminosidad o LDR y se conecta al arduino y se varía la luminosidad del ambiente alrededor del sensor y se observa la variación en el gráfico.

Pruebas de servomotor

Al conectar un servomotor se espera poder observar el rango completo de movimiento de este y esto se logra moviendo el dial en la aplicación al elegir como actúa el "servo".

Pruebas de LED

Al conectar un led al Arduino se espera ver la intensidad de la luz producida por éste, permitiéndole al usuario observar como es la luz del LED que está probando, a la vez que varía y ajusta la intensidad de esta.

Diagrama de clases

Diagramas de casos de uso

Diagramas de Secuencia de la Señal de Actuador

Pruebas

Antes de realizar las pruebas se estableció la comunicación serial entre la plataforma arduino y el programa. El programa permite configurar los parámetros de la comunicación a través de la pestaña de configuración serial:

Luego de configurar y seleccionar Conectar en la pantalla principal entonces se mostrará un mensaje en pantalla indicando si la conexión fue exitosa o no.

Pruebas de sensores resistivos

Para esta prueba se configuró el programa para utilizar un sensor de luz, esto se hace seleccionando en el menú de Sensores la opción Config. Sensor Análogo, lo cual abre la pestaña de configuración:

Luego se selecciona la opción Sensor en la pantalla principal, esto abre la pestaña de sensor del programa y muestra el valor medido junto a un gráfico con los datos almacenados:

Prueba servo motor

Para esta prueba se configuró el programa para utilizar como actuador un LED, para esto se seleccionó la opción Config. actuador análogo y se desplegó la ventana de configuración, donde se seleccionó la opción Servo:

Luego se seleccionó la opción Actuador en el menú principal, lo cual desplegó la pestaña donde el usuario mueve una barra deslizable, el programa toma esta información y la envía al arduino para que éste ajuste el ciclo de trabajo de la PWM que va al servo motor.

Como resultado el servo motor se mueve según el ángulo ingresado en el programa.

El código del programa se encuentra aqui