INHOUDSOPGAWE:

RC -vliegtuighoogtemeter (versoenbaar met Spektrum Telemetry): 7 stappe
RC -vliegtuighoogtemeter (versoenbaar met Spektrum Telemetry): 7 stappe

Video: RC -vliegtuighoogtemeter (versoenbaar met Spektrum Telemetry): 7 stappe

Video: RC -vliegtuighoogtemeter (versoenbaar met Spektrum Telemetry): 7 stappe
Video: Redragon Caraxes Pro K644 SE Review: A Great 65% Mechanical Keyboard 2024, Julie
Anonim
RC vliegtuig hoogtemeter (versoenbaar met Spektrum Telemetry)
RC vliegtuig hoogtemeter (versoenbaar met Spektrum Telemetry)

Ek het hierdie hoogtemeter gemaak sodat die vlieënier kon weet dat hulle onder die 400 voet perk op RC -vliegtuie in die VSA is. My vriend was bekommerd, want hy kon nie met sekerheid sê dat hy altyd onder 400 voet was nie, en wou die bykomende versekering hê dat 'n sensor met telemetriegegevens sou voorsien. Ja, u kan 'n sensor by Spektrum koop, maar u kan hierdie projek vir minder as $ 20 bou met uitbreekborde (wat reeds in prys verhoog is). As u reeds die J-link-programmeerder het, kan u dit vir 'n paar dollar op 'n pasgemaakte bord bou. Om nie eers te praat as u die Xbus -protokol verstaan nie, kan u enige van die ander ondersteunde sensors maak! Maar ek sal net 'n hoogtemeter bedek in hierdie projek …

Onderdele lys:

  • Ek het 'n Seeeduino XIAO -mikrobeheerderbord vir hierdie projek gebruik, aangesien dit klein is, 'n M0 -verwerker gebruik wat baie krag vir hierdie projek het, sowel I2C as SPI gereed het om uit die boks te gaan en logika van 3.3v te gebruik, sodat geen vlakverskuiwing is nie vereis.

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

  • Vir die opsporing van lugdruk het ek 'n BMP388 -uitbreekbord by Adafruit gekoop. Die bord het beide I2C en SPI uitgebreek en kan op 3.3v of 5v logika werk.

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

  • Protoboard vir die bedrading van die kring
  • Soldeerbout/soldeerbout
  • Manlike/vroulike penkoppe sodat ek die sensor/mikrobeheerder maklik kan losmaak.
  • Klein knoppie. Ek gebruik dit om die beginhoogte terug te stel.
  • 10k weerstand vir 'n aftrek op die knoppie.
  • JST-XH 4-pins vroulike aansluiting om aan te sluit op die telemetrie-poort van die Spektrum-ontvanger
  • SEGGER J-Link EDU programmeerder om die M0 te flits sonder 'n selflaaiprogram.

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

  • Adafruit SWD 10-pen uitbreekbord

    www.adafruit.com/product/2743

Voorrade

  • Ek het ook 'n klein omhulsel vir my hoogtemeter in 3D gedruk, maar dit is nie nodig nie.
  • Oscilloskoop- As u nie een het nie, beveel ek hierdie een sterk aan:

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

Stap 1: Leer die Spektrum Telemetry Protocol

Leer die Spektrum Telemetry Protocol
Leer die Spektrum Telemetry Protocol
Leer die Spektrum Telemetry Protocol
Leer die Spektrum Telemetry Protocol
Leer die Spektrum Telemetry Protocol
Leer die Spektrum Telemetry Protocol

Dit is meestal vir my gedoen deur Raymond Domingo. Hulle het reeds 'n hoogtemeter verenigbaar met Spektrum gemaak, so die bronkode het werklik gehelp. Die Spektrum -telemetrie -datablad het die res van die gapings ingevul. Die meting van die datavlakke van die ontvanger het getoon dat ek 3.3v logika nodig sou hê.

Die ontvanger stuur die toesteladres en verwag dan 'n antwoord van 16 byte. Die datablad toon die strukture vir al die verskillende sensors. Selfs as die struktuur nie 16 grepe lank is nie, verwag die ontvanger elke keer 16 grepe terug.

Spektrum -datablad:

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

Raymond Domingo se projek:

www.aerobtec.com/download/altisSpektrumInte…

Stap 2: Kies hardeware

Kies Hardware
Kies Hardware
Kies Hardware
Kies Hardware
Kies Hardware
Kies Hardware

Ek het 'n BMP388 -uitbreekbord van Adafruit gebruik vir drukwaarneming. Die uitbraak bied I2C- en SPI -uitbrekings, en werk op 3.3v of 5v logika. Adafruit doen altyd wonderlike werk met hul uitbreekborde, so ek het dit gekoop. Ek het eerder 'n DFRobot Gravity BMP388 -bord in my gebou gebruik, aangesien my Adafruit -bord reeds in gebruik was.

Aangesien die gasheer I2C -toestel 3.3v -logika gebruik, het ek 'n 3.3v -mikrobeheerder nodig gehad, en ek wou hê dit moet klein wees. Ek sou 'n Adafruit Trinket M0 gebruik, maar hulle is relatief duur en het nie baie penne uitgebreek nie. Toe kry ek die Seeeduino XIAO -bord. Dit is 'n M0-bord met beide I2C en SPI gereed om te gebruik, met 'n USB-C-aansluiting. Dit is ook regtig klein! Oor die algemeen hou ek baie van hierdie bord (alhoewel die stadige opstartkristal my ewig geneem het om uit te vind).

Spektrum gebruik 'n JST-XH-grootte 4-polige manlike aansluiting op die ontvanger vir die "Xbus" -poort waarop ons gaan kyk. Ek het 'n 4-pins JST-XH vroulike prop op die hoogtemeter gebruik en dit werk perfek.

Stap 3: Skryf sagteware

Ek het die Arduino IDE gebruik om al die kode te skryf. Ek het die Spektrum -telemetrie -protokol uit hul datablad gekopieer en dit by my Arduino -biblioteek gevoeg. Aangesien Adafruit altyd goeie biblioteke het vir hul uitbreek, het ek hul BMP3XX -biblioteek vir die BMP388 -sensor gebruik.

Die belangrikste wegneemetes uit my ontwerp is:

  • Stel die I2C in om op te tree as 'n kliëntapparaat en te reageer op die Spektrum -hoogtemeteradres (0x12).
  • Lees die BMP388 barometer deur SPI.
  • Stoor die hoogte -data in twee verskillende buffers, sodat 'n I2C -versoek van die ontvanger die data nie beskadig nie, en wissel tussen die twee buffers as u die data gaan haal. Dit verseker dat die data wat na die ontvanger gestuur is, altyd volledig is.
  • Gebruik 'n knoppie om die hoogtemeter te nul.

Kyk na die video vir meer besonderhede en kode -analise.

Stap 4: Draai die kring

Draai die kring
Draai die kring
Draai die kring
Draai die kring
Draai die kring
Draai die kring
Draai die kring
Draai die kring

Ek het protoboard gebruik, maar as u die tyd wil neem om 'n pasgemaakte bord te ontwerp, kan u die kring baie skoner maak.

Ek het die JST-XH-aansluiting gekoppel aan die XIAO se I2C-penne. Aangesien die ontvanger 5 volt na die telemetriebus uitset, het die positiewe van die bus na die XIAO se VCC -pen gegaan. Op hierdie manier word die ingeboude 3.3v -reguleerder gebruik om die BMP388 -sensor aan te dryf.

Stap 5: Stel sonder 'n selflaaiprogram saam

Stel op sonder 'n selflaaiprogram
Stel op sonder 'n selflaaiprogram
Stel op sonder 'n selflaaiprogram
Stel op sonder 'n selflaaiprogram
  1. Soek u boards.txt -lêer (vir watter bord u ook al gebruik).

    In my geval was dit hier geleë: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Kopieer u bord en hernoem die eerste sleutel om 'n weergawe sonder laaier te spesifiseer. Ek het pas _nbl by die oorspronklike naam gevoeg.

    • Oud: seeed_XIAO_m0
    • Nuut: seeed_XIAO_m0_nbl
  3. Verander die.naam waarde:

    • Oud: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Nuut: seeed_XIAO_m0_nbl.name = Seeeduino XIAO Geen opstartlaaier nie
  4. Verander die skakelaar om sonder die selflaaiprogram te flits deur die bouer ld -script te verander:

    • Oud: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Nuut: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_sonder _bootloader.ld
  5. Herbegin die Arduino IDE.
  6. Kies die nuwe bord "Seeeduino XIAO No Bootloader" in die spyskaarte.
  7. Kies 'Uitvoer saamgestelde binêre'
  8. Sodra dit saamgestel is, sal die.bin -lêer in u Arduino -projekmap wees.

Stap 6: Flash MCU met J-Link

Flash MCU met J-Link
Flash MCU met J-Link
Flash MCU met J-Link
Flash MCU met J-Link
Flash MCU met J-Link
Flash MCU met J-Link

Adafruit het 'n fantastiese gids vir die herprogrammering van 'n selflaaiprogram op 'n M0/M4 -toestel. In ons geval wil ons ontslae raak van die selflaaiprogram, maar dit werk op dieselfde manier.

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

As u dit eers gedoen het, kan u nie die kode via USB oplaai nie. U kan die bogenoemde gids volg om die selflaaiprogram weer op die toestel te flits om weer kode via USB op te laai, soos u van die fabriek af kon kry.

Die Adafruit -gids is baie deeglik, maar dit is die basiese stappe:

  1. Soldeerboutdrade aan die agterkant van die XIAO -bord.

    • Die Adafruit -gids het nie gesê dat die RST -pen op die 2x5 -uitbreekbord aan die reset -pen op die Adafruit -borde gekoppel moet word nie. Maar vir die XIAO moes ek aansluit by al vier pads agter op die bord.
    • Die VREF -pen moet aan die XIAO 3.3v -pen gekoppel word. Dit vertel die ontfouter dat die logika van die toestel 3.3v is. As u nie die verkeerde opsie kies nie, kan u die mikrobeheerder beskadig.
  2. Koppel die jumperdrade aan die J-Link.
  3. Skakel die XIAO -bord aan met 'n USB -kabel.
  4. Maak Atmel Studio oop.
  5. Kies Gereedskap Toestelprogrammering
  6. Kies u M0 -bord. In hierdie geval, die ATSAMD21G18A
  7. Kies SWD.
  8. Lees die opset vanaf die teiken.
  9. As u die EDU J-Link gebruik, stem u in tot die gebruiksvoorwaardes (as u die gebruiksvoorwaardes nakom).
  10. Verifieer dat die spanning in die regter boonste hoek korrek is. As dit nie 3.3v is nie, kan u u bord breek!
  11. Maak die sekuriteit van die opstartbeskerming skoon (stel die grootte van die laaiprogram op 0 grepe) en kies dan die program.
  12. Kies u saamgestelde.bin- of.hex -lêer in die afdeling geheue en kies program.

Probleemoplossing:

As u 'n toestelkonfigurasie lees, as u 'n spanning buite bereik bereik, moet u seker maak dat die MCU ingeskakel is en dat die J-Link VREF-pen op 3,3 volt gekoppel is

Stap 7: Stel weer saam sonder die eksterne kristal

Herstel sonder die eksterne kristal
Herstel sonder die eksterne kristal

Die XIAO -bord het 'n eksterne kristal wat lank neem om te begin. Die Spektrum -ontvanger doen 350 millisekondes na die aanvang 'n apparaatopsporing op die telemetriebus, dus moet ons die samesteller vertel om eerder die interne ossillator te gebruik, wat die aanvang van die opname byna onmiddellik sal maak.

  1. Soek die boards.txt -lêer wat u vroeër gewysig het (ja, ek kon u hierdie stap vroeër bespaar het, maar dit was vir my 'n leerproses)
  2. Voeg "-DCRYSTALLESS" by die string "seeed_XIAO_m0_nbl.build.extra_flags". Dit sal die samesteller vertel om die interne ossillator te gebruik.
  3. Stel die kode weer saam.
  4. Flits die MCU weer.
  5. Maak seker dat die opstarttyd vinnig genoeg is met behulp van 'n ossilloskoop.

Soos u op die foto kan sien, is die geel kanaal 1 die kragtoevoer. Die siaan kanaal 2 is die gereed pin op die mikrobeheerder. Ongeveer 10 millisekondes na aanvang word kanaal twee deur die mikrobeheerder hoog getrek, wat aandui dat dit in die opstellus is. Sodra die opstelling klaar is, word die MCU gekodeer om die pen laag te trek, wat aandui dat die hooflus begin. Die omvang toon aan dat die opstelling ongeveer 3 millisekondes neem. Oor die algemeen neem die mikrobeheerder 13 millisekondes na aanvang om gereed te wees.

Aanbeveel: