Sisukord:

RC tasapinna kõrgusmõõtur (ühildub Spektrumi telemeetriaga): 7 sammu
RC tasapinna kõrgusmõõtur (ühildub Spektrumi telemeetriaga): 7 sammu

Video: RC tasapinna kõrgusmõõtur (ühildub Spektrumi telemeetriaga): 7 sammu

Video: RC tasapinna kõrgusmõõtur (ühildub Spektrumi telemeetriaga): 7 sammu
Video: Lennuki video 2024, November
Anonim
RC tasapinna kõrgusmõõtur (ühildub Spektrumi telemeetriaga)
RC tasapinna kõrgusmõõtur (ühildub Spektrumi telemeetriaga)

Ma tegin selle kõrgusemõõtja selleks, et piloot saaks teada, et nad on USA -s RC -lennukitel alla 400 jala piiri. Mu sõber oli mures, kuna ta ei saanud kindlalt öelda, et ta on alati alla 400 jala pikk, ja soovis täiendavat kinnitust, mida telemeetriaandmetega andur pakub. Jah, saate anduri osta Spektrumist, kuid saate selle projekti ehitada vähem kui 20 dollari eest koos murdelaudadega (mis on juba hinnast üles pumbatud). Kui teil on juba J-linki programmeerija, saate selle mõne dollari eest kohandatud tahvlile ehitada. Rääkimata sellest, kui olete Xbusi protokollist aru saanud, saate teha mis tahes muid toetatud andureid! Kuid ma katan selles projektis lihtsalt altimeetri …

Osade nimekiri:

  • Ma kasutasin selle projekti jaoks Seeeduino XIAO mikrokontrolleri plaati, kuna see on pisike, kasutab M0 protsessorit, millel on selle projekti jaoks palju energiat, nii I2C kui ka SPI on karbist välja lülitamiseks valmis ja kasutab 3,3 V loogikat, nii et taseme nihutamine pole võimalik nõutud.

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

  • Õhurõhu tuvastamiseks ostsin Adafruitilt BMP388 murdeplaadi. Tahvlil on nii I2C kui ka SPI välja töötatud ning see võib töötada 3.3v või 5v loogikaga.

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

  • Protoboard vooluringi ühendamiseks
  • Jootekolb/jootekolb
  • Meeste/naiste tihvtide päised, et saaksin anduri/mikrokontrolleri hõlpsalt lahti võtta.
  • Väike nupp. Kasutan seda algkõrguse lähtestamiseks.
  • 10k takisti nupu allalaadimiseks.
  • JST-XH 4-kontaktiline naissoost pistik Spektrumi vastuvõtja telemeetriaporti ühendamiseks
  • SEGGER J-Link EDU programmeerija välgutab M0 ilma alglaadijata.

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

  • Adafruit SWD 10-pin pistikuplaat

    www.adafruit.com/product/2743

Tarvikud

  • Trükkisin 3D -ga ka oma altimeetri jaoks väikese korpuse, kuid seda pole vaja.
  • Ostsilloskoop- kui teil seda pole, soovitan seda väga:

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

1. samm: õppige Spektrumi telemeetriaprotokolli

Õppige Spektrumi telemeetriaprotokolli
Õppige Spektrumi telemeetriaprotokolli
Õppige Spektrumi telemeetriaprotokolli
Õppige Spektrumi telemeetriaprotokolli
Õppige Spektrumi telemeetriaprotokolli
Õppige Spektrumi telemeetriaprotokolli

Seda tegi minu jaoks enamasti Raymond Domingo. Nad olid juba teinud Spektrumiga ühilduva kõrguse mõõtja, nii et selle lähtekoodi järgimine aitas tõesti. Spektrumi telemeetria andmeleht täitis ülejäänud lüngad. Andmetasandite mõõtmine vastuvõtjast välja näitas, et mul oleks vaja 3.3v loogikat.

Vastuvõtja saadab seadme aadressi ja ootab seejärel 16-baidist vastust. Andmeleht näitab kõigi erinevate andurite struktuure. Isegi kui struktuur ei ole 16 baiti pikk, ootab vastuvõtja iga kord tagasi 16 baiti.

Spektrumi andmeleht:

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

Raymond Domingo projekt:

www.aerobtec.com/download/altisSpektrumInte…

Samm: valige Riistvara

Valige Riistvara
Valige Riistvara
Valige Riistvara
Valige Riistvara
Valige Riistvara
Valige Riistvara

Rõhu tuvastamiseks kasutasin Adafruit'i BMP388 katkestusplaati. Breakout pakub I2C ja SPI katkestusi ning töötab 3.3v või 5v loogikaga. Adafruit teeb oma murdelaudadega alati hämmastavat tööd, nii et ostsin selle. Kasutasin oma ehituses DFRobot Gravity BMP388 tahvlit, kuna mu Adafruit -plaat oli juba kasutusel.

Arvestades, et host I2C seade kasutab 3.3v loogikat, vajasin 3,3v mikrokontrollerit ja tahtsin, et see oleks väike. Ma kavatsesin kasutada Adafruit Trinket M0, kuid need on suhteliselt kallid ja neil pole väga palju tihvte. Siis leidsin Seeeduino XIAO plaadi. See on M0-plaat, millel on nii I2C kui ka SPI kasutusvalmis, koos USB-C-pistikuga. Lisaks on see tõesti väike! Üldiselt mulle see plaat väga meeldib (kuigi aeglase käivitamise kristall võttis mul igaveseks aru).

Spektrum kasutab vastuvõtjas JST-XH suurusega 4-kontaktilist meessoost pistikut "Xbus" pordi jaoks, mida me kasutame. Kasutasin kõrgusemõõtjal 4-kontaktilist JST-XH pistikut ja see töötas suurepäraselt.

Samm: kirjutage tarkvara

Kogu koodi kirjutamiseks kasutasin Arduino IDE -d. Kopeerisin Spektrumi telemeetriaprotokolli nende andmelehelt välja ja lisasin selle oma Arduino raamatukokku. Kuna Adafruitil on alati häid raamatukogusid, kasutasin nende BMP3XX raamatukogu BMP388 anduri jaoks.

Minu disaini peamised väljavõtted on järgmised:

  • Seadistage I2C nii, et see käituks kliendiseadmena ja vastaks Spektrumi kõrgusemõõtja aadressile (0x12).
  • Lugege BMP388 baromeetrit läbi SPI.
  • Salvestage kõrgusandmed kahte erinevasse puhvrisse, et vastuvõtja I2C -päring andmeid ei rikuks, ja vaheldumisi kahe puhvri vahel andmete toomisel. See tagab, et vastuvõtjale saadetud andmed on alati täielikud.
  • Kasutab altimeetri nullimiseks nuppu.

Lisateavet ja koodianalüüsi leiate videost.

Samm: ühendage ahel vooluvõrku

Juhtige vooluring
Juhtige vooluring
Juhtige vooluring
Juhtige vooluring
Juhtige vooluring
Juhtige vooluring
Juhtige vooluring
Juhtige vooluring

Ma kasutasin protoboardi, kuid kui soovite võtta aega kohandatud freesitud plaadi kujundamiseks, võiksite vooluringi palju puhtamaks muuta.

Ühendasin JST-XH pistiku XIAO I2C tihvtidega. Kuna vastuvõtja väljastab telemeetria siinile 5 volti, läks siinist positiivne XIAO VCC tihvtile. Nii kasutatakse rongisisest 3.3V regulaatorit BMP388 anduri toiteks.

Samm: kompileerige ilma alglaadurita

Koosta ilma alglaadurita
Koosta ilma alglaadurita
Koosta ilma alglaadurita
Koosta ilma alglaadurita
  1. Leidke fail boards.txt (mis tahes tahvli jaoks, mida kasutate).

    Minu puhul asus see siin: C: / Users / AppData / Local / Arduino15 Packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Kopeerige oma plaat ja nimetage esimene võti ümber, et määrata alglaaduri versioon. Lisasin just _nbl algsele nimele.

    • Vana: seeed_XIAO_m0
    • Uus: seeed_XIAO_m0_nbl
  3. Muutke.name väärtust:

    • Vana: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Uus: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. Muutke linkijat vilkuma ilma alglaadurita, muutes ehitaja ld -skripti:

    • Vana: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Uus: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Taaskäivitage Arduino IDE.
  6. Valige tahvlite menüüst uus tahvel "Seeeduino XIAO No Bootloader".
  7. Valige käsk "Ekspordi kompileeritud binaarfail"
  8. Pärast koostamist on.bin -fail teie Arduino projekti kaustas.

6. samm: välk MCU J-Linki abil

Välk MCU J-Linki abil
Välk MCU J-Linki abil
Välk MCU J-Linki abil
Välk MCU J-Linki abil
Välk MCU J-Linki abil
Välk MCU J-Linki abil

Adafruitil on fantastiline juhend alglaaduri ümberprogrammeerimiseks M0/M4 seadmes. Meie puhul tahame alglaadurist lahti saada, kuid see toimib samamoodi.

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

Kui olete seda teinud, ei saa te koodi USB kaudu üles laadida. Saate järgida ülaltoodud juhendit, et käivituslaadur seadmesse tagasi laadida, et koodi uuesti USB kaudu üles laadida, nagu tehasest suutsite.

Adafruit'i juhend on väga põhjalik, kuid need on põhilised sammud:

  1. Jootke hüppaja juhtmed XIAO plaadi tagaküljele.

    • Adafruit juhendis ei öeldud, et 2x5 purunemisplaadi RST -tihvt tuleb ühendada Adafruit -tahvlite lähtestusnõelaga. Kuid XIAO jaoks oli mul vaja ühendada kõigi nelja plaadi tagaküljel asuva padjaga.
    • VREF -i tihvt tuleb ühendada XIAO 3.3v -tihvtiga. See ütleb silurile, et seadme loogika on 3.3v. Ilma selleta, kui valite vale valiku, võite mikrokontrollerit kahjustada.
  2. Ühendage hüppaja juhtmed J-Linki külge.
  3. Lülitage XIAO -plaat sisse USB -kaabli abil.
  4. Ava Atmel Studio.
  5. Valige Tööriistad Seadme programmeerimine
  6. Valige oma M0 -plaat. Sel juhul ATSAMD21G18A
  7. Valige SWD.
  8. Lugege sihtmärgist konfiguratsiooni.
  9. Kui kasutate EDU J-Linki, nõustuge kasutustingimustega (kui järgite kasutustingimusi).
  10. Veenduge, et pinge näit on paremas ülanurgas õige. Kui see pole 3.3v, võite oma plaadi purustada!
  11. Tühjendage alglaadimiskaitsme kaitse (määrake alglaaduri suuruseks 0 baiti) ja seejärel valige programm.
  12. Valige mälestuste jaotises oma kompileeritud.bin- või.hex -fail ja valige programm.

Tõrkeotsing:

Seadme konfiguratsiooni lugedes, kui saate vea vahemikust väljapoole, veenduge, et MCU on vooluvõrku ühendatud ja et J-Link VREF-pin on ühendatud 3,3-voldise pingega

Samm: kompileerige uuesti ilma välise kristallita

Kompileeri uuesti ilma välise kristallita
Kompileeri uuesti ilma välise kristallita

XIAO plaadil on väline kristall, mille käivitamine võtab kaua aega. Spektrumi vastuvõtja teeb telemeetriasiinil seadme avastamise 350 millisekundit pärast sisselülitamist, seega peame ütlema kompilaatorile, et see kasutaks sisemist ostsillaatorit, mis muudab käivitamise peaaegu koheseks.

  1. Otsige üles fail board.txt, mida varem muutsite (jah, oleksin võinud selle sammu varem salvestada, kuid see oli minu jaoks õppimisprotsess)
  2. Lisage stringile seeed_XIAO_m0_nbl.build.extra_flags "-DCRYSTALLESS". See käsib kompilaatoril kasutada sisemist ostsillaatorit.
  3. Kompileerige kood uuesti.
  4. Välgutage MCU uuesti.
  5. Kontrollige ostsilloskoobi abil, et käivitusaeg on piisavalt kiire.

Nagu pildilt näha, on kollane kanal 1 toiteallikas. Tsüaanikanal 2 on mikrokontrolleri valmis tihvt. Umbes 10 millisekundit pärast sisselülitamist tõmbab mikrokontroller teise kanali kõrgele, mis näitab, et see on seadistusahelas. Kui seadistamine on tehtud, kodeeritakse MCU, et tõmmata tihvt madalale, mis näitab, et põhiahel on algamas. Ulatus näitab, et seadistamine võtab aega umbes 3 millisekundit. Üldiselt kulub mikrokontrolleril pärast sisselülitamist 13 millisekundit, et see oleks töövalmis.

Soovitan: