Sisällysluettelo:

UWB -lokalisointiliuska: 6 vaihetta
UWB -lokalisointiliuska: 6 vaihetta

Video: UWB -lokalisointiliuska: 6 vaihetta

Video: UWB -lokalisointiliuska: 6 vaihetta
Video: KryptoMon - Gotta Trade 'em All ! - Daily Crypto Update 2024, Heinäkuu
Anonim
UWB -lokalisoinnin sulka
UWB -lokalisoinnin sulka

Ultra-WideBand Feather sisältää Decawave DWM1000 -moduulin ja ATSAMD21 ARM Cortex M0: n Adafruit-höyhenmuotoon. DWM1000-moduuli on IEEE802.15.4-2011 UWB-yhteensopiva langaton moduuli, joka kykenee tarkkaan paikannukseen sisätiloissa ja korkean tiedonsiirtonopeuden, joten tämä levy sopii täydellisesti robotiikkaprojekteihin, joissa tarvitaan lokalisointia.

Ominaisuudet:-Decawave DWM1000 tarkkaa seurantaa varten-ARM Cortex M0 nopeille ja tehokkaille sovelluksille-Adafruit Feather -yhteensopiva integroitavaksi laajaan ekosysteemiin-SWD-käyttöliittymä ohjelmointi- ja virheenkorjaussovelluksia varten-USB-C-liitin-Integroitu LiPo-laturi

Jos haluat nähdä koko projektin kirjoitukset ja päivitykset, katso tämä projekti sivustossani Prototyping Corner osoitteessa prototypingcorner.io/projects/uwb-feather

Tämän projektin lähdelaitteisto ja -ohjelmisto on saatavana GitHub -arkistosta.

Vaihe 1: Laitteiston suunnittelu

Laitteiston suunnittelu
Laitteiston suunnittelu
Laitteiston suunnittelu
Laitteiston suunnittelu
Laitteiston suunnittelu
Laitteiston suunnittelu

Kuten johdannossa mainittiin, UWB Feather koostuu ATSAMD21 ARM Cortext M0+: sta aivoille ja Decawave DWM1000 -moduulista erittäin laajakaistaiselle langattomalle, höyhenmuotoisena. Suunnittelu on suhteellisen yksinkertainen, ja se koostuu 20 BoM-tuotteesta 2-kerroksisella PCB: llä. Pinout on Adafruit M0 Feather -yhteensopiva

LiPo-latausta hoitaa yksisoluinen, täysin integroitu latauksenhallintaohjain MCP73831. Akun jännitettä voidaan valvoa D9: llä, mutta tarvitaan pääsy kaikkiin IO: iin, JP1 voidaan leikata vapauttamaan tämä nasta. 3,3 voltin säätö on esisuunniteltu AP2112K-3.3 matalan katkaisun lineaarisella säätimellä, joka tarjoaa jopa 600 mA.

Pinout on täysin yhteensopiva Adafruit M0 -höyhenlinjan kanssa, mikä helpottaa koodin siirtämistä. DWM1000 IO -linjat on kytketty SPI -väylään ja digitaalisiin nastoihin 2, 3 ja 4 RST-, IRQ- ja SPI_CS -järjestelmille (joita ei paljasteta otsikon kautta). D13 on myös kytketty sisäiseen LED-valoon, kuten vakiona monien Arduino-yhteensopivien levyjen joukossa.

Ohjelmointi voidaan suorittaa SWD-otsikon kautta tai USB: n kautta, jos se on ladattu vastaavalla käynnistyslataimella, kuten Microsoftin uf2-samdx1. Katso lisätietoja laiteohjelmistosta.

Huomautus V1.0: sta

Ongelma tämän kortin version 1 USB-C-liittimessä. Käyttämäni jalanjälki ei sisältänyt tämän komponentin katkaisuasennusta varten tarvittavaa aukkoa.

Versio 1.1 sisältää korjauksen tähän sekä micro-b-liittimen lisäämisen halukkaille. Katso alla olevat versiot 1.1.

Katso materiaaliluettelon ja laitteiston version 1.1 suunnittelunäkökohdat projektin kuvauksesta.

Vaihe 2: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Koska vain 20 BoM -osaa ja useimmat komponentit olivat vähintään 0603 (2x -kristallikondensaattorit olivat 0402), tämän levyn käsin kokoaminen oli helppoa. Minulla oli JLCPCB: n valmistama piirilevy ja juotoskaavain mattamustana ENIG -pintakäsittelyllä.

Kokonaiskustannukset 5 levylle (vaikka 10: llä ei ollut hintaeroa) ja kaavain oli 68 dollaria AUD, mutta siitä 42 dollaria oli toimitus. Ensimmäinen tilaus JLCPCB: ltä ja levyt olivat erittäin korkealaatuisia ja mukava viimeistely.

Vaihe 3: Laiteohjelmisto: Bootloaderin ohjelmointi

Laiteohjelmisto: Bootloaderin ohjelmointi
Laiteohjelmisto: Bootloaderin ohjelmointi
Laiteohjelmisto: Bootloaderin ohjelmointi
Laiteohjelmisto: Bootloaderin ohjelmointi
Laiteohjelmisto: Bootloaderin ohjelmointi
Laiteohjelmisto: Bootloaderin ohjelmointi

Laiteohjelmisto voidaan ladata SWD-liitännän kautta käyttämällä ohjelmoijaa, kuten Seggerin J-Link. Yllä on J-Link EDU Mini. Aloittaaksemme piirilevyn ohjelmoinnin meidän on ladattava käynnistyslatain ja asennettava työkaluketju.

Käytän Atmel Studiota käynnistyslataimen vilkuttamiseen. Liitä J-Link ja avaa Atmel Studio. Valitse sitten Työkalut> Laiteohjelmointi. Valitse työkalusta J-Link ja aseta Laitteen asetukseksi ATSAMD21G18A ja napsauta sitten Käytä.

Liitä J-Link höyhen SWD-otsakkeeseen ja kytke virta joko USB: n tai akun kautta. Kun yhteys on muodostettu, valitse Laitteen allekirjoitus -kohdasta Lue. Laitteen allekirjoitus- ja tavoitejännite -tekstiruutujen tulisi levitä vastaavasti. Jos he eivät tarkista yhteyksiä ja yritä uudelleen.

Käynnistyslataimen vilkuttamiseksi meidän on ensin poistettava BOOTPROT -sulake käytöstä. Voit tehdä tämän valitsemalla Sulakkeet> USER_WORD_0. NVMCTRL_BOOTPROT ja muuttamalla arvoksi 0 tavua. Lataa muutokset napsauttamalla Ohjelma.

Nyt voimme käynnistää käynnistyslataimen valitsemalla Muistit> Flash ja asettamaan käynnistyslataimen sijainnin. Varmista, että Erase Flash ennen ohjelmointia on valittuna, ja napsauta Program. Jos kaikki menee hyvin, D13 -levyn pitäisi alkaa pulssoida.

Nyt sinun on asetettava BOOTPROT -sulake 8 kb: n käynnistyslataimen kokoon. Voit tehdä tämän valitsemalla Sulakkeet> USER_WORD_0. NVMCTRL_BOOTPROT ja vaihtamalla 8192 tavuun. Lataa muutokset napsauttamalla ohjelmaa.

Nyt kun käynnistyslatain on välähtänyt, D13: n pitäisi vilkkua ja jos se on kytketty USB: n kautta, massamuistilaite tulee näkyviin. Täältä voidaan ladata UF2 -tiedostoja levyn ohjelmointia varten.

Vaihe 4: Laiteohjelmisto: Vilkkuva koodi PlatformIO: n kanssa

Laiteohjelmisto: Vilkkuva koodi PlatformIO: n kanssa
Laiteohjelmisto: Vilkkuva koodi PlatformIO: n kanssa
Laiteohjelmisto: Vilkkuva koodi PlatformIO: n kanssa
Laiteohjelmisto: Vilkkuva koodi PlatformIO: n kanssa

Laiteohjelmisto voidaan ladata UF2 -protokollan kautta tai suoraan SWD -liitännän kautta. Täällä käytämme PlatformIO: ta sen helppokäyttöisyyden ja yksinkertaisuuden vuoksi. Aloita luomalla uusi PIO -projekti ja valitsemalla kohdetauluksi Adafruit Feather M0. Kun lataat SWD: n kautta J-Linkillä, aseta upload_protokolla osoitteessa platformio.ini alla kuvatulla tavalla.

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

Nyt voit ohjelmoida levyn Arduino -kehyksen yksinkertaisuudella.

Vaihe 5: Laiteohjelmisto: Ankkurin vilkkuminen

Laiteohjelmisto: Ankkurin vilkkuminen
Laiteohjelmisto: Ankkurin vilkkuminen
Laiteohjelmisto: Ankkurin vilkkuminen
Laiteohjelmisto: Ankkurin vilkkuminen

DWM1000 -moduulit voidaan määrittää ankkureiksi tai tunnisteiksi. Yleensä ankkureita pidetään tunnetuissa staattisissa paikoissa ja tunnisteet käyttävät ankkureita saadakseen suhteellisen sijainnin niihin. Voit testata DWM1000-moduulia lataamalla esimerkin DW1000-Anchor GitHub-arkistosta.

Jos haluat käynnistää tämän ohjelman PlatformIO: n avulla, valitse PIO Home -sivulta Avaa projekti ja etsi sitten DW1000-Anchor-kansion sijainti GitHub-arkistosta. Napsauta sitten PIO -latauspainiketta ja se löytää automaattisesti liitetyn virheenkorjausanturin (varmista, että se on kytketty ja levyllä on virta).

Tagin laiteohjelmisto on ladattava toiselle levylle. Sitten tulos voidaan katsoa sarjapäätteessä.

Vaihe 6: Siirry pidemmälle

Mennä eteenpäin
Mennä eteenpäin

Tämän projektin lisäparannuksia ovat uuden DW1000 -kirjaston kehittäminen, V1.1 -levy muuttaa muita projekteja, jotka hyödyntävät tätä vaihtelevaa tekniikkaa. Jos kiinnostusta riittää, harkitsen näiden levyjen valmistusta ja myyntiä.

Kiitos lukemisesta. Jätä ajatuksia tai kritiikkiä alla oleviin kommentteihin ja tutustu Prototyping Corner -hankkeeseen

Suositeltava: