Innholdsfortegnelse:

UWB Localization Feather: 6 trinn
UWB Localization Feather: 6 trinn

Video: UWB Localization Feather: 6 trinn

Video: UWB Localization Feather: 6 trinn
Video: 3D dynamic testing UWB IMU indoor localization performance using robotic arm 2024, Juli
Anonim
UWB Localization Feather
UWB Localization Feather

Ultra-WideBand Feather inkorporerer Decawave DWM1000-modulen og en ATSAMD21 ARM Cortex M0 i Adafruit fjærformfaktor. DWM1000-modulen er en IEEE802.15.4-2011 UWB-kompatibel trådløs modul som kan presisjon innendørs posisjonering og høye datahastigheter, noe som gjør dette kortet perfekt for robotprosjekter der lokalisering er nødvendig.

Funksjoner:-Decawave DWM1000 for presisjonssporing-ARM Cortex M0 for raske og kraftige applikasjoner-Adafruit Feather-kompatibel for integrering med et bredt eksisterende økosystem-SWD-grensesnitt for programmering og feilsøking-USB-C-kontakt-Integrert LiPo-batterilader

For hele prosjektoppskrifter og oppdateringer, se dette prosjektet på nettstedet mitt Prototyping Corner på prototypingcorner.io/projects/uwb-feather

Kildevare og programvare for dette prosjektet er tilgjengelig fra GitHub -depotet.

Trinn 1: Maskinvaredesign

Maskinvaredesign
Maskinvaredesign
Maskinvaredesign
Maskinvaredesign
Maskinvaredesign
Maskinvaredesign

Som nevnt i innledningen består UWB Feather av en ATSAMD21 ARM Cortext M0+ for hjernen og en Decawave DWM1000-modul for det ultrabrede båndet trådløst, i fjærformfaktoren. Designet er relativt enkelt og består av 20 BoM-elementer på en 2-lags PCB. Pinout er kompatibel med Adafruit M0 Feather

LiPo-lading håndteres av MCP73831 enkeltcellet, fullt integrert ladestyringskontroller. Batterispenning kan overvåkes på D9, men tilgang til all IO er nødvendig. JP1 kan kuttes for å frigjøre denne pinnen. 3.3 volt regulering er forhåndsformet av AP2112K-3.3 lineær regulator med lavt frafall, som gir opptil 600mA.

Pinout er fullt kompatibel med Adafruit M0 fjærlinje for enkel kodeportabilitet. DWM1000 IO -linjene er koblet til SPI -bussen og digitale pinner 2, 3 og 4 for RST, IRQ og SPI_CS respektivt (som ikke blir eksponert via toppteksten). D13 er også koblet til innebygd LED, som standard blant mange Arduino-kompatible kort.

Programmering kan forhåndsformeres over SWD-overskriften eller via USB hvis den er lastet med en tilsvarende oppstartslaster, for eksempel uf2-samdx1 fra Microsoft. Se fastvare for mer.

Merknad på V1.0

Det er et problem med USB-C-kontakten på versjon 1 av dette kortet. Fotavtrykket jeg brukte inkluderte ikke utsnittet som kreves for utkoblingsmonteringsmetoden for denne komponenten.

Versjon 1.1 vil inneholde en løsning for dette, samt å legge til en mikro-b-kontakt for de som ønsker det. Se versjon 1.1 overveielser nedenfor.

For designhensyn for material- og maskinvareversjon 1.1, se prosjektoppføringen.

Trinn 2: Montering

montering
montering
montering
montering
montering
montering
montering
montering

Siden bare 20 BoM -elementer og de fleste komponentene ikke var mindre enn 0603 (2x krystallkondensatorer var 0402), var håndmontering av dette kortet enkelt. Jeg lot PCB og loddetinn sjablong produsere av JLCPCB i matt svart med ENIG overflatebehandling.

Total kostnad for 5 brett (selv om 10 ikke hadde noen prisforskjell) og sjablong var $ 68 AUD, men $ 42 av det var frakt. Første gang jeg bestilte fra JLCPCB og brett var av meget høy kvalitet med fin finish.

Trinn 3: Fastvare: Programmering av bootloader

Firmware: Programmering av bootloader
Firmware: Programmering av bootloader
Firmware: Programmering av bootloader
Firmware: Programmering av bootloader
Firmware: Programmering av bootloader
Firmware: Programmering av bootloader

Fastvare kan lastes over SWD-kontakten ved hjelp av en programmerer som J-Link fra Segger. J-Link EDU Mini er vist ovenfor. For å begynne å programmere brettet, må vi laste opp bootloader og deretter sette opp verktøykjeden.

Jeg kommer til å bruke Atmel Studio for å blinke bootloaderen. For å gjøre det, koble til J-Link og åpne Atmel Studio. Velg deretter Verktøy> Enhetsprogrammering. Velg J-Link under Verktøy og sett Enhet til ATSAMD21G18A, og klikk deretter Bruk.

Koble J-Link til fjær-SWD-hodet og koble til strøm enten via USB eller via batteriet. Når du er tilkoblet, klikker du på Les under enhetssignatur. Tekstboksene Enhetssignatur og Målspenning bør forplante seg deretter. Hvis de ikke sjekker tilkoblingene og prøver igjen.

For å blinke bootloaderen må vi først deaktivere BOOTPROT -sikringen. For å gjøre dette, velg Sikringer> USER_WORD_0. NVMCTRL_BOOTPROT og bytt til 0 Bytes. Klikk på Program for å laste opp endringene.

Nå kan vi blinke bootloaderen ved å velge Memories> Flash og angi plasseringen av bootloaderen. Sørg for Slett Flash før programmering er valgt, og klikk på Program. Hvis alt går bra, skal D13 på tavlen begynne å pulsere.

Nå må du sette BOOTPROT -sikringen til 8 kB bootloader -størrelse. For å gjøre dette, velg Sikringer> USER_WORD_0. NVMCTRL_BOOTPROT og endre til 8192 Bytes. Klikk på programmet for å laste opp endringene.

Nå som bootloaderen har blinket, skal D13 være pulserende, og hvis den er koblet til via USB, skal det vises en masselagringsenhet. Det er her UF2 -filer kan lastes opp for programmering av brettet.

Trinn 4: Fastvare: Blinkende kode med PlatformIO

Fastvare: Blinkende kode med PlatformIO
Fastvare: Blinkende kode med PlatformIO
Fastvare: Blinkende kode med PlatformIO
Fastvare: Blinkende kode med PlatformIO

Fastvare kan lastes opp via UF2 -protokollen eller direkte via SWD -grensesnittet. Her bruker vi PlatformIO for sin brukervennlighet og enkelhet. For å komme i gang, opprett et nytt PIO -prosjekt og velg Adafruit Feather M0 som målbrett. Når du laster opp over SWD med en J-Link, angir du upload_protocol i platformio.ini som vist nedenfor.

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

Nå kan du programmere brettet med enkelheten i Arduino -rammeverket.

Trinn 5: Fastvare: Blinker ankeret

Fastvare: Blinker ankeret
Fastvare: Blinker ankeret
Fastvare: Blinker ankeret
Fastvare: Blinker ankeret

DWM1000 -modulene kan konfigureres til å være ankere eller tagger. Vanligvis holdes ankre på kjente statiske steder, og tagger bruker ankre for å få en relativ posisjon til dem. For å teste DWM1000-modulen kan du laste opp DW1000-Anchor-eksemplet fra GitHub-depotet.

For å blinke dette programmet med PlatformIO, fra PIO Home, velg Open Project og finn plasseringen til DW1000-Anchor-mappen i GitHub-depotet. Klikk deretter på PIO -opplastingsknappen, og den vil automatisk finne den vedlagte feilsøkingssonden (sørg for at den er koblet til og at kortet er slått på).

Etikettens fastvare må lastes opp til et annet bord. Deretter kan resultatet sees i en seriell terminal.

Trinn 6: Gå videre

Gå videre
Gå videre

Ytterligere forbedringer av dette prosjektet vil inkludere utvikling av et nytt DW1000 -bibliotek, V1.1 -bord endrer andre prosjekter som bruker denne teknologien. Hvis det er tilstrekkelig interesse, vil jeg vurdere å produsere og selge disse platene.

Takk for at du leste. Legg igjen tanker eller kritikk i kommentarene nedenfor, og sjekk ut prosjektet på Prototyping Corner

Anbefalt: