febrero 9, 2022

VARIOS – Medida de distancias cortas con UWB

Written by

Recientemente hemos descubierto unos dispositivos que pueden venir bien para proyectos de robótica. Están basados en tecnología UWB (Ultra Wide Band) que significa que emiten ondas de ancho de banda muy ancho, de muchos MHz y con estas ondas se puede calcular distancias de un punto a otro con cierta precisión en tiempo real.

Los dispositivos en cuestión están fabricados por Decawave y son transceptores pequeños, como éste:

Módulo UWB DW1000

Este módulo funciona como un modem, y es necesario conectarlo a un procesador. Makerfabs ha diseñado una tarjeta conjunta basada en el microcontrolador ESP32, al que le ha añadido un módulo del tipo anterior.

Controlador ESP32 + DW1000 de Makerfabs

A continuación explico el proceso para poner en marcha estas placas y empezar a usarlas.

El enlace, de tipo Instructable, donde se explica todo el proceso de forma práctica es:

https://www.instructables.com/ESP32-UWB-Indoor-Positioning-Test/

Y la carpeta de github donde está toda la documentación y el código del ejemplo es:

https://github.com/Makerfabs/Makerfabs-ESP32-UWB

Para programar estas tarjetas lo más cómodo es usar el IDE Arduino, así que se debe instalar la librería DW1000. Para ello se accede al menú Programa -> Incluir Librería -> Administrar bibliotecas, y en el selector, buscar la librería DW1000 e instalarla:

Librería instalada en el IDE

Pero esta librería tiene un problema, ya que está diseñada para Arduino y no para otras tarjetas. Para usar la tarjeta de Makerfabs hay que seleccionar en el menú Herramientas -> Placa el modelo ESP32 Dev Module.

Selección del modelo de placa

Si no se dispone del modelo ESP32 hay que instalarlo desde el gestor de placas. Hay información en varias páginas de Internet para hacerlo.

El problema es que ahora la librería no se compila adecuadamente. Se puede ver en el siguiente error con un ejemplo de los que vienen en la librería.

Error compilando librería DW1000

Para resolver este error hay que seguir unos pasos que indican en el enlace del github. Hay que editar el fichero DW1000.cpp que está en la carpeta donde se ha instalado la librería. En este ordenador con Windows está en la carpeta Documentos/Arduino/libraries/DW1000/src:

Fichero fuente de la librería que hay que editar

El cambio consiste solamente en comentar unas líneas del código:

Modificación de la librería DW1000 para ESP32

Tras la modificación, se guarda el fichero y se puede compilar el ejemplo sin problemas.

Sin embargo, los ejemplos que vienen con la librería no funcionan adecuadamente con la tarjeta de Makerfabs, seguramente porque están preparados para Arduino. Se usa en su lugar el ejemplo que viene en la carpeta de github.

Finalmente con los dos ordenadores y ambas tarjetas enlazadas se consigue que calculen la distancia entre ambas, y que al moverlas, esta distancia se actualice.

Ejemplo de cálculo de distancia UWB

En el siguiente vídeo se puede comprobar el modelo básico funcionando con dos tarjetas DW1000.

Category : VARIOS

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Proudly powered by WordPress and Sweet Tech Theme