Spisu treści:

Pióro lokalizacji UWB: 6 kroków
Pióro lokalizacji UWB: 6 kroków

Wideo: Pióro lokalizacji UWB: 6 kroków

Wideo: Pióro lokalizacji UWB: 6 kroków
Wideo: Polowanie z psem na pióro - Zew Natury #113 #duck hjunting #Entenjagd #hunting with a dog 2024, Listopad
Anonim
Pióro lokalizacji UWB
Pióro lokalizacji UWB

Ultra-WideBand Feather zawiera moduł Decawave DWM1000 i ATSAMD21 ARM Cortex M0 w obudowie piórkowej Adafruit. Moduł DWM1000 to moduł bezprzewodowy zgodny ze standardem IEEE802.15.4-2011 UWB, który umożliwia precyzyjne pozycjonowanie w pomieszczeniach i zapewnia wysoką szybkość transmisji danych, dzięki czemu ta płyta jest idealna do projektów robotyki, w których wymagana jest lokalizacja.

Cechy:– Decawave DWM1000 do precyzyjnego śledzenia– ARM Cortex M0 do szybkich i wydajnych aplikacji– Kompatybilny z Adafruit Feather do integracji z szerokim istniejącym ekosystemem– Interfejs SWD do programowania i debugowania aplikacji– Złącze USB-C– Zintegrowana ładowarka akumulatorów LiPo

Aby uzyskać pełny opis projektu i aktualizacje, zobacz ten projekt na mojej stronie Prototyping Corner pod adresem prototypingcorner.io/projects/uwb-feather

Sprzęt i oprogramowanie źródłowe dla tego projektu są dostępne w repozytorium GitHub.

Krok 1: Projektowanie sprzętu

Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu
Projektowanie sprzętu

Jak wspomniano we wstępie, UWB Feather składa się z ATSAMD21 ARM Cortext M0+ dla mózgu i modułu Decawave DWM1000 dla ultraszerokopasmowej sieci bezprzewodowej, w obudowie typu feather. Projekt jest stosunkowo prosty i składa się z 20 elementów BoM na dwuwarstwowej płytce drukowanej. Pinout jest kompatybilny z Adafruit M0 Feather

Ładowanie LiPo jest obsługiwane przez jednoogniwowy, w pełni zintegrowany kontroler zarządzania ładowaniem MCP73831. Napięcie akumulatora można monitorować na D9, jednak jeśli wymagany jest dostęp do wszystkich IO, JP1 można odciąć, aby zwolnić ten pin. Regulacja 3,3 V jest realizowana przez liniowy regulator niskiego spadku AP2112K-3.3, zapewniający do 600 mA.

Pinout jest w pełni kompatybilny z linią piór Adafruit M0, co ułatwia przenoszenie kodu. Linie DWM1000 IO są podłączone do magistrali SPI i cyfrowych pinów 2, 3 i 4 odpowiednio dla RST, IRQ i SPI_CS (które nie są widoczne przez nagłówek). D13 jest również podłączony do wbudowanej diody LED, co jest standardem w wielu płytach kompatybilnych z Arduino.

Programowanie można wykonać przez nagłówek SWD lub przez USB, jeśli jest załadowany odpowiednim programem ładującym, takim jak uf2-samdx1 firmy Microsoft. Zobacz oprogramowanie układowe, aby uzyskać więcej.

Uwaga dotycząca wersji 1.0

Wystąpił problem ze złączem USB-C w wersji 1 tej płyty. Użyty przeze mnie ślad nie zawierał wycięcia wymaganego do sposobu montażu wycięcia tego komponentu.

Wersja 1.1 będzie zawierała poprawkę do tego, a także dodanie złącza micro-b dla tych, którzy tego chcą. Zobacz uwagi dotyczące wersji 1.1 poniżej.

Zagadnienia projektowe dotyczące zestawienia komponentów i sprzętu w wersji 1.1 można znaleźć w opisie projektu.

Krok 2: Montaż

montaż
montaż
montaż
montaż
montaż
montaż
montaż
montaż

Przy zaledwie 20 elementach BoM i większości komponentów nie mniejszych niż 0603 (kondensatory kryształowe 2x to 0402), ręczny montaż tej płyty był łatwy. Miałem płytkę PCB i szablon lutowniczy wyprodukowany przez JLCPCB w matowej czerni z wykończeniem powierzchni ENIG.

Całkowity koszt 5 plansz (chociaż 10 nie miało różnicy w cenie) i szablonu to 68 AUD, z czego 42 USD to koszt wysyłki. Pierwsze zamówienie w JLCPCB i deski były bardzo wysokiej jakości z ładnym wykończeniem.

Krok 3: Oprogramowanie układowe: programowanie bootloadera

Firmware: programowanie bootloadera
Firmware: programowanie bootloadera
Firmware: programowanie bootloadera
Firmware: programowanie bootloadera
Firmware: programowanie bootloadera
Firmware: programowanie bootloadera

Firmware można załadować przez złącze SWD za pomocą programatora, takiego jak J-Link firmy Segger. Powyżej pokazano J-Link EDU Mini. Aby rozpocząć programowanie płytki, musimy załadować nasz bootloader, a następnie skonfigurować nasz łańcuch narzędzi.

Do flashowania bootloadera będę używał Atmel Studio. Aby to zrobić, podłącz J-Link i otwórz Atmel Studio. Następnie wybierz Narzędzia > Programowanie urządzenia. W menu Tool wybierz J-Link i ustaw Device na ATSAMD21G18A, a następnie kliknij Apply.

Podłącz J-Link do nagłówka SWD piórkowego i podłącz zasilanie przez USB lub przez baterię. Po połączeniu, pod Podpisem urządzenia kliknij Czytaj. Pola tekstowe Device Signature i Target Voltage powinny się odpowiednio rozmnażać. Jeśli nie sprawdzają połączeń i spróbuj ponownie.

Aby sflashować bootloader, musimy najpierw wyłączyć bezpiecznik BOOTPROT. Aby to zrobić, wybierz Bezpieczniki > USER_WORD_0. NVMCTRL_BOOTPROT i zmień na 0 bajtów. Kliknij Program, aby przesłać zmiany.

Teraz możemy flashować bootloader wybierając Memories > Flash i ustawiając lokalizację bootloadera. Upewnij się, że opcja Wymaż Flash przed programowaniem jest zaznaczona i kliknij Program. Jeśli wszystko pójdzie dobrze, na tablicy powinno zacząć pulsować D13.

Teraz musisz ustawić bezpiecznik BOOTPROT na rozmiar bootloadera 8kB. Aby to zrobić, wybierz Bezpieczniki > USER_WORD_0. NVMCTRL_BOOTPROT i zmień na 8192 bajtów. Kliknij program, aby przesłać zmiany.

Teraz, gdy bootloader został sflashowany, D13 powinien pulsować i jeśli jest podłączony przez USB, powinno pojawić się urządzenie pamięci masowej. Tutaj można wgrać pliki UF2 do programowania płytki.

Krok 4: Oprogramowanie układowe: migający kod z PlatformIO

Oprogramowanie układowe: kod migający z PlatformIO
Oprogramowanie układowe: kod migający z PlatformIO
Oprogramowanie układowe: kod migający z PlatformIO
Oprogramowanie układowe: kod migający z PlatformIO

Oprogramowanie układowe można wgrać przez protokół UF2 lub bezpośrednio przez interfejs SWD. Tutaj będziemy używać PlatformIO ze względu na łatwość i prostotę. Aby rozpocząć, stwórz nowy projekt PIO i wybierz Adafruit Feather M0 jako płytkę docelową. Podczas przesyłania przez SWD z J-Link ustaw upload_protocol w platformio.ini, jak pokazano poniżej.

[env:adafruit_feather_m0]platforma = tablica atmelsam = adafruit_feather_m0 framework = arduino upload_protocol = jlink

Teraz możesz zaprogramować płytkę z prostotą frameworka Arduino.

Krok 5: Oprogramowanie układowe: Flashowanie kotwicy

Oprogramowanie układowe: miganie kotwicy
Oprogramowanie układowe: miganie kotwicy
Oprogramowanie układowe: miganie kotwicy
Oprogramowanie układowe: miganie kotwicy

Moduły DWM1000 można skonfigurować jako kotwice lub znaczniki. Ogólnie kotwice są przechowywane w znanych lokalizacjach statycznych, a znaczniki używają kotwic, aby uzyskać względem nich pozycję względną. Aby przetestować moduł DWM1000, możesz przesłać przykład DW1000-Anchor z repozytorium GitHub.

Aby sflashować ten program za pomocą PlatformIO, z PIO Home wybierz Open Project, a następnie znajdź lokalizację folderu DW1000-Anchor w repozytorium GitHub. Następnie kliknij przycisk przesyłania PIO, a automagicznie znajdzie podłączoną sondę debugowania (upewnij się, że jest podłączona i płyta jest zasilana).

Oprogramowanie sprzętowe znacznika będzie musiało zostać przesłane na inną płytkę. Następnie wynik można obejrzeć w terminalu szeregowym.

Krok 6: Idź dalej

Idąc dalej
Idąc dalej

Dalsze ulepszenia tego projektu obejmą rozwój nowej biblioteki DW1000, tablica V1.1 zmienia inne projekty, które wykorzystują tę technologię. Jeśli będzie wystarczające zainteresowanie, rozważę wyprodukowanie i sprzedaż tych płyt.

Dziękuje za przeczytanie. Zostaw wszelkie przemyślenia lub uwagi krytyczne w komentarzach poniżej i koniecznie sprawdź projekt na Prototyping Corner

Zalecana: