Innehållsförteckning:

UWB -lokaliseringsfjäder: 6 steg
UWB -lokaliseringsfjäder: 6 steg

Video: UWB -lokaliseringsfjäder: 6 steg

Video: UWB -lokaliseringsfjäder: 6 steg
Video: Ultra Wide-band Time-of-Arrival/Time-difference-of-Arrival Position Estimation (51891/PKEK/FYP) 2024, Juli
Anonim
UWB -lokaliseringsfjäder
UWB -lokaliseringsfjäder

Ultra-WideBand Feather innehåller Decawave DWM1000-modulen och en ATSAMD21 ARM Cortex M0 i Adafruit-fjäderformfaktorn. DWM1000-modulen är en IEEE802.15.4-2011 UWB-kompatibel trådlös modul med precision inomhuspositionering och höga datahastigheter, vilket gör detta kort perfekt för robotprojekt där lokalisering krävs.

Funktioner:-Decawave DWM1000 för precisionsspårning-ARM Cortex M0 för snabba och kraftfulla applikationer-Adafruit Feather-kompatibel för att integreras med ett brett existerande ekosystem-SWD-gränssnitt för programmering och felsökning av applikationer-USB-C-kontakt-Integrerad LiPo-batteriladdare

För hela projektbeskrivningen och uppdateringarna se det här projektet på min webbplats Prototyping Corner på prototypingcorner.io/projects/uwb-feather

Källmaskinvara och programvara för detta projekt är tillgängligt från GitHub -förvaret.

Steg 1: Hårdvarudesign

Hårdvarudesign
Hårdvarudesign
Hårdvarudesign
Hårdvarudesign
Hårdvarudesign
Hårdvarudesign

Som nämnts i inledningen består UWB-fjädern av en ATSAMD21 ARM Cortext M0+ för hjärnorna och en Decawave DWM1000-modul för det ultrabreda bandet trådlöst, i fjäderformfaktorn. Designen är relativt enkel och består av 20 BoM-föremål på ett 2-lager PCB. Pinout är Adafruit M0 Feather -kompatibel

LiPo-laddning hanteras av MCP73831 encells, fullt integrerad laddningshanteringskontroller. Batterispänning kan övervakas på D9, men tillgång till all IO krävs. JP1 kan skäras för att frigöra denna stift. 3,3 volt reglering är förformad av AP2112K-3.3 linjär regulator med lågt utfall, som ger upp till 600mA.

Pinout är fullt kompatibel med Adafruit M0 -fjäderlinjen för enkel kodportabilitet. DWM1000 IO -ledningarna är anslutna till SPI -bussen och digitala stift 2, 3 & 4 för RST, IRQ & SPI_CS respektivt (som inte exponeras via rubriken). D13 är också ansluten till den inbyggda lysdioden, som är standard bland många Arduino-kompatibla kort.

Programmering kan förformas över SWD-rubriken eller via USB om den laddas med en motsvarande bootloader, till exempel uf2-samdx1 från Microsoft. Se firmware för mer.

Obs på V1.0

Det finns ett problem med USB-C-kontakten på version 1 av detta kort. Det fotavtryck som jag använde inkluderade inte den urskärning som krävs för att montera metoden för denna komponent.

Version 1.1 kommer att innehålla en fix för detta samt att lägga till en mikro-b-kontakt för dem som vill ha det. Se version 1.1 överväganden nedan.

För konstruktionshänsyn för material- och hårdvaruversion 1.1, se projektbeskrivningen.

Steg 2: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Med endast 20 BoM -föremål och de flesta komponenterna var inte mindre än 0603 (2x kristallkondensatorer var 0402), var det enkelt att montera detta kort. Jag hade PCB och lödstencil tillverkad av JLCPCB i matt svart med ENIG ytfinish.

Total kostnad för 5 brädor (även om 10 inte hade någon prisskillnad) och stencil var $ 68 AUD, men $ 42 av det var frakt. Första gången jag beställde från JLCPCB och brädor var av mycket hög kvalitet med fin finish.

Steg 3: Firmware: 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

Firmware kan laddas över SWD-kontakten med en programmerare som J-Link från Segger. Ovan visas J-Link EDU Mini. För att börja programmera kortet måste vi ladda vår bootloader och sedan ställa in vår verktygskedja.

Jag kommer att använda Atmel Studio för att blinka startladdaren. För att göra det, anslut J-Link och öppna Atmel Studio. Välj sedan Verktyg> Enhetsprogrammering. Välj J-Link under Verktyg och ställ in Enhet på ATSAMD21G18A och klicka sedan på Verkställ.

Anslut J-Link till fjäderns SWD-huvud och strömförsörj antingen via USB eller via batteriet. När du är ansluten, klicka på Läs under Enhetssignatur. Textrutorna Enhetssignatur och målspänning bör spridas i enlighet därmed. Om de inte kontrollerar anslutningarna och försöker igen.

För att blinka startladdaren måste vi först inaktivera BOOTPROT -säkringen. För att göra detta, välj Säkringar> USER_WORD_0. NVMCTRL_BOOTPROT och byt till 0 Bytes. Klicka på Program för att ladda upp ändringarna.

Nu kan vi blinka startladdaren genom att välja Minnen> Flash och ange platsen för startladdaren. Se till att Radera Flash innan programmering väljs och klicka på Program. Om allt går bra ska D13 på tavlan börja puls.

Nu måste du ställa in BOOTPROT -säkringen på 8kB bootloader -storlek. För att göra detta, välj Säkringar> USER_WORD_0. NVMCTRL_BOOTPROT och byt till 8192 byte. Klicka på programmet för att ladda upp ändringarna.

Nu när startladdaren har blinkat ska D13 vara pulserande och om den är ansluten via USB ska en masslagringsenhet visas. Det är här UF2 -filer kan laddas upp för att programmera kortet.

Steg 4: Firmware: Blinkande kod med PlatformIO

Firmware: Blinkande kod med PlatformIO
Firmware: Blinkande kod med PlatformIO
Firmware: Blinkande kod med PlatformIO
Firmware: Blinkande kod med PlatformIO

Firmware kan laddas upp via UF2 -protokollet eller direkt via SWD -gränssnittet. Här kommer vi att använda PlatformIO för sin lätthet och enkelhet. För att komma igång, skapa ett nytt PIO -projekt och välj Adafruit Feather M0 som målbräda. När du laddar upp över SWD med en J-Link ställer du in upload_protocol i platformio.ini enligt nedan.

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

Nu kan du programmera tavlan med enkelheten i Arduino -ramverket.

Steg 5: Firmware: blinkar ankaret

Firmware: blinkar ankaret
Firmware: blinkar ankaret
Firmware: blinkar ankaret
Firmware: blinkar ankaret

DWM1000 -modulerna kan konfigureras till ankare eller taggar. Generellt hålls ankare på kända statiska platser och taggar använder ankare för att få en relativ position till dem. För att testa DWM1000-modulen kan du ladda upp DW1000-Anchor-exemplet från GitHub-förvaret.

För att blinka detta program med PlatformIO, från PIO Home, välj Öppna projekt och hitta platsen för mappen DW1000-Anchor i GitHub-förvaret. Klicka sedan på PIO -uppladdningsknappen så kommer den automatiskt att hitta den bifogade felsökningssonden (se till att den är ansluten och att kortet är strömförsörjt).

Etikettens firmware måste laddas upp till ett annat kort. Sedan kan resultatet ses i en seriell terminal.

Steg 6: Gå vidare

Går längre
Går längre

Ytterligare förbättringar av detta projekt kommer att innefatta utveckling av ett nytt DW1000 -bibliotek, V1.1 -kort ändrar andra projekt som använder denna omfattande teknik. Om det finns tillräckligt intresse kommer jag att överväga att tillverka och sälja dessa brädor.

Tack för att du läser. Lämna några tankar eller kritik i kommentarerna nedan och se till att kolla in projektet på Prototyping Corner

Rekommenderad: