Tabla de contenido:
- Paso 1: Diseño de hardware
- Paso 2: Montaje
- Paso 3: Firmware: programación del cargador de arranque
- Paso 4: Firmware: código intermitente con PlatformIO
- Paso 5: Firmware: flasheo del ancla
- Paso 6: ir más lejos
Video: Pluma de localización UWB: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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
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
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
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
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
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
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:
Cabeza de maniquí de localización de sonido con Kinect: 9 pasos (con imágenes)
Cabeza de maniquí de localización de sonido con Kinect: Conozca a Margaret, un muñeco de prueba para un sistema de monitoreo de fatiga del conductor. Recientemente se retiró de sus deberes y encontró su camino hacia nuestro espacio de oficina, y desde entonces ha llamado la atención de aquellos que piensan que es 'espeluznante'. En aras de la justicia, he
Seguimiento y localización de pequeñas tiendas: 9 pasos (con imágenes)
Seguimiento y localización para pequeñas tiendas: este es un sistema que está hecho para pequeñas tiendas que se supone que se monta en bicicletas eléctricas o scooters eléctricos para entregas de corto alcance, por ejemplo, una panadería que desea entregar pasteles. ¿Qué significa Track and Trace? Track and Trace es un sistema utilizado por ca
Pluma de soldadura de calibre múltiple: 4 pasos
Bolígrafo de soldadura de calibre múltiple: esto se basó en el instructable de stone3408 del kit de soldadura y luego pasé por un bolígrafo multicolor y luego, ¿por qué no? Umm, lo hice un poco en 5 minutos, así que en cada instrucción agregaré una OPCIÓN: que te dirá formas de mejorarlo. T
Dispensador de soldadura de pluma pequeña: 4 pasos
Dispensador de soldadura de bolígrafo pequeño: vi todos estos dispensadores de soldadura diferentes hechos de bolígrafos. algunos funcionaron y otros simplemente fueron vagos, así que decidí mostrar cómo hacer el que creo que funciona mejor
Arco de pluma de alta potencia, largo alcance, extremadamente preciso: 6 pasos
Arco de bolígrafo de alta potencia, largo alcance, extremadamente preciso: ¡Este es otro de esos famosos lazos de bolígrafo! =) ¡Disfruta! PD estas cosas son algo poderosas, no apuntes a alguien. RENUNCIA: No puedes demandarme si rompes algo con esto. Incluyendo personas y animales. Este es mi primer Instructable, así que ruego