Indholdsfortegnelse:

UWB -lokaliseringsfjeder: 6 trin
UWB -lokaliseringsfjeder: 6 trin

Video: UWB -lokaliseringsfjeder: 6 trin

Video: UWB -lokaliseringsfjeder: 6 trin
Video: Chalk Talk: UWB - Because Location Matters 2024, Juli
Anonim
UWB Localization Feather
UWB Localization Feather

Ultra-WideBand Feather inkorporerer Decawave DWM1000 modulet og en ATSAMD21 ARM Cortex M0 i Adafruit fjer formfaktor. DWM1000-modulet er et IEEE802.15.4-2011 UWB-kompatibelt trådløst modul i stand til præcis indendørs positionering og høje datahastigheder, hvilket gør dette kort perfekt til robotprojekter, hvor lokalisering er påkrævet.

Funktioner:-Decawave DWM1000 til præcisionssporing-ARM Cortex M0 til hurtige og kraftfulde applikationer-Adafruit Feather kompatibel til at integreres med et bredt eksisterende økosystem-SWD-interface til programmering og fejlfinding af applikationer-USB-C-stik-Integreret LiPo batterioplader

For hele projektopskrivning og opdateringer se dette projekt på mit websted Prototyping Corner på prototypingcorner.io/projects/uwb-feather

Kildehardware og software til dette projekt er tilgængeligt fra GitHub -depotet.

Trin 1: Hardware Design

Hardware design
Hardware design
Hardware design
Hardware design
Hardware design
Hardware design

Som nævnt i indledningen består UWB Feather af en ATSAMD21 ARM Cortext M0+ til hjernen og et Decawave DWM1000 modul til det ultrabrede bånd trådløst, i fjerformfaktoren. Designet er relativt enkelt bestående af 20 BoM-emner på et 2-lags printkort. Pinout er Adafruit M0 Feather kompatibel

LiPo-opladning håndteres af MCP73831 enkeltcellet, fuldt integreret ladestyringscontroller. Batterispænding kan overvåges på D9, men adgang til alt IO er påkrævet. JP1 kan afbrydes for at frigøre denne pin. 3.3 volt regulering er præformet af AP2112K-3.3 lineær regulator med lavt frafald, der giver op til 600mA.

Pinout er fuldt kompatibel med Adafruit M0 fjerlinjen for nem kodeportabilitet. DWM1000 IO -ledningerne er forbundet til SPI -bussen og digitale stifter 2, 3 & 4 for RST, IRQ & SPI_CS respektivt (som ikke udsættes via headeren). D13 er også forbundet med den indbyggede LED, som det er standard blandt mange Arduino-kompatible tavler.

Programmering kan forudformes over SWD-headeren eller via USB, hvis den er indlæst med en tilsvarende bootloader, f.eks. Uf2-samdx1 fra Microsoft. Se firmware for mere.

Bemærk på V1.0

Der er et problem med USB-C-stikket på version 1 af dette kort. Det fodaftryk, jeg brugte, omfattede ikke den udskæring, der kræves til udskæringsmonteringsmetoden for denne komponent.

Version 1.1 vil indeholde en rettelse til dette samt tilføjelse af et mikro-b-stik til dem, der ønsker det. Se overvejelser i version 1.1 nedenfor.

For projektovervejelser og hardware Version 1.1 designovervejelser, se projektopskrivningen.

Trin 2: Montering

montage
montage
montage
montage
montage
montage
montage
montage

Med kun 20 BoM -emner og de fleste komponenter ikke mindre end 0603 (2x krystalkondensatorer var 0402), var håndmontering af dette kort let. Jeg havde PCB og loddemetoden fremstillet af JLCPCB i mat sort med ENIG overfladefinish.

Samlede omkostninger for 5 tavler (selvom 10 ikke havde nogen prisforskel) og stencil var $ 68 AUD, men $ 42 heraf var forsendelse. Første gang bestilling fra JLCPCB og boards var af meget høj kvalitet med flot finish.

Trin 3: Firmware: Programmering af bootloader

Firmware: Programmering af bootloader
Firmware: Programmering af bootloader
Firmware: Programmering af bootloader
Firmware: Programmering af bootloader
Firmware: Programmering af bootloader
Firmware: Programmering af bootloader

Firmware kan indlæses over SWD-stikket ved hjælp af en programmør som J-Link fra Segger. J-Link EDU Mini er vist ovenfor. For at begynde at programmere tavlen skal vi indlæse vores bootloader og derefter konfigurere vores værktøjskæde.

Jeg bruger Atmel Studio til at blinke bootloaderen. For at gøre det skal du tilslutte J-Link og åbne Atmel Studio. Vælg derefter Værktøjer> Enhedsprogrammering. Vælg J-Link under Værktøj, og indstil Enhed til ATSAMD21G18A, og klik derefter på Anvend.

Tilslut J-Link til fjerens SWD-header og tilfør strøm enten via USB eller via batteriet. Når du er tilsluttet, skal du klikke på Læs under Enhedssignatur. Tekstfelterne Enhedssignatur og Målspænding skal spredes i overensstemmelse hermed. Hvis de ikke kontrollerer forbindelserne, og prøv igen.

For at blinke bootloaderen skal vi først deaktivere BOOTPROT -sikringen. For at gøre dette skal du vælge Sikringer> USER_WORD_0. NVMCTRL_BOOTPROT og skifte til 0 Bytes. Klik på Program for at uploade ændringerne.

Nu kan vi blinke bootloaderen ved at vælge Memories> Flash og angive placeringen af bootloaderen. Sørg for at slette Flash, før programmering er valgt, og klik på Program. Hvis alt går godt, skal D13 på tavlen begynde at pulsere.

Nu skal du indstille BOOTPROT -sikringen til 8kB bootloader -størrelse. For at gøre dette skal du vælge Sikringer> USER_WORD_0. NVMCTRL_BOOTPROT og ændre til 8192 Bytes. Klik på programmet for at uploade ændringerne.

Nu hvor bootloaderen er blevet blinket, skal D13 pulse, og hvis den er tilsluttet via USB, skal der vises en masselagringsenhed. Det er her, UF2 -filer kan uploades til programmering af tavlen.

Trin 4: Firmware: Blinkende kode med PlatformIO

Firmware: Blinkende kode med PlatformIO
Firmware: Blinkende kode med PlatformIO
Firmware: Blinkende kode med PlatformIO
Firmware: Blinkende kode med PlatformIO

Firmware kan uploades via UF2 -protokollen eller direkte via SWD -grænsefladen. Her bruger vi PlatformIO for sin lethed og enkelhed. For at komme i gang skal du oprette et nyt PIO -projekt og vælge Adafruit Feather M0 som målbræt. Når du uploader over SWD med en J-Link, skal du angive upload_protokollen i platformio.ini som vist nedenfor.

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

Nu kan du programmere tavlen med enkelheden i Arduino -rammerne.

Trin 5: Firmware: Blinker ankeret

Firmware: Blinker ankeret
Firmware: Blinker ankeret
Firmware: Blinker ankeret
Firmware: Blinker ankeret

DWM1000 -modulerne kan konfigureres til at være ankre eller tags. Generelt opbevares ankre på kendte statiske steder, og mærker bruger ankre til at få en relativ position til dem. For at teste DWM1000-modulet kan du uploade DW1000-Anchor-eksemplet fra GitHub-depotet.

For at blinke dette program med PlatformIO fra PIO Home, skal du vælge Åbn projekt og derefter finde placeringen af DW1000-Anchor-mappen i GitHub-depotet. Klik derefter på knappen PIO -upload, og den finder automatisk den vedhæftede fejlsøgningssonde (sørg for, at den er tilsluttet, og kortet er strømført).

Mærkets firmware skal uploades til et andet bord. Derefter kan resultatet ses i en seriel terminal.

Trin 6: Gå videre

Går videre
Går videre

Yderligere forbedringer af dette projekt vil omfatte udvikling af et nyt DW1000 -bibliotek, V1.1 -bord ændrer andre projekter, der udnytter denne omfattende teknologi. Hvis der er tilstrækkelig interesse, vil jeg overveje at fremstille og sælge disse plader.

Tak fordi du læste. Efterlad tanker eller kritikpunkter i kommentarerne herunder, og sørg for at tjekke projektet på Prototyping Corner

Anbefalede: