Sadržaj:

RC avionski visinomjer (kompatibilan sa Spektrum telemetrijom): 7 koraka
RC avionski visinomjer (kompatibilan sa Spektrum telemetrijom): 7 koraka

Video: RC avionski visinomjer (kompatibilan sa Spektrum telemetrijom): 7 koraka

Video: RC avionski visinomjer (kompatibilan sa Spektrum telemetrijom): 7 koraka
Video: Sly 2 Band of Thieves - PS2 | Longplay with commentary | Part 1/3 2024, Srpanj
Anonim
RC Plane Altimeter (kompatibilan sa Spektrum Telemetry)
RC Plane Altimeter (kompatibilan sa Spektrum Telemetry)

Napravio sam ovaj visinomjer kako bi pilot mogao znati da su ispod ograničenja od 400 stopa na zrakoplovima RC u SAD -u. Moj je prijatelj bio zabrinut jer nije mogao sa sigurnošću reći da je uvijek ispod 400 stopa i htio je dodatnu sigurnost koju će dati senzor s telemetrijskim podacima. Da, senzor možete kupiti od Spektruma, ali možete izgraditi ovaj projekt za manje od 20 USD s probojnim pločama (koje su već napuhane u cijeni). Ako već imate programera za J-link, ovo možete izgraditi na prilagođenoj ploči za nekoliko dolara. Da ne spominjemo, nakon što razumijete Xbus protokol, možete napraviti bilo koji drugi podržani senzor! Ali ja ću u ovom projektu samo pokriti visinomjer …

Popis dijelova:

  • Koristio sam ploču mikrokontrolera Seeeduino XIAO za ovaj projekt jer je malena, koristi M0 procesor koji ima dovoljno snage za ovaj projekt, ima i I2C i SPI spreman za izlazak iz kutije i koristi 3.3v logiku tako da nema promjene razine potreban.

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

  • Za mjerenje tlaka zraka kupio sam ploču za razbijanje BMP388 od Adafruit -a. Na ploči su razbijeni I2C i SPI, a može raditi na 3.3v ili 5v logici.

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

  • Protoboard za ožičenje kruga
  • Lemilica/lemilica
  • Muški/ženski pin zaglavlja tako da mogu lako odvojiti senzor/mikrokontroler.
  • Mali gumb. Koristim ovo za poništavanje početne visine.
  • 10k otpornik za povlačenje gumba.
  • JST-XH 4-polni ženski konektor za priključivanje u telemetrijski priključak prijemnika Spektrum
  • SEGGER J-Link EDU programer za bljeskanje M0 bez pokretačkog programa.

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

  • Adafruit SWD 10-pinska ploča za razbijanje

    www.adafruit.com/product/2743

Pribor

  • Također sam 3D ispisao malo kućište za svoj visinomjer, ali to nije potrebno.
  • Osciloskop- Ako ga nemate, toplo preporučujem ovaj:

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

Korak 1: Naučite protokol telemetrije Spektrum

Naučite protokol telemetrije Spektrum
Naučite protokol telemetrije Spektrum
Naučite protokol telemetrije Spektrum
Naučite protokol telemetrije Spektrum
Naučite protokol telemetrije Spektrum
Naučite protokol telemetrije Spektrum

To je za mene uglavnom učinio Raymond Domingo. Već su napravili visinomjer kompatibilan sa Spektrumom, pa je praćenje tog izvornog koda zaista pomoglo. Tehnički list telemetrije Spektrum ispunio je preostale praznine. Mjerenje razine podataka iz prijemnika pokazalo je da mi treba 3.3V logika.

Primatelj šalje adresu uređaja, a zatim očekuje odgovor od 16 bajta. Tehnički list prikazuje strukture svih različitih senzora. Čak i ako struktura nije dugačka 16 bajtova, prijemnik svaki put očekuje 16 bajtova natrag.

Tehnički list Spektrum:

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

Projekt Raymonda Dominga:

www.aerobtec.com/download/altisSpektrumInte…

Korak 2: Odaberite Hardver

Odaberite Hardver
Odaberite Hardver
Odaberite Hardver
Odaberite Hardver
Odaberite Hardver
Odaberite Hardver

Koristio sam BMP388 probojnu ploču iz Adafruta za mjerenje tlaka. Proboj osigurava proboje I2C i SPI, a radi na 3.3v ili 5v logici. Adafruit uvijek izvrsno radi sa svojim pločama za razbijanje, pa sam ga kupio. Umjesto toga, u svojoj sam izgradnji koristio ploču DFRobot Gravity BMP388 jer je moja ploča Adafruit već bila u upotrebi.

S obzirom na to da host I2C uređaj koristi 3.3v logiku, trebao mi je mikrokontroler 3.3v, a želio sam da bude mali. Htio sam koristiti Adafruit Trinket M0, ali oni su relativno skupi i nemaju puno izbijenih igala. Zatim sam pronašao Seeeduino XIAO ploču. To je M0 ploča s I2C i SPI spremnim za rad, s USB-C priključkom. Također, stvarno je sićušan! Sve u svemu, jako mi se sviđa ova ploča (iako mi je spor kristal za pokretanje trebao vječno da shvatim).

Spektrum koristi 4-pinski muški konektor veličine JST-XH na prijemniku za "Xbus" port u koji ćemo prisluškivati. Koristio sam 4-pinski ženski utikač JST-XH na visinomjeru i radio je savršeno.

Korak 3: Napišite softver

Koristio sam Arduino IDE za pisanje cijelog koda. Kopirao sam telemetrijski protokol Spektrum iz njihove podatkovne tablice i dodao ga u svoju Arduino knjižnicu. Budući da Adafruit uvijek ima lijepe knjižnice za svoje proboje, koristio sam njihovu knjižnicu BMP3XX za senzor BMP388.

Glavni zaključci mog dizajna su:

  • Postavite I2C da se ponaša kao klijentski uređaj i odgovara na adresu visinomjera Spektrum (0x12).
  • Očitajte barometar BMP388 kroz SPI.
  • Spremite podatke o nadmorskoj visini u dva različita međuspremnika kako I2C zahtjev od primatelja ne bi oštetio podatke te se pri dohvaćanju podataka izmjenjuju dva međuspremnika. Time se osigurava da su podaci poslani primatelju uvijek potpuni.
  • Koristi gumb za nuliranje visinomjera.

Za više detalja i analizu koda pogledajte video.

Korak 4: Ožičite krug

Ožičite krug
Ožičite krug
Ožičite krug
Ožičite krug
Ožičite krug
Ožičite krug
Ožičite krug
Ožičite krug

Koristio sam protoboard, ali ako želite odvojiti vrijeme za dizajn prilagođene glodane ploče, mogli biste učiniti krug mnogo čistijim.

Spojio sam JST-XH konektor na I2C pinove XIAO-a. Budući da prijamnik daje 5 volti na sabirnicu telemetrije, pozitiv sa sabirnice je otišao na XIAO -ov VCC pin. Na taj se način ugrađeni regulator od 3,3 V koristi za napajanje senzora BMP388.

Korak 5: Prevođenje bez pokretačkog programa

Prevesti bez pokretačkog programa
Prevesti bez pokretačkog programa
Prevesti bez pokretačkog programa
Prevesti bez pokretačkog programa
  1. Pronađite datoteku Board.txt (za bilo koju ploču koju koristite).

    U mom slučaju, nalazio se ovdje: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt

  2. Kopirajte ploču i preimenujte prvi ključ da biste naveli verziju bez pokretačkog programa. Upravo sam dodao _nbl izvornom imenu.

    • Stari: seeed_XIAO_m0
    • Novo: seeed_XIAO_m0_nbl
  3. Promijenite vrijednost.name:

    • Staro: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Novo: seeed_XIAO_m0_nbl.name = Seeeduino XIAO bez pokretačkog programa
  4. Izmijenite povezivač da bljeska bez pokretačkog programa promjenom ld skripte builder -a:

    • 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. Ponovo pokrenite Arduino IDE.
  6. Odaberite novu ploču "Seeeduino XIAO No Bootloader" s izbornika ploča.
  7. Odaberite "Izvezi kompilirani binarni dokument"
  8. Nakon sastavljanja.bin datoteka bit će u vašoj mapi projekta Arduino.

Korak 6: Flash MCU s J-Link-om

Flash MCU s J-Link
Flash MCU s J-Link
Flash MCU s J-Link
Flash MCU s J-Link
Flash MCU s J-Link
Flash MCU s J-Link

Adafruit ima fantastičan vodič o reprogramiranju pokretačkog programa na M0/M4 uređaju. U našem slučaju želimo se riješiti pokretačkog programa, ali radi na isti način.

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

Nakon što to učinite, nećete moći prenijeti kôd putem USB -a. Možete slijediti gornji vodič da biste ponovo pokrenuli pokretački program za učitavanje uređaja na uređaj za ponovni prijenos koda putem USB -a, kao što ste uspjeli iz tvornice.

Vodič za Adafruit vrlo je temeljit, ali ovo su osnovni koraci:

  1. Spajanje žica kratkospojnika na stražnjoj strani XIAO ploče.

    • U vodiču za Adafruit nije navedeno da RST pin na 2x5 razvodnoj ploči treba spojiti na pin za resetiranje na Adafruit pločama. No, za XIAO sam se trebao spojiti na sva četiri jastučića na stražnjoj strani ploče.
    • VREF pin mora biti spojen na XIAO 3.3v pin. To debugeru govori da je logika uređaja 3.3V. Bez toga, ako odaberete pogrešnu opciju, mogli biste oštetiti mikrokontroler.
  2. Spojite žice kratkospojnika na J-Link.
  3. Uključite XIAO ploču pomoću USB kabela.
  4. Otvorite studio Atmel.
  5. Odaberite Alati Programiranje uređaja
  6. Odaberite svoju M0 ploču. U ovom slučaju, ATSAMD21G18A
  7. Odaberite SWD.
  8. Pročitajte konfiguraciju s cilja.
  9. Ako koristite EDU J-Link, prihvatite uvjete korištenja (ako se pridržavate uvjeta korištenja).
  10. U gornjem desnom kutu provjerite je li očitani napon ispravan. Ako nije 3.3V, mogli biste razbiti ploču!
  11. Očistite osigurač za podizanje sustava (postavite veličinu pokretačkog programa na 0 bajtova), a zatim odaberite program.
  12. U odjeljku sjećanja odaberite svoju kompajliranu.bin ili.hex datoteku i odaberite program.

Rješavanje problema:

Kad pročitate konfiguraciju uređaja, ako dobijete pogrešku napona izvan raspona, provjerite je li MCU uključen u napajanje i je li JRE-VREF pin spojen na 3,3 volta

Korak 7: Ponovno kompajlirajte bez vanjskog kristala

Ponovno kompajlirajte bez vanjskog kristala
Ponovno kompajlirajte bez vanjskog kristala

XIAO ploča ima vanjski kristal čije pokretanje traje dugo. Prijemnik Spektrum otkriva uređaj na telemetrijskoj sabirnici 350 milisekundi nakon uključivanja, pa moramo reći prevoditelju da umjesto toga koristi unutarnji oscilator što će pokretanje učiniti gotovo trenutnim.

  1. Pronađite datoteku board.txt koju ste ranije izmijenili (da, mogao sam vam spremiti ovaj korak ranije, ali ovo je za mene bio proces učenja)
  2. Dodajte "-DCRYSTALLESS" nizu seeed_XIAO_m0_nbl.build.extra_flags. To će reći prevoditelju da koristi unutarnji oscilator.
  3. Ponovno sastavite kôd.
  4. Ponovno bljeskajte MCU.
  5. Provjerite je li vrijeme pokretanja dovoljno brzo pomoću osciloskopa.

Kao što možete vidjeti sa slike, žuti kanal 1 je izvor napajanja. Cijan kanal 2 je spreman pin na mikrokontroleru. Otprilike 10 milisekundi nakon uključivanja, mikrokontroler drugi kanal visoko povlači, što znači da se nalazi u petlji za postavljanje. Kada se postavljanje završi, MCU je kodiran tako da povuče pin nisko, što znači da glavna petlja počinje. Opseg pokazuje da postavljanje traje oko 3 milisekunde. Sveukupno, mikrokontroleru je potrebno 13 milisekundi nakon uključivanja da bude spreman za rad.

Preporučeni: