Implementación y análisis de un dispositivo de posicionamiento inercial sobre Raspberry Pi

Fuentetaja de Prado, Pablo (2023). Implementación y análisis de un dispositivo de posicionamiento inercial sobre Raspberry Pi. Trabajo Fin de Grado / Proyecto Fin de Carrera, E.T.S.I. y Sistemas de Telecomunicación (UPM), Madrid.

Descripción

Título: Implementación y análisis de un dispositivo de posicionamiento inercial sobre Raspberry Pi
Autor/es:
  • Fuentetaja de Prado, Pablo
Director/es:
Tipo de Documento: Trabajo Fin de Grado o Proyecto Fin de Carrera
Grado: Grado en Ingeniería Electrónica de Comunicaciones
Fecha: Septiembre 2023
Materias:
ODS:
Palabras Clave Informales: Sistemas empotrados (Ordenadores), Microcontroladores
Escuela: E.T.S.I. y Sistemas de Telecomunicación (UPM)
Departamento: Ingeniería Telemática y Electrónica
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[thumbnail of PFG_FUENTETAJA_DEPRADO_PABLO.pdf] PDF (Portable Document Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (2MB)

Resumen

El propósito de este proyecto es el diseño y desarrollo completo de un sistema empotrado con la funcionalidad de unidad de medida inercial. El microcontrolador usado para este fin es una Raspberry Pi 3B+, cargada con sistema operativo embebido Linux.

El resto de los elementos del diseño, se seleccionan con el condicionante de no ser directamente compatibles con Raspberry Pi, de modo que sea necesario adaptar el hardware para posibilitar el acople de todos los periféricos, y desarrollar software propio para su gestión y control.

Adicionalmente, se establece que el software de la aplicación se realice en lenguaje de programación C, usando librerías de alto nivel. De esta forma, se busca analizar el desempeño de los pines de entradas salidas cuando se gestionan a este nivel, siendo éste el segundo propósito del presente proyecto.

Los dispositivos de medida inercial se caracterizan por generar información acerca del posicionamiento de un objeto, como puede ser su orientación, su velocidad o su inclinación. Estos dispositivos se constituyen normalmente por un sensor acelerómetro y por un giróscopo, aunque en este proyecto se ha decidido completarlo añadiendo un magnetómetro.

Tras un minucioso proceso de análisis de las diferentes opciones del mercado, se decide incorporar el integrado BMI160, formado por un acelerómetro y un giróscopo, y el magnetómetro BMM150. Entre los motivos de la elección de estos componentes está la posibilidad de acoplar el magnetómetro al integrado BMI160, de modo que se trabaja como si se tratara de una única unidad.

Para mostrar los datos extraídos de los sensores, se incorpora al diseño una pequeña pantalla táctil de tamaño 240x320. De este modo también se posibilita que el usuario interactúe con el dispositivo, seleccionando el sensor del que se quiere leer los datos o configurándolos a su gusto. A parte de las medidas leídas de los sensores, también se muestran los ángulos de inclinación de los ejes y se implementa una brújula electrónica.

El proyecto se desarrolla de forma gradual, es decir, se trabaja con cada elemento por separado, creando las librerías particulares, para terminar integrándolo todo en el diseño completo. Se comienza trabajando con el bloque de los sensores. En este bloque es necesario implementar el protocolo de comunicaciones I2C para posibilitar la configuración de los 3 sensores y la lectura de las medidas tomadas, para su posterior procesado.

El siguiente bloque para tratar es la pantalla táctil, la cual se divide en su apartado táctil y su apartado visual. El primero, hace uso del mismo canal I2C de los sensores para comunicar a la Raspberry Pi las coordenadas del toque en la pantalla. El apartado visual necesita de dos protocolos distintos, uno de tipo serie para el control y configuración, y otro para la transmisión de las imágenes. Ambos protocolos se codifican completamente ya que no existen librerías asociadas, debido a la restricción de no estar preparados para su montaje con Raspberry Pi.

El último paso es la integración de ambos elementos con la Raspberry Pi, mediante una máquina de estados. Es también necesario el diseño de una placa que permita el acople de los elementos en un único dispositivo, implementando las distintas interconexiones y el reparto de alimentaciones.

Tras analizar los resultados obtenidos se llega la conclusión de que el diseño alcanza los propósitos marcados. Se verifica que los sensores se calibran correctamente y que las medidas realizadas son de calidad. Se comprueba que la pantalla muestras las imágenes correctamente y reacciona como es de esperar a las interacciones con la capa táctil.

Sin embargo, el análisis del desempeño de los pines de entrada salida, revela la necesidad de limitar la funcionalidad del diseño para poder ser soportado. Esto se debe al protocolo de la pantalla táctil, que exige una frecuencia de señal excesiva. Por este motivo, se toma la decisión de reducir el valor de la frecuencia de los 6,4 MHz que marca el fabricante a 1,7 MHz, y el número de señales de datos de 24 a 1, lo que implica que únicamente se representarán imágenes en blanco y negro. Para llegar a determinar estos valores se realiza un detallado análisis de los diferentes retardos implicados en el ciclo de la aplicación, llegando a la conclusión de que la gestión a alto nivel de los pines de entrada-salida queda limitado para frecuencias inferiores a 2 MHz.

Abstract:

The purpose of this project is the design and complete development of an embed system functioning as an inertial measurement unit. The microcontroller used is a Raspberry Pi 3B+, loaded with Linux Operating System.

The rest of the elements of the design are selected with the condition of not being directly compatible with Raspberry Pi, so that it is necessary to adapt the hardware in order to make it possible to couple all the peripherals, and develop own software for its control and management.

Additionally, it is stablished that the application software is going to be implemented in C programming language, using high level libraries. This way, the performance of the general input-output pins is going to be analyzed when they are managed using this high level language, which is the second purpose of this project

The inertial measurement devices are characterized for generating information about an object positioning, such as its orientation, velocity or inclination. These devices are usually constituted by an accelerometer and gyroscope sensor, even though in this project it is completed by adding a magnetometer to the design.

After a thorough process of analyzing the different market options, it is selected the integrated circuit BMI160, conformed by an accelerometer and a gyroscope, and the magnetometer BMI150. One of the reasons for choosing these two components is the possibility of connecting the magnetometer to the BMI160. This way it is possible to work as if there was only one integrated circuit.

In order to display the data extracted from the sensors, a small 240x320 touchscreen is incorporated to the design. This way the user is allowed to interact with the device, selecting the sensor which data is going to be read or configuring the sensor as pleased. Additionally to the measurements read from the sensors, the tilt angles of the axis are also displayed and an electronic compass is implemented.

The project is developed gradually, meaning that each element is managed separately, creating specialized libraries, to finally being able of integrating everything in the complete design. The sensors block is the first one created. In this block it is necessary to implement the I2C communication protocol to enable the configuration of the 3 sensors and the reading of the measurements done, for its processing.

The next block created is the touchscreen, which divided in its touchscreen section and its visual display section. The first one, uses the same I2C channel as the sensors to communicate the Raspberry Pi the coordinates of a touch in the screen. The visual section needs two different protocols, one serial protocol for the control and configuration of the display and another one for the transmission of the images. Both of them are completely codified due to the inexistence of libraries, since it was established the condition of not being prepared for its coupling with Raspberry Pi.

The last step is the integration of these two elements with the Raspberry Pi, using a state machine. It is also necessary to design a board for the mounting of these elements into one single device, implementing the different interfaces and the distribution of the different power levels.

After analyzing the obtained results, it is concluded that the design reaches the marked purposes. It is verified that the sensors are calibrated correctly and that the obtained measurements are of good quality. It is checked that the images shown in the display are exactly as they should and that the display reacts as expected to the interaction with the touch layer.

However, the analysis of the performance of the input-output pins reveals the need of limiting the design’s functionality in order to be supported. This is due to the touchscreen protocol, which demands and excessive signal frequency. For this reason, the value of this frequency is reduced from 6.4 MHz that indicates the manufacturer to 1.7 MHz, and the number of data signal from 24 to 1, meaning that only black and white images can be displayed. For determining these values a detailed study of the different delays involved in the application cycle is made, reaching the conclusion that the high level management of the input-output pins is limited to frequencies lower than 2 MHz.

Más información

ID de Registro: 77362
Identificador DC: https://oa.upm.es/77362/
Identificador OAI: oai:oa.upm.es:77362
Depositado por: Biblioteca Universitaria Campus Sur
Depositado el: 19 Ene 2024 08:04
Ultima Modificación: 18 Mar 2024 23:30