Kazalo:

Računalniški višinomer RC (združljiv s telemetrijo Spektrum): 7 korakov
Računalniški višinomer RC (združljiv s telemetrijo Spektrum): 7 korakov

Video: Računalniški višinomer RC (združljiv s telemetrijo Spektrum): 7 korakov

Video: Računalniški višinomer RC (združljiv s telemetrijo Spektrum): 7 korakov
Video: Не модели поездов, а модели автомобилей: Автоматизированная система транспортных средств 2024, Julij
Anonim
RC Plane Altimeter (združljivo s telemetrijo Spektrum)
RC Plane Altimeter (združljivo s telemetrijo Spektrum)

Ta višinomer sem naredil, da bi pilot vedel, da so na letalih RC v ZDA pod mejo 400 čevljev. Moj prijatelj je bil zaskrbljen, saj ni mogel zagotovo reči, da ima vedno manj kot 400 čevljev, in je želel dodatno zagotovilo, ki bi ga zagotovil senzor s telemetričnimi podatki. Da, senzor lahko kupite pri Spektrumu, vendar lahko ta projekt zgradite za manj kot 20 USD z odmičnimi ploščami (ki so že napihnjene v ceni). Če že imate programerja J-link, lahko to za nekaj dolarjev zgradite na plošči po meri. Da ne omenjam, ko razumete protokol Xbus, lahko naredite katerega od drugih podprtih senzorjev! Toda v tem projektu bom pokrival samo višinomer …

Seznam delov:

  • Za ta projekt sem uporabil ploščo mikrokrmilnika Seeeduino XIAO, saj je majhen, uporablja procesor M0, ki ima za ta projekt dovolj moči, ima I2C in SPI pripravljen za uporabo in uporablja 3.3v logiko, zato ni premikanja ravni zahtevano.

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

  • Za merjenje zračnega tlaka sem od Adafruit -a kupil prelomno ploščo BMP388. Na plošči sta tako I2C kot SPI, in lahko deluje pri logiki 3.3v ali 5v.

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

  • Protoboard za ožičenje vezja
  • Spajkalnik/spajkalnik
  • Moški/ženski zatiči, tako da lahko enostavno odstranim senzor/mikrokrmilnik.
  • Majhen gumb. To uporabljam za ponastavitev začetne višine.
  • 10k upor za spustni gumb.
  • 4-polni ženski konektor JST-XH za priključitev v telemetrijska vrata sprejemnika Spektrum
  • SEGGER J-Link EDU programer za utripanje M0 brez zagonskega nalagalnika.

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

  • Adafruit SWD 10-polna odklopna plošča
    • www.adafruit.com/product/2743

Zaloge

  • Natisnil sem tudi 3D ohišje za svoj višinomer, vendar to ni potrebno.
  • Osciloskop- če ga nimate, toplo priporočam tega:

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

1. korak: Naučite se protokola telemetrije Spektrum

Naučite se protokola telemetrije Spektrum
Naučite se protokola telemetrije Spektrum
Naučite se protokola telemetrije Spektrum
Naučite se protokola telemetrije Spektrum
Naučite se protokola telemetrije Spektrum
Naučite se protokola telemetrije Spektrum

To je zame večinoma naredil Raymond Domingo. Izdelali so že višinomer, združljiv s Spektrumom, zato je sledenje tej izvorni kodi resnično pomagalo. Tehnični list telemetrije Spektrum je zapolnil preostale vrzeli. Merjenje ravni podatkov iz sprejemnika je pokazalo, da potrebujem 3.3v logiko.

Sprejemnik pošlje naslov naprave in nato pričakuje 16-bajtni odgovor. Podatkovni list prikazuje strukture vseh različnih senzorjev. Tudi če struktura ni dolga 16 bajtov, sprejemnik vsakič pričakuje nazaj 16 bajtov.

Tehnični list Spektrum:

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

Projekt Raymonda Dominga:

www.aerobtec.com/download/altisSpektrumInte…

2. korak: Izberite Strojna oprema

Izberite Strojna oprema
Izberite Strojna oprema
Izberite Strojna oprema
Izberite Strojna oprema
Izberite Strojna oprema
Izberite Strojna oprema

Za zaznavanje tlaka sem uporabil odbojno ploščo BMP388 podjetja Adafruit. Prekinitev zagotavlja prekinitve I2C in SPI ter deluje pri logiki 3.3v ali 5v. Adafruit vedno naredi neverjetno delo s svojimi deskami, zato sem ga kupil. Namesto tega sem pri izdelavi uporabil ploščo DFRobot Gravity BMP388, saj je bila moja plošča Adafruit že v uporabi.

Glede na to, da gostiteljska naprava I2C uporablja 3.3v logiko, sem potreboval 3.3v mikrokontroler in želel sem, da je majhen. Nameraval sem uporabiti Adafruit Trinket M0, vendar so razmeroma dragi in nimajo veliko iztrganih zatičev. Potem sem našel ploščo Seeeduino XIAO. To je plošča M0 s pripravljenimi za uporabo I2C in SPI s priključkom USB-C. Poleg tega je res majhen! Na splošno mi je ta plošča zelo všeč (čeprav mi je počasen zagonski kristal vzel za vedno, da sem to ugotovil).

Spektrum uporablja 4-pinski moški konektor velikosti JST-XH na sprejemniku za vrata "Xbus", v katera se bomo dotaknili. Na višinomeru sem uporabil 4-polni ženski vtič JST-XH in deloval je odlično.

3. korak: Napišite programsko opremo

Za kodo sem napisal Arduino IDE. Prepisal sem protokol telemetrije Spektrum iz njihovega podatkovnega lista in ga dodal v svojo knjižnico Arduino. Ker ima Adafruit vedno lepe knjižnice za svoje izbruhe, sem za senzor BMP388 uporabil njihovo knjižnico BMP3XX.

Glavni zaključki mojega oblikovanja so:

  • Nastavite I2C, da se obnaša kot odjemalska naprava in se odziva na naslov višinomera Spektrum (0x12).
  • Preberite barometer BMP388 skozi SPI.
  • Podatke o nadmorski višini shranite v dva različna medpomnilnika, tako da zahteva I2C od sprejemnika ne pokvari podatkov, in pri prenašanju podatkov zamenjajte oba medpomnilnika. To zagotavlja, da so podatki, poslani prejemniku, vedno popolni.
  • Uporablja gumb za nastavitev višinomera na nič.

Za več podrobnosti in analizo kode si oglejte video.

4. korak: Ožičite vezje

Ožičite vezje
Ožičite vezje
Ožičite vezje
Ožičite vezje
Ožičite vezje
Ožičite vezje
Ožičite vezje
Ožičite vezje

Uporabil sem protoboard, če pa si želite vzeti čas za oblikovanje rezkane plošče po meri, bi lahko naredili vezje veliko čistejše.

Priključil sem konektor JST-XH na zatiče I2C XIAO. Ker sprejemnik oddaja 5 voltov na telemetrično vodilo, je pozitivni iz vodila šel na XIAO -ov VCC pin. Tako se vgrajeni regulator 3.3V uporablja za napajanje senzorja BMP388.

5. korak: Prevedite brez zagonskega nalagalnika

Prevedite brez zagonskega nalagalnika
Prevedite brez zagonskega nalagalnika
Prevedite brez zagonskega nalagalnika
Prevedite brez zagonskega nalagalnika
  1. Poiščite datoteko Board.txt (za katero koli ploščo, ki jo uporabljate).

    V mojem primeru se je nahajal tukaj: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt

  2. Kopirajte tablo in preimenujte prvi ključ, da določite različico brez zagonskega nalagalnika. Prvotnemu imenu sem dodal _nbl.

    • Staro: seeed_XIAO_m0
    • Novo: seeed_XIAO_m0_nbl
  3. Spremenite vrednost.name:

    • Staro: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Novo: seeed_XIAO_m0_nbl.name = Seeeduino XIAO brez zagonskega nalagalnika
  4. Spremenite povezovalnik, da utripa brez zagonskega nalagalnika, tako da spremenite ld skript graditelja:

    • Staro: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Novo: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with out _bootloader.ld
  5. Znova zaženite Arduino IDE.
  6. V meniju plošč izberite novo ploščo "Seeeduino XIAO No Bootloader".
  7. Izberite "Izvozi sestavljeno binarno datoteko"
  8. Ko je datoteka.bin prevedena, bo v mapi vašega projekta Arduino.

Korak: Flash MCU z J-Link

Flash MCU z J-Link
Flash MCU z J-Link
Flash MCU z J-Link
Flash MCU z J-Link
Flash MCU z J-Link
Flash MCU z J-Link

Adafruit ima fantastičen vodnik o ponovnem programiranju zagonskega nalagalnika na napravi M0/M4. V našem primeru se želimo znebiti zagonskega nalagalnika, vendar deluje na enak način.

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

Ko to storite, kode ne boste mogli naložiti prek USB -ja. Sledite zgornjemu priročniku, da zagonski nalagalnik znova namestite na napravo, da znova naložite kodo prek USB -ja, kot ste to storili iz tovarne.

Vodnik Adafruit je zelo temeljit, vendar so to osnovni koraki:

  1. Spajkalne žice za spajkanje na zadnji strani plošče XIAO.

    • V vodiču Adafruit ni bilo zapisano, da je treba pin RST na plošči 2x5 priključiti na pin za ponastavitev na ploščah Adafruit. Toda za XIAO sem se moral povezati z vsemi štirimi blazinicami na zadnji strani plošče.
    • VIN VREF je treba priključiti na XIAO 3.3v pin. Odpravljalec napak pove, da je logika naprave 3,3 V. Če ne izberete napačne možnosti, lahko poškodujete mikrokrmilnik.
  2. Mostične žice priključite na J-Link.
  3. Vklopite ploščo XIAO s kablom USB.
  4. Odprite studio Atmel.
  5. Izberite Orodja Programiranje naprav
  6. Izberite svojo ploščo M0. V tem primeru ATSAMD21G18A
  7. Izberite SWD.
  8. Preberite konfiguracijo s cilja.
  9. Če uporabljate EDU J-Link, se strinjajte s pogoji uporabe (če upoštevate pogoje uporabe).
  10. V zgornjem desnem kotu preverite, ali je odčitana napetost pravilna. Če ni 3.3v, bi lahko razbili tablo!
  11. Počistite varovalko za zaščito pred zagonom (nastavite velikost zagonskega nalagalnika na 0 bajtov) in izberite program.
  12. V razdelku spomini izberite prevedeno datoteko.bin ali.hex in izberite program.

Odpravljanje težav:

Ko preberete konfiguracijo naprave, če pride do napake izven območja, se prepričajte, da je MCU priključen na napajanje in da je pin J-Link VREF priključen na 3,3 volta

7. korak: Prekompilirajte brez zunanjega kristala

Ponovno prevedite brez zunanjega kristala
Ponovno prevedite brez zunanjega kristala

Plošča XIAO ima zunanji kristal, ki traja dolgo časa za zagon. Sprejemnik Spektrum odkrije napravo na telemetričnem vodilu 350 milisekund po vklopu, zato moramo prevajalniku povedati, naj namesto tega uporabi notranji oscilator, zaradi česar bo zagon skoraj takojšen.

  1. Poiščite datoteko board.txt, ki ste jo spremenili prej (ja, ta korak bi vam lahko prihranil že prej, vendar je bil to zame učni proces)
  2. V niz seeed_XIAO_m0_nbl.build.extra_flags dodajte "-DCRYSTALLESS". To bo prevajalniku povedalo, naj uporablja notranji oscilator.
  3. Ponovno sestavite kodo.
  4. Ponovno utripajte MCU.
  5. Z osciloskopom preverite, ali je zagonski čas dovolj hiter.

Kot lahko vidite na sliki, je rumeni kanal 1 napajalnik. Cyan kanal 2 je pripravljen pin na mikrokrmilniku. Približno 10 milisekund po vklopu mikrokrmilnik visoko potegne drugi kanal, kar pomeni, da je v nastavitveni zanki. Ko je nastavitev končana, je MCU kodiran tako, da povleče pin nizko, kar kaže, da se glavna zanka zažene. Obseg prikazuje, da namestitev traja približno 3 milisekunde. Na splošno mikrokontroler potrebuje 13 milisekund po vklopu, da je pripravljen za uporabo.

Priporočena: