Taula de continguts:

Ploma de localització UWB: 6 passos
Ploma de localització UWB: 6 passos

Vídeo: Ploma de localització UWB: 6 passos

Vídeo: Ploma de localització UWB: 6 passos
Vídeo: Just another beautiful day in Phoenix 2024, De novembre
Anonim
Ploma de localització UWB
Ploma de localització UWB

Ultra-WideBand Feather incorpora el mòdul Decawave DWM1000 i un ATSAMD21 ARM Cortex M0 al format de ploma Adafruit. El mòdul DWM1000 és un mòdul sense fils compatible amb IEEE802.15.4-2011 UWB capaç de posicionar amb precisió a l'interior i de velocitats de dades elevades, cosa que fa que aquesta placa sigui perfecta per a projectes de robòtica on es requereixi localització.

Característiques: - Decawave DWM1000 per al seguiment de precisió - ARM Cortex M0 per a aplicacions ràpides i potents - Compatible amb Adafruit Feather per integrar-se amb un ampli ecosistema existent - Interfície SWD per a programació i depuració d’aplicacions - Connector USB-C - Carregador de bateria LiPo integrat

Per obtenir la completa redacció i actualització del projecte, consulteu aquest projecte al meu lloc Racó de prototips a prototypingcorner.io/projects/uwb-feather

El maquinari i el programari d’origen d’aquest projecte estan disponibles al dipòsit de GitHub.

Pas 1: disseny de maquinari

Disseny de maquinari
Disseny de maquinari
Disseny de maquinari
Disseny de maquinari
Disseny de maquinari
Disseny de maquinari

Com es va esmentar a la introducció, el UWB Feather consisteix en un ATSAMD21 ARM Cortext M0 + per al cervell i un mòdul Decawave DWM1000 per a la banda sense fils ultra ampla, en el format de forma de ploma. El disseny és relativament senzill i consta de 20 articles BoM en un PCB de 2 capes. Pinout és compatible amb Adafruit M0 Feather

La càrrega LiPo és gestionada pel controlador de gestió de càrrega completament integrat d’una sola cel·la MCP73831. El voltatge de la bateria es pot controlar a D9, però és necessari l'accés a totes les E / S, es pot tallar JP1 per alliberar aquest passador. El regulador lineal de baixa caiguda AP2112K-3.3 preforma la regulació de 3,3 volts, que proporciona fins a 600 mA.

Pinout és totalment compatible amb la línia de plomes Adafruit M0 per facilitar la portabilitat del codi. Les línies IO DWM1000 estan connectades al bus SPI i als pins digitals 2, 3 i 4 per RST, IRQ i SPI_CS respectivament (que no estan exposats a través de la capçalera). El D13 també està connectat al LED integrat, com és estàndard entre moltes plaques compatibles amb Arduino.

La programació es pot preformar a través de la capçalera SWD o mitjançant USB si es carrega amb un carregador d’arrencada corresponent, com ara uf2-samdx1 de Microsoft. Consulteu el firmware per obtenir més informació.

Nota sobre V1.0

Hi ha un problema amb el connector USB-C a la versió 1 d'aquesta placa. La petjada que vaig fer servir no incloïa el retall necessari per al mètode de muntatge del retall d’aquest component.

La versió 1.1 inclourà una solució per a això, a més d’afegir un connector micro-b per a aquells que ho vulguin. Vegeu les consideracions de la versió 1.1 a continuació.

Per a les consideracions de disseny de la llista 1.1 de materials i maquinari, consulteu l'escriptura del projecte.

Pas 2: Muntatge

muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
muntatge

Amb només 20 articles BoM i la majoria dels components no eren inferiors a 0603 (els condensadors de cristall de 2x eren 0402), el muntatge manual d'aquesta placa va ser fàcil. Tenia la plantilla de PCB i soldadura fabricada per JLCPCB en negre mat amb acabat superficial ENIG.

El cost total de 5 taulers (tot i que 10 no tenia diferència de preu) i la plantilla va ser de 68 AUD, però en va enviar 42 per dòlars. Per primera vegada, les comandes de JLCPCB i taulers eren de molt alta qualitat amb un bon acabat.

Pas 3: Firmware: programació del carregador d'arrencada

Firmware: programació del carregador d’arrencada
Firmware: programació del carregador d’arrencada
Firmware: programació del carregador d’arrencada
Firmware: programació del carregador d’arrencada
Firmware: programació del carregador d’arrencada
Firmware: programació del carregador d’arrencada

El microprogramari es pot carregar al connector SWD mitjançant un programador com el J-Link de Segger. A la part superior es mostra el J-Link EDU Mini. Per començar a programar la placa, hem de carregar el carregador d’arrencada i configurar la cadena d’eines.

Faré servir Atmel Studio per llançar el gestor d’arrencada. Per fer-ho, connecteu J-Link i obriu Atmel Studio. A continuació, seleccioneu Eines> Programació de dispositius. A Eina, seleccioneu el J-Link i configureu el dispositiu a ATSAMD21G18A i feu clic a Aplica.

Connecteu el J-Link a la capçalera SWD de ploma i alimenteu-lo mitjançant USB o mitjançant la bateria. Un cop connectat, a Signatura del dispositiu, feu clic a Llegeix. Els quadres de text Signatura del dispositiu i Voltatge de destinació s’han de propagar en conseqüència. Si no comproven les connexions i torneu-ho a provar.

Per fer flaixar el carregador d’arrencada primer hem de desactivar el fusible BOOTPROT. Per fer-ho, seleccioneu Fusibles> USER_WORD_0. NVMCTRL_BOOTPROT i canvieu a 0 bytes. Feu clic a Programa per penjar els canvis.

Ara podem fer flaixar el carregador d’arrencada seleccionant Memòries> Flaix i establir la ubicació del carregador d’arrencada. Assegureu-vos que Esborra Flash abans de seleccionar la programació i feu clic a Programa. Si tot va bé, D13 al tauler hauria de començar a polsar.

Ara haureu d’establir el fusible BOOTPROT a la mida del carregador d’arrencada de 8 KB. Per fer-ho, seleccioneu Fusibles> USER_WORD_0. NVMCTRL_BOOTPROT i canvieu a 8192 Bytes. Feu clic a programa per penjar els canvis.

Ara que el carregador d'arrencada s'ha llampat, el D13 hauria de fer pulsacions i, si està connectat per USB, hauria d'aparèixer un dispositiu d'emmagatzematge massiu. Aquí és on es poden penjar fitxers UF2 per programar la placa.

Pas 4: Firmware: codi intermitent amb PlatformIO

Firmware: codi intermitent amb PlatformIO
Firmware: codi intermitent amb PlatformIO
Firmware: codi intermitent amb PlatformIO
Firmware: codi intermitent amb PlatformIO

El microprogramari es pot penjar mitjançant el protocol UF2 o directament a través de la interfície SWD. Aquí utilitzarem PlatformIO per la seva facilitat i simplicitat. Per començar, creeu un nou projecte PIO i seleccioneu Adafruit Feather M0 com a tauler objectiu. En carregar per SWD amb un J-Link, configureu upload_protocol a platformio.ini tal com es mostra a continuació.

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

Ara podeu programar la placa amb la senzillesa del framework Arduino.

Pas 5: Firmware: intermitència de l'ancoratge

Firmware: intermitent de l’ancoratge
Firmware: intermitent de l’ancoratge
Firmware: intermitència de l’ancoratge
Firmware: intermitència de l’ancoratge

Els mòduls DWM1000 es poden configurar per ser ancoratges o etiquetes. Generalment, els ancoratges es mantenen en llocs estàtics coneguts i les etiquetes utilitzen ancoratges per obtenir una posició relativa a ells. Per provar el mòdul DWM1000 podeu penjar l'exemple DW1000-Anchor des del dipòsit GitHub.

Per fer flash aquest programa amb PlatformIO, des de PIO Home, seleccioneu Obre projecte i cerqueu la ubicació de la carpeta DW1000-Anchor al dipòsit GitHub. A continuació, feu clic al botó de càrrega PIO i trobarà automàticament la sonda de depuració adjunta (assegureu-vos que estigui connectada i que la placa estigui alimentada).

El microprogramari de l’etiqueta s’haurà de carregar a un altre tauler. A continuació, el resultat es pot veure en un terminal sèrie.

Pas 6: anar més enllà

Anar més enllà
Anar més enllà

Altres millores d’aquest projecte inclouran el desenvolupament d’una nova biblioteca DW1000, la placa V1.1 canviarà altres projectes que utilitzin aquesta tecnologia de gamma. Si hi ha prou interès, consideraré la possibilitat de fabricar i vendre aquestes taules.

Gràcies per llegir. Deixeu qualsevol comentari o crítica als comentaris següents i no oblideu consultar el projecte a Prototyping Corner

Recomanat: