
Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11

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



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




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 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 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


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

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:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg

Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg

Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg

Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg

Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg

Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)