Desarrollo de un sistema de transmisión (Emisor/Receptor) con módulos Bluetooth

Quesada Aguilera, Pablo Antonio (2016). Desarrollo de un sistema de transmisión (Emisor/Receptor) con módulos Bluetooth. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. Industriales (UPM).

Descripción

Título: Desarrollo de un sistema de transmisión (Emisor/Receptor) con módulos Bluetooth
Autor/es:
  • Quesada Aguilera, Pablo Antonio
Director/es:
  • Moreno González, Félix Antonio
Tipo de Documento: Proyecto Fin de Carrera/Grado
Grado: Grado en Ingeniería en Tecnologías Industriales
Fecha: Septiembre 2016
Materias:
Palabras Clave Informales: Acelerómetro, giróscopo, control, comunicación, Bluetooth, I2C, Arduino, Android.
Escuela: E.T.S.I. Industriales (UPM)
Departamento: Ingeniería Electrónica
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (1MB) | Vista Previa

Resumen

En este Trabajo de Fin de Grado se pone en práctica el envío de datos obtenidos en acelerómetros desde un Arduino a un dispositivo Android, mediante la conexión inalámbrica Bluetooth. Su objetivo es evaluar esta comunicación como posible mecanismo de transmisión de información a alta frecuencia y la determinación del proceso de ejecución más efectivo. Se trata de una etapa base a un proyecto de mayor envergadura, que llega a conclusiones más interesantes que la únicamente obtención de aceleraciones. El uso de acelerómetros es debido a la propuesta de una futura instalación en palas de pádel como proyecto completo, significando este TFG la realización de un sistema de control sobre este tipo de sensores, así como una efectiva comunicación Bluetooth entre este sistema y otro dispositivo en donde visualizar los valores en tiempo real. La elección del método de funcionamiento de este sistema, ha dependido de los objetivos a conseguir con la futura implementación en la pala, que, como es obvio, necesitará del menor peso posible que atenúe el efecto provocado con el aumento de carga, entre otras. Es por ello que, con la misión de disminuir al máximo este problema, se ha optado por la utilización de la comunicación I2C (Inter-Integrated Circuit) como método de transmisión entre los sensores y Arduino, ya que disminuye el uso de cables. Además, de un Arduino Nano como elemento controlador de todos los sensores por su pequeño volumen y peso que ofrece respecto a otros tipos, donde es posible la aplicación de la comunicación I2C y Serie. Se necesita alta velocidad tanto en la obtención de aceleraciones por parte del Arduino como en su transmisión al dispositivo para su representación y posterior estudio. Es necesario obtener rápidamente datos ya que en su puesta en práctica, en la de análisis de golpeo por la pala, se necesitará una constante captación de aceleraciones, puesto que existen altas variaciones de valores en un tiempo pequeño durante el proceso de golpear. Respecto al punto de alta velocidad en la transmisión Bluetooth, es obligatorio si se desea llegar al objetivo de representar los valores de las aceleraciones en tiempo real. Sin embargo, en este problema, también influirá la posterior evaluación de las cadenas de caracteres recibidas, que contienen toda la información, por parte del dispositivo Android y su trabajo con los datos almacenados, pudiendo llegar a ser un trabajo laborioso, influyendo gravemente en la velocidad de ejecución del programa. La elección del tipo de acelerómetros ha dependido principalmente que obtenga datos fiables y que su transmisión pueda ser a través de la comunicación I2C. Otro aspecto influyente pero con menor importancia, el peso. Es por ello que se ha decidido por el acelerómetro ADXL345, que responde correctamente a las exigencias anteriores, obteniendo aceleraciones en los tres ejes. El problema de éstos es que sólo admiten dos direcciones I2C, por lo que en una misma línea de comunicación sólo es posible la conexión de dos dispositivos de esta clase. Como solución, se decide por la utilización de un tercer sensor, el giróscopo MPU-6050. Éste es un dispositivo con mayores ventajas que el anterior, puesto que es capaz de alcanzar a conocer los giros, dándole un mayor campo de estudio al sistema de control. Para la realización de esta parte de recogida de aceleraciones por parte del Arduino Nano, se ha creado un programa en el IDE (Inter-Integrated Circuit) de Arduino mediante un lenguaje de alto nivel denominado Processing, orientada a objetos, siendo similar a C++. En el método de programación, se ha buscado que se mantenga un control constante de aceleraciones lo más rápido posible, es decir, que su función principal sea la de toma de aceleraciones, junto con su envío por Bluetooth, sin grandes análisis de ellos, para que el periodo de obtención de valores sea lo mínimo posible. Como se trata de un lenguaje orientado a objetos, se ha optado por la creación de la clase sensor en el cual se instanciará cada acelerómetro o giróscopo que esté en conexión, guardando cada objeto como elemento de un vector. Para la creación de estos objetos, se realiza, como etapa inicial, un proceso de escáner en la línea I2C. Dicho proceso dará lugar también a un análisis del tipo de sensor a través de su dirección I2C, para clasificarlo, proceso necesario ya que cada uno debe de ser configurado de manera distinta. La clase sensor contiene una serie de atributos como su número de identificación (para diferenciarlos de los demás), el tipo de sensor y otra serie elementos que definen su configuración (como el rango de escala). Además, incluye métodos para su posible reconfiguración, conocimiento de sus atributos y trabajos con ellos. Posteriormente al proceso de escaneo, se da entrada al proceso principal que, como se dijo anteriormente, se trata de la obtención de aceleraciones mediante un bucle, leyendo cada sensor. Dicho proceso contará con un sencillo paso de los valores a su equivalente en fuerzas g, mediante su introducción en una fórmula que contiene constantes diferentes que dependen tanto del tipo de acelerómetro como del eje, obtenidas en una etapa de calibración. Como paso final, se enviarán todos los datos mediante un protocolo específico, a través de una cadena de caracteres, mediante el puerto Serie, en el cual está conectado el módulo Bluetooth, que se encargará de transmitirlo inalámbricamente. Adicionalmente, como se quiere adquirir una cierta capacidad de control de todos los elementos y su posibilidad de cambiar sus configuraciones desde el dispositivo Android, se ha incluido en este bucle un proceso de lectura de órdenes enviadas por el dispositivo Android. Este proceso, para que no influya en la frecuencia de muestreo, sólo se iniciará en el caso de haber datos de entrada en el puerto Serie, es decir, llegado desde su módulo Bluetooth, y siguiendo un protocolo específico. En el caso de ser cumplidas ambas necesidades, se iniciará un trabajo de evaluación de la intención del mensaje y su actuación de acuerdo a ella. La segunda parte de este proyecto es la de la obtención de información en un dispositivo Android a través de la comunicación Bluetooth y su representación principalmente. Para ello, se ha necesitado crear una aplicación que cumpla las dos necesidades comentadas en el apartado anterior. El entorno de desarrollo en este caso ha sido Android Studio en el que es posible programar en Java, C, C++, etc., que cuenta con la ventaja de simular las aplicaciones previamente a su instalación en un dispositivo. Principalmente, respecto a la parte de su utilización, es una aplicación muy sencilla, con pocos pasos para la misión de visualizar las aceleraciones. Sin embargo, en su interior, su comportamiento es más complicado por la ejecución de procesos en segundos planos que ralentizan el programa. La comunicación Bluetooth en dispositivos Android se hace mediante la creación de hilos o threads que son los procesos en segundo plano que se acaban de comentar. Para lograr la conexión con otro dispositivo y su posterior comunicación mediante envío de datos, es necesaria la existencia de tres hilos diferentes, cada uno cumpliendo con la realización de un trabajo específico. Ellos son: el hilo Servidor, encargado de mantenerse en un estado de espera atendiendo solicitudes de posibles conexiones por parte de otros módulos Bluetooth, el hilo Cliente, crea las solicitudes de conexión que llegan al anterior hilo del otro módulo, y el hilo Conexión, siendo su trabajo el de enviar datos al otro módulo al cual está conectado y recibir lo entregado por éste. El programa se divide en dos partes. La función de la primera es el encendido de su adaptador Bluetooth, visualización de todos los dispositivos anteriormente emparejados y su posible elección para hacer posible su conexión, dando lugar al inicio del hilo Cliente. Para ello, ha sido necesario el almacenamiento de todos los dispositivos emparejados en un array, en donde se guarda toda la información de cada uno de ellos, información necesaria para el enlace. La segunda parte se inicia con la aceptación de la conexión y su paso al comienzo del trabajo del hilo Conexión, en donde se van a obtener las aceleraciones y el envío de solicitudes o cambios de configuración en los sensores. Este cambio de parte lleva consigo un cambio visual en la pantalla, con una nueva estructura. En esta estructura se representa la información deseada de cada sensor, separados en niveles. En cada nivel, se representa la dirección del sensor para poder identificarlo de entre los sensores reales (los físicos), el valor de sus aceleraciones en los tres ejes en tiempo real y, además, la posible visualización de la historia de sus aceleraciones, mediante una gráfica dinámica aceleración-tiempo utilizada, que se actualiza en cada paso por la etapa de lectura. Sin embargo, al igual que se buscó en el programa de Arduino la disminución de uso de memoria, sencillez en el entendimiento y manejo de datos, se inicia esta segunda parte con la obtención de información de los acelerómetros conectados. Con esto, se busca principalmente la obtención del número de sensores conectados para crear solo el número de objetos necesarios y así ahorrar en memoria y tiempo de ejecución. Dichos objetos creados son de la clase creada sensor.java, que incluye atributos que determinan la configuración en la que se encuentran cada uno, necesarios a saber para mejorar el diseño de representación. Al igual que en el programa de Arduino, son también añadidos a un vector para hacer más sencillo su manejo. En cuanto al método de ejecución predominante en esta segunda parte de la aplicación, que es la de obtención de información a través de Bluetooth, su análisis y actualización de los gráficos, se ha optado por un método temporizado con una frecuencia de reinicio alta, debido al colapso que suponía un procedimiento en bucle cerrado de lectura del buffer, al desearse la capacidad de interacción del usuario con la aplicación. Esta interacción se basa principalmente en la visualización u ocultación de la gráfica y del envío de cambios de configuración al Arduino a través de la comunicación Bluetooth, provocando una interrupción en el bucle de lectura.

Más información

ID de Registro: 43852
Identificador DC: http://oa.upm.es/43852/
Identificador OAI: oai:oa.upm.es:43852
Depositado por: Biblioteca ETSI Industriales
Depositado el: 12 Nov 2016 17:43
Ultima Modificación: 12 Nov 2016 17:43
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM