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, Juli
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 avionima RC u SAD -u. Moj prijatelj je 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 ovaj projekt možete izgraditi za manje od 20 USD s pločama za razbijanje (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 samo pokriti visinomjer u ovom projektu …

Lista 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 nivoa potrebno.

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

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

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

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

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

  • Adafruit SWD 10-pinska ploča za razbijanje

    www.adafruit.com/product/2743

Supplies

  • Takođe sam 3D štampao 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

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

Primalac š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 nazad.

Tehnički list Spektrum:

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

Projekat 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 Adafruit -a za mjerenje pritiska. Proboj pruža I2C i SPI prekide i radi na 3.3v ili 5v logici. Adafruit uvijek izvrsno radi sa svojim razbijačkim pločama, 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 od 3.3v i želio sam da bude mali. Htio sam koristiti Adafruit Trinket M0, ali oni su relativno skupi i nemaju puno izbijenih pinova. Zatim sam pronašao Seeeduino XIAO ploču. To je M0 ploča sa I2C i SPI spremnim za rad, sa USB-C konektorom. Takođe, zaista 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 tablice i dodao ga u svoju Arduino biblioteku. Budući da Adafruit uvijek ima lijepe biblioteke za svoje proboje, koristio sam njihovu biblioteku BMP3XX za senzor BMP388.

Glavni zaključci iz mog dizajna su:

  • Postavite I2C da se ponaša kao klijentski uređaj i da odgovara na adresu visinomjera Spektrum (0x12).
  • Očitajte barometar BMP388 kroz SPI.
  • Spremite podatke o nadmorskoj visini u dva različita međuspremnika tako da I2C zahtjev od primatelja neće oštetiti podatke i naizmjenično se prebacuju između dva međuspremnika pri preuzimanju podataka. To osigurava da su podaci poslani primatelju uvijek potpuni.
  • Koristi dugme 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.

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

Korak 5: Kompajlirajte bez pokretačkog programa

Kompajliraj bez pokretačkog programa
Kompajliraj bez pokretačkog programa
Kompajliraj bez pokretačkog programa
Kompajliraj 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 svoju ploču i preimenujte prvi ključ da biste naveli verziju bez pokretačkog programa. Upravo sam dodao _nbl originalnom imenu.

    • Staro: 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 kompajlirane binarne datoteke"
  8. Nakon sastavljanja,.bin datoteka bit će u mapi vašeg Arduino projekta.

Korak 6: Flash MCU sa J-Link-om

Flash MCU sa J-Link
Flash MCU sa J-Link
Flash MCU sa J-Link
Flash MCU sa J-Link
Flash MCU sa J-Link
Flash MCU sa J-Link

Adafruit ima fantastičan vodič za reprogramiranje 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…

Kada 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 ponovno učitavanje koda putem USB -a, kao što ste uspjeli iz tvornice.

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

  1. Lemite žice kratkospojnika na stražnjoj strani XIAO ploče.

    • U vodiču za Adafruit nije navedeno da RST pin na 2x5 razvodnoj ploči treba biti spojen na pin za resetiranje na Adafruit pločama. Ali za XIAO, morao sam se spojiti na sva četiri jastučića na stražnjoj strani ploče.
    • VREF pin mora biti spojen na XIAO 3.3v pin. Ovo otkriva grešci da je logika uređaja 3.3V. Bez toga, ako odaberete pogrešnu opciju, mogli biste oštetiti mikrokontroler.
  2. Spojite kratkospojnike na J-Link.
  3. Uključite XIAO ploču pomoću USB kabela.
  4. Otvorite Atmel Studio.
  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, složite se s uvjetima korištenja (ako se pridržavate uvjeta korištenja).
  10. Provjerite je li očitani napon ispravan u gornjem desnom kutu. Ako nije 3.3v, mogli biste razbiti ploču!
  11. Uklonite osigurač pri pokretanju (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:

Kada pročitate konfiguraciju uređaja, ako dobijete grešku napona izvan raspona, provjerite je li MCU uključen u napajanje i je li J-Link 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 sabirnici telemetrije 350 milisekundi nakon uključivanja, pa moramo reći kompajleru 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 sačuvati ovaj korak ranije, ali ovo je za mene bio proces učenja)
  2. Dodajte "-DCRYSTALLESS" u seeed_XIAO_m0_nbl.build.extra_flags niz. Ovo će reći kompajleru da koristi unutrašnji oscilator.
  3. Ponovno kompajlirajte kôd.
  4. Ponovno bljesnite 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 podešavanje 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čuje se: