Inhoudsopgave:

UWB-lokalisatieveer - Ajarnpa
UWB-lokalisatieveer - Ajarnpa

Video: UWB-lokalisatieveer - Ajarnpa

Video: UWB-lokalisatieveer - Ajarnpa
Video: Консультант от бога Tg: cadrolikk 2024, Juli-
Anonim
UWB-lokalisatieveer
UWB-lokalisatieveer

De Ultra-WideBand Feather bevat de Decawave DWM1000-module en een ATSAMD21 ARM Cortex M0 in de Adafruit-veervormfactor. De DWM1000-module is een IEEE802.15.4-2011 UWB-compatibele draadloze module die in staat is tot nauwkeurige positionering binnenshuis en hoge datasnelheden, waardoor dit bord perfect is voor roboticaprojecten waarbij lokalisatie vereist is.

Kenmerken:– Decawave DWM1000 voor nauwkeurige tracking– ARM Cortex M0 voor snelle en krachtige toepassingen– Compatibel met Adafruit Feather om te integreren met een breed bestaand ecosysteem– SWD-interface voor programmeer- en foutopsporingstoepassingen– USB-C-connector– Geïntegreerde LiPo-batterijlader

Voor de volledige beschrijving en updates van het project, bekijk dit project op mijn site Prototyping Corner op prototypingcorner.io/projects/uwb-feather

Bronhardware en -software voor dit project is beschikbaar via de GitHub-repository.

Stap 1: Hardware-ontwerp

Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp

Zoals in de inleiding vermeld, bestaat de UWB Feather uit een ATSAMD21 ARM Cortext M0+ voor de hersenen en een Decawave DWM1000 module voor de ultrawide band wireless, in de vorm van een veer. Het ontwerp is relatief eenvoudig en bestaat uit 20 stuklijsten op een 2-laags printplaat. Pinout is compatibel met Adafruit M0 Feather

LiPo-laden wordt afgehandeld door de MCP73831 eencellige, volledig geïntegreerde laadbeheercontroller. De batterijspanning kan worden gecontroleerd op D9, maar is toegang tot alle IO vereist, JP1 kan worden doorgesneden om deze pin vrij te maken. 3,3 volt-regeling wordt uitgevoerd door de AP2112K-3.3 lineaire regelaar met lage uitval, die tot 600 mA levert.

Pinout is volledig compatibel met de Adafruit M0 Feather-lijn voor gemakkelijke codeportabiliteit. De DWM1000 IO-lijnen zijn aangesloten op de SPI-bus en digitale pinnen 2, 3 & 4 voor respectievelijk RST, IRQ & SPI_CS (die niet zichtbaar zijn via de header). D13 is ook aangesloten op de ingebouwde LED, zoals standaard is bij veel Arduino-compatibele kaarten.

Programmeren kan worden uitgevoerd via de SWD-header of via USB indien geladen met een bijbehorende bootloader zoals de uf2-samdx1 van Microsoft. Zie firmware voor meer.

Opmerking over V1.0

Er is een probleem met de USB-C-connector op versie 1 van dit bord. De voetafdruk die ik heb gebruikt, bevatte niet de uitsparing die nodig is voor de uitsparingsmontagemethode van dit onderdeel.

Versie 1.1 zal hiervoor een oplossing bevatten en een micro-b-connector toevoegen voor degenen die dat willen. Zie versie 1.1 overwegingen hieronder.

Voor ontwerpoverwegingen van stuklijsten en hardwareversie 1.1, zie de projectbeschrijving.

Stap 2: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Met slechts 20 BoM-items en de meeste componenten die niet kleiner waren dan 0603 (de 2x kristalcondensatoren waren 0402), was de handmatige montage van dit bord eenvoudig. Ik had de PCB en soldeerstencil vervaardigd door JLCPCB in matzwart met ENIG-oppervlakteafwerking.

De totale kosten voor 5 borden (hoewel 10 geen prijsverschil hadden) en stencil waren $ 68 AUD, maar $ 42 daarvan was verzending. Eerste keer bestellen bij JLCPCB en boards waren van zeer hoge kwaliteit met een mooie afwerking.

Stap 3: Firmware: de bootloader programmeren

Firmware: de bootloader programmeren
Firmware: de bootloader programmeren
Firmware: de bootloader programmeren
Firmware: de bootloader programmeren
Firmware: de bootloader programmeren
Firmware: de bootloader programmeren

Firmware kan over de SWD-connector worden geladen met behulp van een programmeur zoals de J-Link van Segger. Hierboven is de J-Link EDU Mini te zien. Om te beginnen met het programmeren van het bord, moeten we onze bootloader laden en vervolgens onze gereedschapsketen instellen.

Ik ga Atmel Studio gebruiken om de bootloader te flashen. Sluit hiervoor de J-Link aan en open Atmel Studio. Selecteer vervolgens Extra > Apparaatprogrammering. Selecteer onder Tool de J-Link en stel Apparaat in op ATSAMD21G18A en klik vervolgens op Toepassen.

Sluit de J-Link aan op de veren SWD-header en schakel stroom in via USB of via de batterij. Eenmaal verbonden, klik onder Apparaathandtekening op Lezen. De tekstvakken Apparaathandtekening en Doelspanning moeten dienovereenkomstig worden verspreid. Als ze de verbindingen niet controleren en het opnieuw proberen.

Om de bootloader te flashen, moeten we eerst de BOOTPROT-zekering uitschakelen. Selecteer hiervoor Zekeringen > USER_WORD_0. NVMCTRL_BOOTPROT en verander naar 0 Bytes. Klik op Programma om de wijzigingen te uploaden.

Nu kunnen we de bootloader flashen door Memories > Flash te selecteren en de locatie van de bootloader in te stellen. Zorg ervoor dat Flash wissen voordat programmeren is geselecteerd en klik op Programmeren. Als alles goed gaat, zou D13 op het bord moeten beginnen te pulseren.

Nu moet je de BOOTPROT-zekering instellen op de 8kB bootloader-grootte. Selecteer hiervoor Zekeringen > USER_WORD_0. NVMCTRL_BOOTPROT en verander naar 8192 Bytes. Klik op programma om de wijzigingen te uploaden.

Nu de bootloader is geflitst, zou D13 moeten pulseren en als deze via USB is aangesloten, zou er een apparaat voor massaopslag moeten verschijnen. Hier kunnen UF2-bestanden worden geüpload voor het programmeren van het bord.

Stap 4: Firmware: code knipperen met PlatformIO

Firmware: knipperende code met PlatformIO
Firmware: knipperende code met PlatformIO
Firmware: knipperende code met PlatformIO
Firmware: knipperende code met PlatformIO

Firmware kan worden geüpload via het UF2-protocol of rechtstreeks via de SWD-interface. Hier zullen we PlatformIO gebruiken vanwege het gemak en de eenvoud. Maak om te beginnen een nieuw PIO-project aan en selecteer Adafruit Feather M0 als het doelbord. Bij het uploaden via SWD met een J-Link stelt u het upload_protocol in platformio.ini in zoals hieronder weergegeven.

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

Nu kunt u het bord programmeren met de eenvoud van het Arduino-framework.

Stap 5: Firmware: het anker knipperen

Firmware: het anker knipperen
Firmware: het anker knipperen
Firmware: het anker knipperen
Firmware: het anker knipperen

De DWM1000-modules kunnen worden geconfigureerd als ankers of tags. Over het algemeen worden ankers op bekende statische locaties bewaard en tags gebruiken ankers om een relatieve positie ten opzichte van hen te krijgen. Om de DWM1000-module te testen, kunt u het DW1000-Anchor-voorbeeld uploaden vanuit de GitHub-repository.

Om dit programma met PlatformIO te flashen, selecteert u vanuit PIO Home Project openen en zoekt u de locatie van de DW1000-Anchor-map in de GitHub-repository. Klik vervolgens op de PIO-uploadknop en het zal automatisch de bijgevoegde debug-sonde vinden (zorg ervoor dat deze is aangesloten en dat het bord is ingeschakeld).

De tag-firmware moet naar een ander bord worden geüpload. Vervolgens kan het resultaat worden bekeken in een seriële terminal.

Stap 6: Verder gaan

Verder gaan
Verder gaan

Verdere verbeteringen aan dit project zijn onder meer de ontwikkeling van een nieuwe DW1000-bibliotheek, het V1.1-bord verandert andere projecten die deze uitgebreide technologie gebruiken. Bij voldoende interesse zal ik overwegen om deze boards te vervaardigen en te verkopen.

Bedankt voor het lezen. Laat eventuele gedachten of kritiek achter in de reacties hieronder en bekijk het project op Prototyping Corner