Cuprins:

Pene de localizare UWB: 6 pași
Pene de localizare UWB: 6 pași

Video: Pene de localizare UWB: 6 pași

Video: Pene de localizare UWB: 6 pași
Video: TUTORIAL: Unde se afla panoul (tabloul) de sigurante & relee si ce semnifica la VW Tiguan 2008-2017 2024, Iulie
Anonim
Localizare UWB Feather
Localizare UWB Feather

Ultra-WideBand Feather încorporează modulul Decawave DWM1000 și un ATSAMD21 ARM Cortex M0 în factorul de formă de pene Adafruit. Modulul DWM1000 este un modul wireless IEEE802.15.4-2011 compatibil UWB capabil de poziționare de precizie în interior și rate de date ridicate, făcând această placă perfectă pentru proiecte de robotică în care este necesară localizarea.

Caracteristici: - Decawave DWM1000 pentru urmărirea precisă - ARM Cortex M0 pentru aplicații rapide și puternice - Adafruit Feather compatibil pentru a se integra cu un ecosistem larg existent - Interfață SWD pentru aplicații de programare și depanare - Conector USB-C - Încărcător de baterie LiPo integrat

Pentru redactarea și actualizările complete ale proiectului vizualizați acest proiect pe site-ul meu Colț de prototipuri la prototypingcorner.io/projects/uwb-feather

Hardware și software sursă pentru acest proiect sunt disponibile din GitHub Repository.

Pasul 1: Proiectare hardware

Proiectare hardware
Proiectare hardware
Proiectare hardware
Proiectare hardware
Proiectare hardware
Proiectare hardware

Așa cum s-a menționat în introducere, UWB Feather constă dintr-un ATSAMD21 ARM Cortext M0 + pentru creier și un modul Decawave DWM1000 pentru banda ultra-largă fără fir, în factorul de formă penă. Designul este relativ simplu constând din 20 de elemente BoM pe un PCB cu 2 straturi. Pinout este compatibil cu Adafruit M0 Feather

Încărcarea LiPo este gestionată de un controler de gestionare a încărcării cu o singură celulă MCP73831. Tensiunea bateriei poate fi monitorizată pe D9, cu toate acestea este necesar accesul la toate IO, JP1 poate fi tăiat pentru a elibera acest pin. Reglarea de 3,3 volți este preformată de regulatorul liniar AP2112K-3.3 cu scădere redusă, oferind până la 600mA.

Pinout este pe deplin compatibil cu linia de pene Adafruit M0 pentru o portabilitate ușoară a codului. Liniile DWM1000 IO sunt conectate la magistrala SPI și pinii digitali 2, 3 și 4 pentru RST, IRQ și SPI_CS respectiv (care nu sunt expuși prin header). D13 este, de asemenea, conectat la LED-ul de la bord, așa cum este standard printre multe plăci compatibile Arduino.

Programarea poate fi preformată prin antetul SWD sau prin USB dacă este încărcată cu un bootloader corespunzător, cum ar fi uf2-samdx1 de la Microsoft. Consultați firmware-ul pentru mai multe.

Notă despre V1.0

Există o problemă cu conectorul USB-C pe versiunea 1 a acestei plăci. Amprenta pe care am folosit-o nu a inclus decupajul necesar pentru metoda de montare a decupajului acestei componente.

Versiunea 1.1 va include o soluție pentru acest lucru, precum și adăugarea unui conector micro-b pentru cei care îl doresc. A se vedea considerațiile versiunii 1.1 de mai jos.

Pentru considerente de proiectare privind lista de materiale și hardware versiunea 1.1, consultați scrierea proiectului.

Pasul 2: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

Cu doar 20 de articole BoM și majoritatea componentelor fiind nu mai mici de 0603 (condensatoarele de cristal 2x erau 0402), asamblarea manuală a acestei plăci a fost ușoară. Am avut șablonul PCB și lipit fabricat de JLCPCB în negru mat cu finisaj de suprafață ENIG.

Costul total pentru 5 plăci (deși 10 nu aveau nicio diferență de preț) și șablonul a fost de 68 USD AUD, cu toate acestea 42 de dolari din aceștia au fost expediați. Comanda pentru prima dată de la JLCPCB și plăci a fost de foarte bună calitate, cu finisaje frumoase.

Pasul 3: Firmware: Programarea Bootloader-ului

Firmware: Programarea Bootloader-ului
Firmware: Programarea Bootloader-ului
Firmware: Programarea Bootloader-ului
Firmware: Programarea Bootloader-ului
Firmware: Programarea Bootloader-ului
Firmware: Programarea Bootloader-ului

Firmware-ul poate fi încărcat peste conectorul SWD folosind un programator precum J-Link de la Segger. Arătat mai sus este J-Link EDU Mini. Pentru a începe programarea plăcii, trebuie să încărcăm bootloader-ul nostru, apoi să configurăm lanțul nostru de instrumente.

Voi folosi Atmel Studio pentru flash-ul bootloader-ului. Pentru aceasta, conectați J-Link și deschideți Atmel Studio. Apoi selectați Instrumente> Programare dispozitiv. Sub Instrument, selectați J-Link și setați dispozitivul la ATSAMD21G18A, apoi faceți clic pe Aplicare.

Conectați J-Link la antetul SWD cu pene și alimentați fie prin USB, fie prin baterie. Odată conectat, sub Semnătura dispozitivului, faceți clic pe Citire. Casetele de text Semnătura dispozitivului și Tensiunea țintă ar trebui să se propage corespunzător. Dacă nu verifică conexiunile și încearcă din nou.

Pentru a bloca bootloader-ul trebuie mai întâi să dezactivăm siguranța BOOTPROT. Pentru aceasta, selectați Siguranțe> USER_WORD_0. NVMCTRL_BOOTPROT și treceți la 0 octeți. Faceți clic pe Program pentru a încărca modificările.

Acum putem bloca bootloader-ul selectând Memories> Flash și setați locația bootloader-ului. Asigurați-vă că Ștergeți Flash înainte de selectarea programării și faceți clic pe Program. Dacă totul merge bine, D13 pe tablă ar trebui să înceapă să pulseze.

Acum va trebui să setați siguranța BOOTPROT la dimensiunea încărcătorului de boot de 8 KB. Pentru aceasta, selectați Siguranțe> USER_WORD_0. NVMCTRL_BOOTPROT și treceți la 8192 octeți. Faceți clic pe program pentru a încărca modificările.

Acum, când bootloader-ul a fost aprins, D13 ar trebui să fie pulsat și dacă este conectat prin USB, ar trebui să apară un dispozitiv de stocare în masă. Aici pot fi încărcate fișiere UF2 pentru programarea plăcii.

Pasul 4: Firmware: Cod intermitent cu PlatformIO

Firmware: Cod intermitent cu PlatformIO
Firmware: Cod intermitent cu PlatformIO
Firmware: Cod intermitent cu PlatformIO
Firmware: Cod intermitent cu PlatformIO

Firmware-ul poate fi încărcat prin protocolul UF2 sau direct prin interfața SWD. Aici vom folosi PlatformIO pentru ușurința și simplitatea sa. Pentru a începe, creați un nou proiect PIO și selectați Adafruit Feather M0 ca tablă țintă. Când încărcați peste SWD cu un J-Link, setați upload_protocol în platformio.ini așa cum se arată mai jos.

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

Acum puteți programa placa cu simplitatea cadrului Arduino.

Pasul 5: Firmware: intermitentul ancorei

Firmware: intermitentul ancorei
Firmware: intermitentul ancorei
Firmware: intermitentul ancorei
Firmware: intermitentul ancorei

Modulele DWM1000 pot fi configurate pentru a fi ancore sau etichete. În general, ancorele sunt păstrate în locații statice cunoscute, iar etichetele folosesc ancore pentru a obține o poziție relativă față de acestea. Pentru a testa modulul DWM1000 puteți încărca exemplul DW1000-Anchor din depozitul GitHub.

Pentru a bloca acest program cu PlatformIO, din PIO Home, selectați Open Project, apoi găsiți locația folderului DW1000-Anchor în depozitul GitHub. Apoi faceți clic pe butonul de încărcare PIO și va găsi automat sonda de depanare atașată (asigurați-vă că este conectată și placa este alimentată).

Firmware-ul etichetei va trebui încărcat pe o altă placă. Apoi, rezultatul poate fi vizualizat într-un terminal serial.

Pasul 6: Mergeți mai departe

Mergând mai departe
Mergând mai departe

Alte îmbunătățiri aduse acestui proiect vor include dezvoltarea unei noi biblioteci DW1000, placa V1.1 schimbă alte proiecte care utilizează această tehnologie. Dacă există suficient interes, voi lua în considerare producerea și vânzarea acestor plăci.

Mulțumesc pentru lectură. Lăsați orice gânduri sau critici în comentariile de mai jos și asigurați-vă că verificați proiectul din Prototyping Corner

Recomandat: