Tabla de contenido:

Pluma de localización UWB: 6 pasos
Pluma de localización UWB: 6 pasos

Video: Pluma de localización UWB: 6 pasos

Video: Pluma de localización UWB: 6 pasos
Video: ¡Los mejores consejos de APPLE WATCH! ⌚️🏆 2024, Noviembre
Anonim
Pluma de localización UWB
Pluma de localización UWB

El Ultra-WideBand Feather incorpora el módulo Decawave DWM1000 y un ATSAMD21 ARM Cortex M0 en el factor de forma de la pluma Adafruit. El módulo DWM1000 es un módulo inalámbrico compatible con IEEE802.15.4-2011 UWB capaz de posicionamiento en interiores de precisión y altas velocidades de datos, lo que hace que esta placa sea perfecta para proyectos de robótica donde se requiere localización.

Características: - Decawave DWM1000 para seguimiento de precisión - ARM Cortex M0 para aplicaciones rápidas y potentes - Compatible con Adafruit Feather para integrarse con un amplio ecosistema existente - Interfaz SWD para aplicaciones de programación y depuración - Conector USB-C - Cargador de batería LiPo integrado

Para ver el informe completo del proyecto y las actualizaciones, vea este proyecto en mi sitio Prototyping Corner en prototypingcorner.io/projects/uwb-feather

El hardware y el software de origen para este proyecto están disponibles en el repositorio de GitHub.

Paso 1: Diseño de hardware

Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware

Como se mencionó en la introducción, el UWB Feather consta de un ATSAMD21 ARM Cortext M0 + para el cerebro y un módulo Decawave DWM1000 para la banda ultra ancha inalámbrica, en el factor de forma de pluma. El diseño es relativamente simple y consta de 20 elementos de la lista de materiales en una placa de circuito impreso de 2 capas. Pinout es compatible con Adafruit M0 Feather

La carga de LiPo es manejada por el controlador de administración de carga totalmente integrado de celda única MCP73831. El voltaje de la batería se puede monitorear en D9, sin embargo, si se requiere acceso a todas las E / S, se puede cortar JP1 para liberar este pin. La regulación de 3.3 voltios es realizada por el regulador lineal de baja caída AP2112K-3.3, que proporciona hasta 600 mA.

Pinout es totalmente compatible con la línea de plumas Adafruit M0 para facilitar la portabilidad del código. Las líneas IO del DWM1000 están conectadas al bus SPI y los pines digitales 2, 3 y 4 para RST, IRQ y SPI_CS respectivamente (que no están expuestos a través del encabezado). D13 también está conectado al LED integrado, como es estándar entre muchas placas compatibles con Arduino.

La programación se puede realizar a través del encabezado SWD o mediante USB si se carga con un cargador de arranque correspondiente, como el uf2-samdx1 de Microsoft. Consulte el firmware para obtener más información.

Nota sobre V1.0

Hay un problema con el conector USB-C en la versión 1 de esta placa. El espacio que utilicé no incluía el corte requerido para el método de montaje del corte de este componente.

La versión 1.1 incluirá una solución para esto, además de agregar un conector micro-b para aquellos que lo deseen. Consulte las consideraciones de la versión 1.1 a continuación.

Para las consideraciones de diseño de la lista de materiales y hardware de la versión 1.1, consulte el informe del proyecto.

Paso 2: Montaje

Montaje
Montaje
Montaje
Montaje
Montaje
Montaje
Montaje
Montaje

Con solo 20 elementos de la lista de materiales y la mayoría de los componentes no son más pequeños que 0603 (los condensadores de cristal 2x eran 0402), el ensamblaje manual de esta placa fue fácil. Tenía el PCB y la plantilla de soldadura fabricados por JLCPCB en negro mate con acabado de superficie ENIG.

El costo total de 5 tablas (aunque 10 no tuvieron diferencia de precio) y la plantilla fue de $ 68 AUD, sin embargo, $ 42 de eso fue el envío. El primer pedido de JLCPCB y los tableros fueron de muy alta calidad con un buen acabado.

Paso 3: Firmware: programación del cargador de arranque

Firmware: programación del cargador de arranque
Firmware: programación del cargador de arranque
Firmware: programación del cargador de arranque
Firmware: programación del cargador de arranque
Firmware: programación del cargador de arranque
Firmware: programación del cargador de arranque

El firmware se puede cargar a través del conector SWD utilizando un programador como el J-Link de Segger. Arriba se muestra el J-Link EDU Mini. Para comenzar a programar la placa, necesitamos cargar nuestro gestor de arranque y luego configurar nuestra cadena de herramientas.

Usaré Atmel Studio para actualizar el gestor de arranque. Para hacerlo, conecte el J-Link y abra Atmel Studio. Luego seleccione Herramientas> Programación del dispositivo. En Herramienta, seleccione J-Link y configure el Dispositivo en ATSAMD21G18A y luego haga clic en Aplicar.

Conecte el J-Link al cabezal SWD de pluma y aplique energía a través de USB o mediante la batería. Una vez conectado, en Firma del dispositivo, haga clic en Leer. Los cuadros de texto Firma del dispositivo y Voltaje objetivo deben propagarse en consecuencia. Si no comprueban las conexiones y vuelva a intentarlo.

Para actualizar el cargador de arranque, primero debemos deshabilitar el fusible BOOTPROT. Para hacer esto, seleccione Fusibles> USER_WORD_0. NVMCTRL_BOOTPROT y cambie a 0 Bytes. Haga clic en Programa para cargar los cambios.

Ahora podemos actualizar el cargador de arranque seleccionando Memorias> Flash y establecer la ubicación del cargador de arranque. Asegúrese de seleccionar Borrar Flash antes de programar y haga clic en Programa. Si todo va bien, D13 en el tablero debería comenzar a pulsar.

Ahora deberá configurar el fusible BOOTPROT en el tamaño del cargador de arranque de 8kB. Para hacer esto, seleccione Fusibles> USER_WORD_0. NVMCTRL_BOOTPROT y cambie a 8192 Bytes. Haga clic en el programa para cargar los cambios.

Ahora que se ha actualizado el cargador de arranque, D13 debería estar pulsando y, si está conectado a través de USB, debería aparecer un dispositivo de almacenamiento masivo. Aquí es donde se pueden cargar los archivos UF2 para programar la placa.

Paso 4: Firmware: código intermitente con PlatformIO

Firmware: código intermitente con PlatformIO
Firmware: código intermitente con PlatformIO
Firmware: código intermitente con PlatformIO
Firmware: código intermitente con PlatformIO

El firmware se puede cargar a través del protocolo UF2 o directamente a través de la interfaz SWD. Aquí usaremos PlatformIO por su facilidad y simplicidad. Para comenzar, cree un nuevo proyecto PIO y seleccione Adafruit Feather M0 como tablero de destino. Al cargar sobre SWD con un J-Link, configure upload_protocol en platformio.ini como se muestra a continuación.

[env: adafruit_feather_m0] plataforma = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink

Ahora puede programar la placa con la simplicidad del marco Arduino.

Paso 5: Firmware: flasheo del ancla

Firmware: parpadeando el ancla
Firmware: parpadeando el ancla
Firmware: parpadeando el ancla
Firmware: parpadeando el ancla

Los módulos DWM1000 se pueden configurar para que sean anclajes o etiquetas. Generalmente, los anclajes se mantienen en ubicaciones estáticas conocidas y las etiquetas usan anclajes para obtener una posición relativa a ellos. Para probar el módulo DWM1000, puede cargar el ejemplo de DW1000-Anchor desde el repositorio de GitHub.

Para actualizar este programa con PlatformIO, desde PIO Home, seleccione Abrir proyecto y luego busque la ubicación de la carpeta DW1000-Anchor en el repositorio de GitHub. Luego haga clic en el botón de carga de PIO y automáticamente encontrará la sonda de depuración adjunta (asegúrese de que esté conectada y de que la placa esté encendida).

El firmware de la etiqueta deberá cargarse en otra placa. Luego, el resultado se puede ver en un terminal en serie.

Paso 6: ir más lejos

Ir más lejos
Ir más lejos

Otras mejoras a este proyecto incluirán el desarrollo de una nueva biblioteca DW1000, la placa V1.1 cambia otros proyectos que utilizan esta tecnología de alcance. Si hay suficiente interés, consideraré fabricar y vender estos tableros.

Gracias por leer. Deje sus pensamientos o críticas en los comentarios a continuación y asegúrese de revisar el proyecto en Prototyping Corner

Recomendado: