INHOUDSOPGAWE:

UWB -lokaliseringsveer: 6 stappe
UWB -lokaliseringsveer: 6 stappe

Video: UWB -lokaliseringsveer: 6 stappe

Video: UWB -lokaliseringsveer: 6 stappe
Video: Создание BMW Digital Key Plus для Android с BMW OS8 — Руководство BMW 2024, November
Anonim
UWB -lokalisasieveer
UWB -lokalisasieveer

Die Ultra-WideBand Feather bevat die Decawave DWM1000-module en 'n ATSAMD21 ARM Cortex M0 in die Adafruit-veervormfaktor. Die DWM1000-module is 'n IEEE802.15.4-2011 UWB-voldoenbare draadlose module wat presiese binnenshuise posisionering en hoë datatempo's kan maak, wat hierdie bord perfek maak vir robotika-projekte waar lokalisering benodig word.

Kenmerke:-Decawave DWM1000 vir presiese opsporing-ARM Cortex M0 vir vinnige en kragtige toepassings-Adafruit Feather verenigbaar om te integreer met 'n wye bestaande ekosisteem-SWD-koppelvlak vir programmering en ontfoutingstoepassings-USB-C-aansluiting-Geïntegreerde LiPo-batterylaaier

Vir die volledige opskrywing en opdaterings van die projek, kyk na hierdie projek op my webwerf Prototyping Corner by prototypingcorner.io/projects/uwb-feather

Bronhardeware en sagteware vir hierdie projek is beskikbaar by die GitHub Repository.

Stap 1: Hardeware -ontwerp

Hardeware -ontwerp
Hardeware -ontwerp
Hardeware -ontwerp
Hardeware -ontwerp
Hardeware -ontwerp
Hardeware -ontwerp

Soos in die inleiding genoem, bestaan die UWB Feather uit 'n ATSAMD21 ARM Cortext M0+ vir die brein en 'n Decawave DWM1000-module vir die ultra-wye band draadloos, in die veervormfaktor. Die ontwerp is relatief eenvoudig en bestaan uit 20 BoM-items op 'n 2-laags PCB. Pinout is versoenbaar met Adafruit M0 Feather

LiPo-laai word hanteer deur die MCP73831-enkelselle, volledig geïntegreerde beheerbestuurder vir laai. Batteryspanning kan op D9 gemonitor word, maar toegang tot al die IO is nodig; JP1 kan afgesny word om hierdie pen vry te laat. 3.3 volt-regulering word gevorm deur die AP2112K-3.3 lineêre reguleerder met 'n lae uitval, wat tot 600mA bied.

Pinout is ten volle versoenbaar met die Adafruit M0 veerlyn vir maklike draagbaarheid van die kode. Die DWM1000 IO -lyne is respekvol gekoppel aan die SPI -bus en digitale penne 2, 3 en 4 vir RST, IRQ en SPI_CS (wat nie via die koptekst blootgestel word nie). D13 is ook gekoppel aan die ingeboude LED, soos standaard onder baie Arduino-versoenbare borde.

Die programmering kan vooraf op die SWD-kop of via USB gevorm word as dit gelaai word met 'n ooreenstemmende selflaaiprogram, soos die uf2-samdx1 van Microsoft. Sien firmware vir meer.

Nota op V1.0

Daar is 'n probleem met die USB-C-aansluiting op weergawe 1 van hierdie bord. Die voetspoor wat ek gebruik het, bevat nie die uitsny wat nodig is vir die monteermetode van hierdie komponent nie.

Weergawe 1.1 bevat 'n oplossing hiervoor, sowel as 'n mikro-b-aansluiting vir diegene wat dit wil hê. Sien weergawes 1.1 oorwegings hieronder.

Raadpleeg die opstel van die projek vir materiaalontwerp en hardeware weergawe 1.1.

Stap 2: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Met slegs 20 BoM -items en die meeste komponente nie kleiner as 0603 nie (die 2x kristalkondensators was 0402), was dit maklik om hierdie bord met die hand te monteer. Ek het die PCB en soldeerstensil deur JLCPCB in mat swart met ENIG -oppervlakafwerking laat vervaardig.

Totale koste vir 5 borde (hoewel 10 geen prysverskil gehad het nie) en sjabloon was $ 68 AUD, maar $ 42 daarvan was gestuur. Die eerste keer dat ek by JLCPCB en planke bestel het, was van baie hoë gehalte met 'n mooi afwerking.

Stap 3: Firmware: programmeer die opstartlaaier

Firmware: programmeer die selflaaiprogram
Firmware: programmeer die selflaaiprogram
Firmware: programmeer die selflaaiprogram
Firmware: programmeer die selflaaiprogram
Firmware: programmeer die selflaaiprogram
Firmware: programmeer die selflaaiprogram

Firmware kan oor die SWD-aansluiting gelaai word met behulp van 'n programmeerder soos die J-Link van Segger. Hierbo is die J-Link EDU Mini. Om die bord te begin programmeer, moet ons ons selflaaiprogram laai en dan ons gereedskapsketting opstel.

Ek sal Atmel Studio gebruik om die selflaaiprogram te flits. Om dit te doen, koppel die J-Link aan en maak Atmel Studio oop. Kies dan Tools> Device Programming. Kies onder Tool die J-Link en stel Device op ATSAMD21G18A en klik dan op Apply.

Koppel die J-Link aan die SWD-kop van die veer en gebruik krag via USB of via die battery. Sodra dit gekoppel is, klik onder Toestelhandtekening op Lees. Die teksblokkies Apparaathandtekening en Doelspanning moet dienooreenkomstig versprei. As hulle nie die verbindings nagaan nie en probeer weer.

Om die selflaaiprogram te laat flits, moet ons eers die BOOTPROT -lont uitskakel. Om dit te doen, kies Sekerings> USER_WORD_0. NVMCTRL_BOOTPROT en verander na 0 Bytes. Klik op Program om die veranderinge op te laai.

Nou kan ons die selflaaiprogram flits deur Memories> Flash te kies en die ligging van die selflaaiprogram in te stel. Maak seker dat Vee Flash uit voordat programmering gekies word en klik op Program. As alles goed gaan, moet D13 op die bord begin pols.

Nou moet u die BOOTPROT -lont instel op die grootte van 8kB selflaaiprogram. Om dit te doen, kies Sekerings> USER_WORD_0. NVMCTRL_BOOTPROT en verander na 8192 Bytes. Klik op die program om die veranderinge op te laai.

Noudat die selflaaiprogram geflits is, moet D13 pols en as dit via USB ingeprop word, moet 'n massa -opbergingstoestel verskyn. Dit is waar UF2 -lêers opgelaai kan word vir die programmering van die bord.

Stap 4: Firmware: flitsende kode met PlatformIO

Firmware: flitsende kode met PlatformIO
Firmware: flitsende kode met PlatformIO
Firmware: flitsende kode met PlatformIO
Firmware: flitsende kode met PlatformIO

Firmware kan via die UF2 -protokol of direk via die SWD -koppelvlak opgelaai word. Hier gebruik ons PlatformIO vanweë sy gemak en eenvoud. Om aan die gang te kom, skep 'n nuwe PIO -projek en kies Adafruit Feather M0 as die teikenbord. As u via SWD met 'n J-Link oplaai, stel die upload_protocol in platformio.ini soos hieronder getoon.

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

Nou kan u die bord met die eenvoud van die Arduino -raamwerk programmeer.

Stap 5: Firmware: flits die anker

Firmware: flits die anker
Firmware: flits die anker
Firmware: flits die anker
Firmware: flits die anker

Die DWM1000 -modules kan gekonfigureer word om ankers of etikette te wees. Oor die algemeen word ankers op bekende statiese plekke gehou en etikette gebruik ankers om 'n relatiewe posisie daaroor te kry. Om die DWM1000-module te toets, kan u die DW1000-Anchor-voorbeeld vanaf die GitHub-bewaarplek oplaai.

Om hierdie program met PlatformIO te flits, kies Open Project in PIO Home en vind die ligging van die DW1000-Anchor-lêergids in die GitHub-bewaarplek. Klik dan op die PIO -oplaai -knoppie, en dit vind outomaties die aangehegte ontfoutingsondersoek (sorg dat dit gekoppel is en die bord met krag is).

Die tag -firmware moet na 'n ander bord opgelaai word. Dan kan die resultaat in 'n seriële terminaal besigtig word.

Stap 6: Gaan verder

Gaan verder
Gaan verder

Verdere verbeterings aan hierdie projek sal die ontwikkeling van 'n nuwe DW1000 -biblioteek insluit, die V1.1 -bord verander ander projekte wat gebruik maak van hierdie omvangryke tegnologie. As daar genoegsame belangstelling is, sal ek dit oorweeg om hierdie borde te vervaardig en te verkoop.

Dankie vir die lees. Laat enige gedagtes of kritiek in die kommentaar hieronder, en kyk gerus na die projek op Prototyping Corner

Aanbeveel: