Pendë e lokalizimit të UWB: 6 hapa
Pendë e lokalizimit të UWB: 6 hapa
Anonim
Pendë e lokalizimit të UWB
Pendë e lokalizimit të UWB

Penda Ultra-WideBand përfshin modulin Decawave DWM1000 dhe një ATSAMD21 ARM Cortex M0 në faktorin e formës së pendës Adafruit. Moduli DWM1000 është një modul pa tel i pajtueshëm me IEEE802.15.4-2011 UWB i aftë për pozicionim të saktë të brendshëm dhe shkallë të lartë të të dhënave, duke e bërë këtë tabelë të përsosur për projektet robotike ku kërkohet lokalizimi.

Karakteristikat:-Decawave DWM1000 për përcjellje të saktë-ARM Cortex M0 për aplikime të shpejta dhe të fuqishme-Adafruit Feather i pajtueshëm për t'u integruar me një ekosistem të gjerë ekzistues-ndërfaqe SWD për programimin dhe korrigjimin e aplikacioneve-lidhës USB-C-Ngarkues i integruar i baterisë LiPo

Për shkrimin dhe përditësimin e plotë të projektit shikoni këtë projekt në faqen time Prototyping Corner në prototypingcorner.io/projects/uwb-feather

Hardueri dhe softueri burimor për këtë projekt janë në dispozicion nga Depoja e GitHub.

Hapi 1: Dizajni i harduerit

Dizajni i harduerit
Dizajni i harduerit
Dizajni i harduerit
Dizajni i harduerit
Dizajni i harduerit
Dizajni i harduerit

Siç u përmend në hyrje, UWB Feather përbëhet nga një ATSAMD21 ARM Cortext M0+ për trurin dhe një modul Decawave DWM1000 për brezin ultra të gjerë pa tel, në faktorin e formës së pendës. Dizajni është relativisht i thjeshtë i përbërë nga 20 artikuj BoM në një PCB me 2 shtresa. Pinout është i pajtueshëm me Adafruit M0 Feather

Karikimi LiPo trajtohet nga kontrolluesi i menaxhimit të ngarkesës me një qelizë MCP73831, plotësisht i integruar. Tensioni i baterisë mund të monitorohet në D9, megjithatë është e nevojshme qasja në të gjithë IO, JP1 mund të pritet për të liruar këtë kunj. Rregullimi 3.3 volt është paraformuar nga rregullatori linear i braktisjes së ulët AP2112K-3.3, duke siguruar deri në 600mA.

Pinout është plotësisht në përputhje me linjën e pendës Adafruit M0 për transportueshmëri të lehtë të kodit. Linjat DWM1000 IO janë të lidhura me autobusin SPI dhe kunjat dixhitale 2, 3 & 4 për RST, IRQ & SPI_CS me respekt (të cilat nuk ekspozohen përmes kokës). D13 është gjithashtu i lidhur me LED në bord, siç është standardi në mesin e shumë bordeve të pajtueshëm me Arduino.

Programimi mund të paraformohet mbi kokën SWD ose përmes USB nëse ngarkohet me një ngarkues ngarkues përkatës siç është uf2-samdx1 nga Microsoft. Shihni firmware -in për më shumë.

Shënim në V1.0

Ka një problem me lidhësin USB-C në versionin 1 të këtij bordi. Gjurma që kam përdorur nuk përfshinte prerjen e kërkuar për metodën e montimit të prerjes të këtij komponenti.

Versioni 1.1 do të përfshijë një rregullim për këtë, si dhe shtimin e një lidhësi mikro-b për ata që e duan atë. Shih konsideratat e versionit 1.1 më poshtë.

Për Projektligjin e Materialeve dhe Hardware Version 1.1 konsideratat e projektimit shikoni shkrimin e projektit.

Hapi 2: Montimi

Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi

Me vetëm 20 artikuj BoM dhe shumica e përbërësve që nuk ishin më të vegjël se 0603 (kondensatorët kristalorë 2x ishin 0402), montimi me dorë i kësaj bordi ishte i lehtë. Unë kisha klishe PCB dhe lidhës të prodhuar nga JLCPCB në të zezë mat me përfundim sipërfaqësor ENIG.

Kostoja totale për 5 dërrasa (megjithëse 10 nuk kishin diferencë çmimi) dhe klishe ishte 68 dollarë AUD, megjithatë 42 dollarë nga ajo ishin transporti. Për herë të parë porositë nga JLCPCB dhe bordet ishin të një cilësie shumë të lartë me përfundim të bukur.

Hapi 3: Firmware: Programimi i Bootloader

Firmware: Programimi i Bootloader
Firmware: Programimi i Bootloader
Firmware: Programimi i Bootloader
Firmware: Programimi i Bootloader
Firmware: Programimi i Bootloader
Firmware: Programimi i Bootloader

Firmware mund të ngarkohet mbi lidhësin SWD duke përdorur një programues siç është J-Link nga Segger. E treguar më lart është J-Link EDU Mini. Për të filluar programimin e bordit, duhet të ngarkojmë ngarkuesin tonë të ngarkuar dhe pastaj të krijojmë zinxhirin tonë të veglave.

Unë do të përdor Atmel Studio për të ndezur ngarkuesin. Për ta bërë këtë, lidhni J-Link dhe hapni Atmel Studio. Pastaj zgjidhni Mjetet> Programimi i pajisjes. Nën Tool zgjidhni J-Link dhe vendosni Pajisjen në ATSAMD21G18A pastaj klikoni Apliko.

Lidhni J-Link me kokën SWD të pendës dhe aplikoni energji ose përmes USB ose përmes baterisë. Pasi të lidheni, nën Nënshkrimin e Pajisjes klikoni Lexo. Kutitë e tekstit të nënshkrimit të pajisjes dhe tensionit të synuar duhet të përhapen në përputhje me rrethanat. Nëse ata nuk i kontrollojnë lidhjet dhe provoni përsëri.

Për të ndezur bootloader, së pari duhet të çaktivizojmë siguresën BOOTPROT. Për ta bërë këtë, zgjidhni Siguresat> USER_WORD_0. NVMCTRL_BOOTPROT dhe ndryshoni në 0 Bajt. Klikoni Program për të ngarkuar ndryshimet.

Tani mund ta ndezim ngarkuesin duke zgjedhur Memories> Flash dhe të vendosim vendndodhjen e bootloader. Sigurohuni Erase Flash para se të zgjidhet programimi dhe klikoni Program. Nëse gjithçka shkon mirë D13 në tabelë duhet të fillojë të pulsojë.

Tani do t'ju duhet të vendosni siguresën BOOTPROT në madhësinë e ngarkuesit 8kB. Për ta bërë këtë, zgjidhni Siguresat> USER_WORD_0. NVMCTRL_BOOTPROT dhe ndryshoni në 8192 Bajt. Klikoni programin për të ngarkuar ndryshimet.

Tani që ngarkuesi i ngarkimit është ndezur D13 duhet të pulsojë dhe nëse lidhet me USB, duhet të shfaqet një pajisje për ruajtje masive. Kjo është ajo ku skedarët UF2 mund të ngarkohen për programimin e bordit.

Hapi 4: Firmware: Kodi ndezës me PlatformIO

Firmware: Kodi ndezës me PlatformIO
Firmware: Kodi ndezës me PlatformIO
Firmware: Kodi ndezës me PlatformIO
Firmware: Kodi ndezës me PlatformIO

Firmware mund të ngarkohet mbi protokollin UF2 ose drejtpërdrejt përmes ndërfaqes SWD. Këtu do të përdorim PlatformIO për lehtësinë dhe thjeshtësinë e tij. Për të filluar të krijoni një projekt të ri PIO dhe zgjidhni Adafruit Feather M0 si tabelën e synuar. Kur ngarkoni mbi SWD me një J-Link vendosni protokollin upload_ në platformio.ini siç tregohet më poshtë.

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

Tani mund ta programoni bordin me thjeshtësinë e kornizës Arduino.

Hapi 5: Firmware: Ndezje e spirancës

Firmware: Ndezje e spirancës
Firmware: Ndezje e spirancës
Firmware: Ndezje e spirancës
Firmware: Ndezje e spirancës

Modulet DWM1000 mund të konfigurohen të jenë spiranca ose etiketa. Në përgjithësi spirancat mbahen në vende të njohura statike dhe etiketat përdorin spiranca për të marrë një pozicion relativ ndaj tyre. Për të testuar modulin DWM1000 mund të ngarkoni shembullin DW1000-Anchor nga depoja GitHub.

Për ta ndezur këtë program me PlatformIO, nga PIO Home, zgjidhni Open Project pastaj gjeni vendndodhjen e dosjes DW1000-Anchor në depon GitHub. Pastaj klikoni butonin e ngarkimit PIO dhe do të gjejë automatikisht sondën e bashkangjitur të korrigjimit (sigurohuni që është e lidhur dhe bordi është i ndezur).

Firmware i etiketës do të duhet të ngarkohet në një tabelë tjetër. Pastaj rezultati mund të shihet në një terminal serial.

Hapi 6: Shkoni Më tej

Duke shkuar Më tej
Duke shkuar Më tej

Përmirësimet e mëtejshme të këtij projekti do të përfshijnë zhvillimin në një bibliotekë të re DW1000, bordi V1.1 ndryshon projekte të tjera që përdorin këtë teknologji të larmishme. Nëse ka interes të mjaftueshëm, unë do të konsideroj prodhimin dhe shitjen e këtyre bordeve.

Faleminderit per leximin. Lini çdo mendim ose kritikë në komentet më poshtë dhe sigurohuni që të shikoni projektin në Këndin e Prototipimit