首页> 外文OA文献 >Desarrollo de un sistema de transmisión (Emisor/Receptor) con módulos Bluetooth
【2h】

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

机译:开发带有蓝牙模块的传输系统(发射器/接收器)

摘要

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.udEl 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.udLa 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.udLa 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.udPara la realización de esta parte de recogida de aceleraciones por parte del ArduinoudNano, 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.udComo 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.udLa 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.udPosteriormente 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.udAdicionalmente, 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. udLa 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.udPara 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.udPrincipalmente, 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.udLa 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.udEl 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.udLa 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.udEn 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.udSin 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.udDichos 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.udEn 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.udEsta 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.
机译:在该最终学位项目中,使用蓝牙无线连接实现了将加速度计中的数据从Arduino发送到Android设备。其目的是评估这种通信,作为一种高频传输信息的可能机制,并确定最有效的执行过程。这是一个较大项目的基础阶段,得出的结论不仅仅是获得加速度,还可以得出更有趣的结论U加速度计的使用是由于建议将来在桨叶中安装一个完整的项目,这意味着TFG在这种类型的传感器上实现控制系统,以及该系统与另一个可以实时查看其值的设备之间的有效蓝牙通信。 Ud该系统的操作方法的选择取决于将来在铲子上实施时要达到的目标,显然,这将需要最小的重量,以减轻由增加的负载引起的影响。这就是为什么为了最大程度地减少此问题,已选择使用I2C(集成电路间)通信作为传感器和Arduino之间的传输方法,因为它减少了电缆的使用。此外,与其他类型的I2C和串行通信应用相比,Arduino Nano作为所有传感器的控制元件,具有体积小,重量轻的特点。 Arduino获取加速度以及将其传输到设备以进行表示和后续研究都需要高速。由于在实施过程中,在分析铲子的撞击时,需要不断捕获加速度,因此有必要快速获取数据,因为在撞击过程中,在很短的时间内值的变化很大。关于蓝牙传输中的高速点,如果要达到实时表示加速度值的目的是强制性的。但是,Android设备及其对存储的数据的处理对接收到的包含所有信息的字符串的后续评估也将影响此问题,这可能会变得很费力,严重影响了程序选择的速度主要取决于获得可靠的数据及其通过I2C通信的传输。另一个有影响但不太重要的方面是体重。因此,选择了ADXL345加速度计,它可以正确满足上述要求,并在所有三个轴上都获得加速度。这些问题是它们仅支持两个I2C地址,因此只能在同一条通信线路上连接此类的两个设备。作为解决方案,决定使用第三个传感器MPU-6050陀螺仪。该设备比上一个设备具有更大的优势,因为它能够知道转弯,从而为控制系统提供了更大的研究领域。 Ud由Arduino进行这部分加速度收集 udNano ,已在Arduino IDE(集成电路间)中创建了一个程序,该程序使用一种称为C的面向对象的高级语言,类似于C ++。在编程方法中,我们寻求尽可能快地保持对加速度的恒定控制,即,其主要功能是在不进行大量分析的情况下,通过蓝牙发送加速度以及将其发送给蓝牙。 ud由于它是一种面向对象的语言,因此我们选择创建传感器类,在该类中将实例化每个连接的加速度计或陀螺仪,保存每个对象作为向量的元素。为了创建这些对象,在初始阶段,在I2C线上执行扫描程序。此过程还将导致通过其I2C地址对传感器类型进行分析(进行分类),这是一个必要的过程,因为每个传感器的配置必须不同。 Ud传感器类包含一系列属性,例如其标识号(以区别于其他传感器),传感器的类型以及其他定义其配置的元素系列(例如刻度范围)。此外,它还包括可能进行重新配置的方法,了解其属性并与之配合使用的方法 Ud在扫描过程之后,进入了主过程,如前所述,该过程涉及通过循环获得加速度。,读取每个传感器。通过将它们引入一个包含不同常数的公式中,该过程将使其从g值等效到以g力为单位的简单步骤,该常数取决于在校准阶段获得的加速度计和轴的类型。作为最后一步,所有数据将使用特定协议通过字符串,通过连接了蓝牙模块的串行端口发送,该串行端口将负责无线传输数据。具有一定的控制所有元素的能力以及从Android设备更改其设置的可能性,此循环中包含读取Android设备发送的订单的过程。为了避免影响采样频率,此过程仅在串行端口上输入数据(即从蓝牙模块到达并遵循特定协议)的情况下开始。如果两个需求都得到满足,则将开始评估消息的意图及其相应性能。 ud该项目的第二部分主要是通过蓝牙通信及其表示形式在Android设备上获取信息。 ud为此,必须创建一个满足上一节中讨论的两个需求的应用程序。在这种情况下,开发环境是Android Studio,可以在其中使用Java,C,C ++等进行编程,这具有在安装到设备上之前模拟应用程序的优势。它是使用的一部分,它是一个非常简单的应用程序,只需很少的步骤即可直观地看到加速度。但是,在内部,其行为由于在后台执行进程而使程序变慢。 Android设备上的UdBluetooth通信是通过创建线程或线程来完成的,这些线程是后台进程。刚刚评论。为了通过发送数据来实现与另一台设备的连接及其后续通信,必须具有三个不同的线程,每个线程都可以完成特定作业的性能。它们是:服务器线程负责保持自身处于等待状态,处理其他蓝牙模块可能的连接请求,客户端线程创建到达另一个模块先前线程的连接请求,以及连接线程,该程序的工作是将数据发送到它所连接的另一个模块,并接收它所传递的内容。第一种功能是打开您的蓝牙适配器,显示所有先前配对的设备,以及使连接成为可能的可能选择,从而启动客户端线程。为此,必须将所有配对设备存储在一个阵列中,其中每个设备的所有信息都存储在该信息中,这是链接所必需的信息 U第二部分从接受连接及其连接开始。从连接线程的工作开始,那里将获得传感器的加速和请求发送或配置更改。该零件更改通过新结构在屏幕上进行视觉更改 U在此结构中,每个传感器的所需信息均被表示为不同的级别。在每个级别上,传感器的方向都可以表示出来,以便能够从实际传感器(物理传感器)中识别出传感器的方向,实时在三个轴上的加速度值,并且还可以通过以下方式可视化其加速度的历史记录: ud但是,以与Arduino程序试图减少内存使用,简化理解和处理数据的方式相同的方式,它会在阅读阶段的每一步进行更新。第二部分首先从连接的加速度计获取信息。这样做的主要目的是获得连接的传感器的数量,以仅创建必要的对象数量,从而节省内存和执行时间 Ud这些创建的对象属于已创建的类sensor.java,该类包含确定它们各自所处的配置,必须知道以改进表示法设计。与Arduino程序一样,它们也被添加到向量中以使其更易于使用。UdA是应用程序第二部分中主要的执行方法,即通过蓝牙获取信息,在分析和更新图表时,已选择了具有高重启频率的定时方法。,由于需要读取用户与应用程序进行交互的能力,因此闭环程序崩溃导致无法读取缓冲区。 ud这种交互作用主要是基于图形的显示或隐藏,以及将配置更改发送到Arduino通过蓝牙通信,导致读取循环中断。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号