Indholdsfortegnelse:
- Trin 1: Hardware Design
- Trin 2: Montering
- Trin 3: Firmware: Programmering af bootloader
- Trin 4: Firmware: Blinkende kode med PlatformIO
- Trin 5: Firmware: Blinker ankeret
- Trin 6: Gå videre
Video: UWB -lokaliseringsfjeder: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
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
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
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 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 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
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
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:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)