Sisällysluettelo:

RC -tasokorkeusmittari (yhteensopiva Spektrum -telemetrian kanssa): 7 vaihetta
RC -tasokorkeusmittari (yhteensopiva Spektrum -telemetrian kanssa): 7 vaihetta

Video: RC -tasokorkeusmittari (yhteensopiva Spektrum -telemetrian kanssa): 7 vaihetta

Video: RC -tasokorkeusmittari (yhteensopiva Spektrum -telemetrian kanssa): 7 vaihetta
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Heinäkuu
Anonim
RC -tasokorkeusmittari (yhteensopiva Spektrum -telemetrian kanssa)
RC -tasokorkeusmittari (yhteensopiva Spektrum -telemetrian kanssa)

Tein tämän korkeusmittarin, jotta lentäjä voisi tietää, että he ovat alle 400 jalan rajan RC -lentokoneissa Yhdysvalloissa. Ystäväni oli huolissaan, koska hän ei voinut sanoa varmasti, että hän oli aina alle 400 jalkaa, ja halusi lisävarmuutta siitä, että telemetriatietoja anturi antaisi. Kyllä, voit ostaa anturin Spektrumilta, mutta voit rakentaa tämän projektin alle 20 dollarilla katkaisulaudoilla (joiden hinta on jo kohonnut). Jos sinulla on jo J-linkin ohjelmoija, voit rakentaa tämän mukautetulle levylle muutamalla dollarilla. Puhumattakaan, kun ymmärrät Xbus -protokollan, voit tehdä minkä tahansa muun tuetun anturin! Mutta tässä projektissa peitän vain korkeusmittarin …

Osaluettelo:

  • Käytin Seeeduino XIAO -mikro -ohjainkorttia tähän projektiin, koska se on pieni, käyttää M0 -prosessoria, jolla on runsaasti virtaa tähän projektiin, jossa on sekä I2C että SPI valmiina poistumaan laatikosta, ja käyttää 3,3 V: n logiikkaa, joten tason vaihtaminen ei ole mahdollista vaaditaan.

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • Ilmanpaineen tunnistusta varten ostin BMP388 -katkaisulaudan Adafruitilta. Levyllä on sekä I2C että SPI, ja se voi toimia 3.3v tai 5v logiikalla.

    https://www.adafruit.com/product/3966

  • Protoboard piirin kytkemiseen
  • Juotos/juotosrauta
  • Uros-/naarasliittimet, jotta voin helposti irrottaa anturin/mikro -ohjaimen.
  • Pieni painike. Käytän tätä nollauskorkeuden nollaamiseen.
  • 10k vastus painikkeen alasvetoa varten.
  • JST-XH 4-napainen naarasliitin, joka liitetään Spektrum-vastaanottimen telemetriaporttiin
  • SEGGER J-Link EDU -ohjelmoija M0: n salama ilman käynnistyslatainta.

    https://www.adafruit.com/product/3571

  • Adafruit SWD 10-nastainen katkaisukortti

    www.adafruit.com/product/2743

Tarvikkeet

  • 3D -tulostin myös pienen kotelon korkeusmittarilleni, mutta sitä ei tarvita.
  • Oskilloskooppi- Jos sinulla ei ole sitä, suosittelen tätä:

    https://store.digilentinc.com/analog-discovery-2-1…

Vaihe 1: Opi Spektrum -telemetriaprotokolla

Opi Spektrum -telemetriaprotokolla
Opi Spektrum -telemetriaprotokolla
Opi Spektrum -telemetriaprotokolla
Opi Spektrum -telemetriaprotokolla
Opi Spektrum -telemetriaprotokolla
Opi Spektrum -telemetriaprotokolla

Tämän teki enimmäkseen minulle Raymond Domingo. He olivat jo tehneet korkeusmittarin yhteensopivaksi Spektrumin kanssa, joten lähdekoodin noudattaminen todella auttoi. Spektrumin telemetria -tietolomake täytti loput aukot. Vastaanottimen tietotason mittaaminen osoitti, että tarvitsen 3.3v -logiikkaa.

Vastaanotin lähettää laitteen osoitteen ja odottaa sitten 16 tavun vastausta. Tietolomake näyttää kaikkien eri antureiden rakenteet. Vaikka rakenne ei ole 16 tavua pitkä, vastaanotin odottaa 16 tavua takaisin joka kerta.

Spektrum -tietolomake:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

Raymond Domingon projekti:

www.aerobtec.com/download/altisSpektrumInte…

Vaihe 2: Valitse Laitteisto

Valitse Laitteisto
Valitse Laitteisto
Valitse Laitteisto
Valitse Laitteisto
Valitse Laitteisto
Valitse Laitteisto

Käytin paineentunnistukseen Adafruitin BMP388 -katkaisulautaa. Breakout tarjoaa I2C- ja SPI -katkoksia ja toimii 3,3 tai 5 voltin logiikalla. Adafruit tekee aina hämmästyttävää työtä katkaisulautojensa kanssa, joten ostin sen. Käytin rakennuksessa DFRobot Gravity BMP388 -levyä, koska Adafruit -levyni oli jo käytössä.

Ottaen huomioon, että isäntä I2C -laite käyttää 3.3v -logiikkaa, tarvitsin 3.3v -mikrokontrollerin ja halusin sen olevan pieni. Aioin käyttää Adafruit Trinket M0: ta, mutta ne ovat suhteellisen kalliita, eikä niissä ole kovin monta nastaa. Sitten löysin Seeeduino XIAO -levyn. Se on M0-kortti, jossa on sekä I2C- että SPI-käyttövalmius ja jossa on USB-C-liitin. Lisäksi se on todella pieni! Kaiken kaikkiaan pidän todella tästä levystä (vaikka hidas käynnistyskide vei minut ikuisesti selvittämään).

Spektrum käyttää vastaanottimessa olevaa JST-XH-koon 4-nastaista urosliitintä "Xbus" -porttiin, jota napautamme. Käytin korkeusmittarissa 4-napaista JST-XH-naaraspistoketta ja se toimi täydellisesti.

Vaihe 3: Kirjoita ohjelmisto

Kirjoitin kaiken koodin Arduino IDE: llä. Kopioin Spektrum -telemetriaprotokollan heidän tietolomakkeestaan ja lisäsin sen Arduino -kirjastooni. Koska Adafruitilla on aina mukavia kirjastoja niiden purkautumiseen, käytin heidän BMP3XX -kirjastoaan BMP388 -anturille.

Suunnitteluni tärkeimmät poiminnat ovat:

  • Määritä I2C toimimaan asiakaslaitteena ja vastaamaan Spektrum -korkeusmittarin osoitteeseen (0x12).
  • Lue BMP388 -barometri SPI: n kautta.
  • Tallenna korkeustiedot kahteen eri puskuriin, jotta vastaanottimen I2C -pyyntö ei vioita tietoja, ja vaihda näiden kahden puskurin välillä tietoja haettaessa. Näin varmistetaan, että vastaanottajalle lähetetyt tiedot ovat aina täydellisiä.
  • Nollaa korkeusmittarin painikkeella.

Katso lisätietoja ja koodianalyysi videolta.

Vaihe 4: Johdota piiri

Johda piiri
Johda piiri
Johda piiri
Johda piiri
Johda piiri
Johda piiri
Johda piiri
Johda piiri

Käytin protoboardia, mutta jos haluat käyttää aikaa räätälöidyn jyrsityn levyn suunnitteluun, voit tehdä piiristä paljon puhtaamman.

Liitin JST-XH-liittimen XIAO: n I2C-nastoihin. Koska vastaanotin lähettää 5 volttia telemetriaväylälle, positiivinen väylältä meni XIAO: n VCC -nastaan. Tällä tavalla sisäistä 3.3v -säädintä käytetään BMP388 -anturin virransyöttöön.

Vaihe 5: Käännä ilman käynnistyslatainta

Käännä ilman käynnistyslatainta
Käännä ilman käynnistyslatainta
Käännä ilman käynnistyslatainta
Käännä ilman käynnistyslatainta
  1. Etsi boards.txt -tiedostosi (mille tahansa levylle, jota käytät).

    Minun tapauksessani se sijaitsi täällä: C: / Users / AppData / Local / Arduino15 / package / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Kopioi taulusi ja nimeä ensimmäinen avain uudelleen määrittämään ei -käynnistyslataimen versio. Lisäsin juuri _nbl alkuperäiseen nimeen.

    • Vanha: seeed_XIAO_m0
    • Uutta: seeed_XIAO_m0_nbl
  3. Muuta.name -arvo:

    • Vanha: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Uutta: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. Muokkaa linkittimen vilkkua ilman käynnistyslatainta muuttamalla rakentaja ld -skripti:

    • Vanha: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Uutta: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Käynnistä Arduino IDE uudelleen.
  6. Valitse uusi "Seeeduino XIAO No Bootloader" -levy levyt -valikosta.
  7. Valitse "Vie käännetty binääri"
  8. Kun.bin -tiedosto on koottu, se on Arduino -projektikansiossasi.

Vaihe 6: Flash MCU J-Linkillä

Flash MCU J-Linkillä
Flash MCU J-Linkillä
Flash MCU J-Linkillä
Flash MCU J-Linkillä
Flash MCU J-Linkillä
Flash MCU J-Linkillä

Adafruitilla on loistava opas käynnistyslataimen uudelleenohjelmointiin M0/M4 -laitteella. Meidän tapauksessamme haluamme päästä eroon käynnistyslataimesta, mutta se toimii samalla tavalla.

learn.adafruit.com/how-to-program-samd-boo…

Kun olet tehnyt tämän, et voi lähettää koodia USB: n kautta. Voit seurata yllä olevaa ohjetta ja käynnistää latauslaitteen takaisin laitteeseen ladataksesi koodin uudelleen USB: n kautta, kuten pystyit tehtaalta.

Adafruit -opas on erittäin perusteellinen, mutta nämä ovat perusvaiheet:

  1. Juotoshyppyjohdot XIAO -levyn takaosaan.

    • Adafruit -oppaassa ei sanottu, että 2x5 -murtokortin RST -nasta on liitettävä Adafruit -levyjen nollausnastaan. Mutta XIAO: n osalta minun piti muodostaa yhteys kaikkiin neljään levyn takana olevaan tyynyyn.
    • VREF -nasta on liitettävä XIAO 3.3v -nastaan. Tämä kertoo virheenkorjaajalle, että laitteen logiikka on 3.3v. Ilman sitä, jos valitset väärän vaihtoehdon, voit vahingoittaa mikro -ohjainta.
  2. Kytke hyppyjohtimet J-Linkiin.
  3. Käynnistä XIAO -kortti USB -kaapelilla.
  4. Avaa Atmel Studio.
  5. Valitse Työkalut Laiteohjelmointi
  6. Valitse M0 -korttisi. Tässä tapauksessa ATSAMD21G18A
  7. Valitse SWD.
  8. Lue kokoonpano kohteesta.
  9. Jos käytät EDU J-Linkiä, hyväksy käyttöehdot (jos noudatat käyttöehtoja).
  10. Tarkista, että jännitteen lukema on oikea oikeassa yläkulmassa. Jos se ei ole 3.3v, voit rikkoa levyn!
  11. Tyhjennä käynnistyssulake (aseta käynnistyslataimen kooksi 0 tavua) ja valitse sitten ohjelma.
  12. Valitse muistit -osiosta koottu.bin- tai.hex -tiedosto ja valitse ohjelma.

Ongelmien karttoittaminen:

Jos luet laitteen kokoonpanoa, jos saat jännitteen alueen ulkopuolella, varmista, että MCU on kytketty virtalähteeseen ja että J-Link VREF -tappi on kytketty 3,3 volttiin

Vaihe 7: Käännä uudelleen ilman ulkoista kristallia

Käännä uudelleen ilman ulkoista kristallia
Käännä uudelleen ilman ulkoista kristallia

XIAO -kortissa on ulkoinen kide, jonka käynnistyminen kestää kauan. Spektrum -vastaanotin tekee laitehaun telemetriaväylällä 350 millisekuntia käynnistyksen jälkeen, joten meidän on kerrottava kääntäjälle, että se käyttää sisäistä oskillaattoria, mikä tekee käynnistyksen lähes hetkelliseksi.

  1. Etsi aiemmin muokkaamasi boards.txt -tiedosto (kyllä, olisin voinut tallentaa tämän vaiheen aikaisemmin, mutta tämä oli minulle oppimisprosessi)
  2. Lisää "-DCRYSTALLESS" seeed_XIAO_m0_nbl.build.extra_flags -merkkijonoon. Tämä kehottaa kääntäjää käyttämään sisäistä oskillaattoria.
  3. Käännä koodi uudelleen.
  4. Salama MCU uudelleen.
  5. Varmista oskilloskoopilla, että käynnistymisaika on riittävän nopea.

Kuten kuvasta näkyy, keltainen kanava 1 on virtalähde. Syaani kanava 2 on mikrokontrollerin valmiinappi. Noin 10 millisekuntia käynnistyksen jälkeen mikro-ohjain vetää kanavaa kaksi korkealle, mikä osoittaa, että se on asetussilmukassa. Kun asennus on suoritettu, MCU koodataan vetämään tappi matalalle, mikä osoittaa, että pääsilmukka alkaa. Laajuus osoittaa, että asennus kestää noin 3 millisekuntia. Kaiken kaikkiaan mikrokontrolleri kestää 13 millisekuntia käynnistyksen jälkeen, jotta se on käyttövalmis.

Suositeltava: