Obsah:

RC rovinný výškomer (kompatibilný s telemetriou Spektrum): 7 krokov
RC rovinný výškomer (kompatibilný s telemetriou Spektrum): 7 krokov

Video: RC rovinný výškomer (kompatibilný s telemetriou Spektrum): 7 krokov

Video: RC rovinný výškomer (kompatibilný s telemetriou Spektrum): 7 krokov
Video: Souvislost mezi parametry drsnosti povrchu a parametry vibrací materiálu... 2024, Júl
Anonim
RC rovinný výškomer (kompatibilný s telemetriou Spektrum)
RC rovinný výškomer (kompatibilný s telemetriou Spektrum)

Vyrobil som tento výškomer, aby pilot mohol vedieť, že sú pod 400 stôp na RC lietadlách v USA. Môj priateľ bol znepokojený, pretože nemohol s istotou povedať, že má vždy menej ako 400 stôp, a chcel dodatočné uistenie, že senzor s telemetrickými údajmi poskytne. Áno, senzor si môžete kúpiť od Spektrumu, ale tento projekt môžete postaviť za menej ako 20 dolárov s odlamovacími doskami (ktoré sú už v cene nadsadené). Ak už máte programátor J-link, môžete si ho postaviť na vlastnej doske za pár dolárov. Nehovoriac o tom, že akonáhle porozumiete protokolu Xbus, môžete vyrobiť ktorýkoľvek z ďalších podporovaných senzorov! Ale v tomto projekte budem len pokrývať výškomer …

Zoznam položiek:

  • Na tento projekt som použil mikrokontrolér Seeeeino XIAO, pretože je malý, používa procesor M0, ktorý má na tento projekt dostatok energie, má pripravené I2C aj SPI a je pripravený na použitie ihneď po vybalení z krabice a používa logiku 3,3 V, takže nedochádza k posunu úrovní. požadovaný.

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

  • Na snímanie tlaku vzduchu som si kúpil oddeľovaciu dosku BMP388 od spoločnosti Adafruit. Doska má prerušené I2C aj SPI a môže pracovať s logikou 3,3 V alebo 5 V.

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

  • Protoboard na zapojenie obvodu
  • Spájkovačka/spájkovačka
  • Zásuvky konektora samec/samica, aby som mohol ľahko odpojiť snímač/mikrokontrolér.
  • Malé tlačidlo. Používam to na vynulovanie počiatočnej nadmorskej výšky.
  • 10k odpor pre sťahovanie tlačidla.
  • 4-kolíkový zásuvkový konektor JST-XH na zapojenie do telemetrického portu prijímača Spektrum
  • Programátor SEGGER J-Link EDU na flashovanie M0 bez bootloadera.

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

  • 10-kolíková oddeľovacia doska Adafruit SWD

    www.adafruit.com/product/2743

Zásoby

  • Tiež som 3D vytlačil malý kryt pre svoj výškomer, ale to nie je potrebné.
  • Osciloskop- Ak ho nemáte, vrelo odporúčam tento:

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

Krok 1: Naučte sa telemetrický protokol Spektrum

Naučte sa protokol telemetrie Spektrum
Naučte sa protokol telemetrie Spektrum
Naučte sa protokol telemetrie Spektrum
Naučte sa protokol telemetrie Spektrum
Naučte sa protokol telemetrie Spektrum
Naučte sa protokol telemetrie Spektrum

Väčšinou to pre mňa urobil Raymond Domingo. Už urobili výškomer kompatibilný so Spektrumom, takže sledovanie tohto zdrojového kódu skutočne pomohlo. Dátový list telemetrie Spektrum vyplnil ostatné medzery. Meranie úrovní údajov z prijímača ukázalo, že budem potrebovať logiku 3,3 V.

Prijímač odošle adresu zariadenia a potom očakáva 16-bajtovú odpoveď. Datasheet zobrazuje štruktúry všetkých rôznych senzorov. Aj keď štruktúra nie je dlhá 16 bajtov, prijímač očakáva vždy 16 bajtov späť.

Dátový list Spektrum:

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

Projekt Raymonda Dominga:

www.aerobtec.com/download/altisSpektrumInte…

Krok 2: Vyberte položku Hardvér

Vyberte položku Hardvér
Vyberte položku Hardvér
Vyberte položku Hardvér
Vyberte položku Hardvér
Vyberte položku Hardvér
Vyberte položku Hardvér

Na snímanie tlaku som použil oddeľovaciu dosku BMP388 od spoločnosti Adafruit. Breakout poskytuje prerušenia I2C a SPI a funguje na logike 3,3 V alebo 5 V. Adafruit vždy robí úžasnú prácu s ich oddeľovacími doskami, tak som si ich kúpil. Vo svojej zostave som namiesto toho použil dosku DFRobot Gravity BMP388, pretože moja doska Adafruit sa už používala.

Vzhľadom na to, že hostiteľské zariadenie I2C používa logiku 3,3 V, potreboval som mikrokontrolér 3,3 V a chcel som, aby bol malý. Chcel som použiť Adafruit Trinket M0, ale sú relatívne drahé a nemajú zlomených veľa kolíkov. Potom som našiel dosku Seeeduino XIAO. Je to doska M0 s I2C aj SPI pripravenou na použitie s konektorom USB-C. Tiež je to naozaj malé! Celkovo sa mi táto doska veľmi páči (aj keď mi pomalý štartovací kryštál trval večnosť, kým som na to prišiel).

Spektrum používa 4-kolíkový konektor Male JST-XH na prijímači pre port „Xbus“, do ktorého budeme odbočovať. Na výškomere som použil 4-kolíkovú zásuvku JST-XH a fungovalo to perfektne.

Krok 3: Napíšte softvér

Na napísanie celého kódu som použil Arduino IDE. Skopíroval som telemetrický protokol Spektrum z ich technického listu a pridal som ho do svojej knižnice Arduino. Pretože Adafruit má vždy pekné knižnice na ich vylomeniny, použil som ich knižnicu BMP3XX pre snímač BMP388.

Hlavné výpisy z môjho návrhu sú:

  • Nastavte I2C tak, aby sa správal ako klientske zariadenie a reagoval na adresu výškomera Spektrum (0x12).
  • Prečítajte si barometer BMP388 prostredníctvom SPI.
  • Uložte údaje o nadmorskej výške do dvoch rôznych vyrovnávacích pamätí, aby požiadavka I2C od prijímača nepoškodila údaje, a pri načítavaní údajov striedajte tieto dve vyrovnávacie pamäte. Tým je zaistené, že údaje odoslané do prijímača sú vždy úplné.
  • Na vynulovanie výškomera sa používa tlačidlo.

Ak chcete získať ďalšie podrobnosti a analýzu kódu, pozrite si video.

Krok 4: Zapojte obvod

Zapojte obvod
Zapojte obvod
Zapojte obvod
Zapojte obvod
Zapojte obvod
Zapojte obvod
Zapojte obvod
Zapojte obvod

Použil som protoboard, ale ak si chcete urobiť čas na navrhnutie frézovanej dosky na mieru, môžete obvod veľmi vyčistiť.

Pripojil som konektor JST-XH k pinom I2C XIAO. Pretože prijímač vydáva 5 voltov na telemetrickú zbernicu, pozitíva zo zbernice išli na pin VCC XIAO. Týmto spôsobom sa palubný regulátor 3,3 V používa na napájanie senzora BMP388.

Krok 5: Kompilácia bez bootloadera

Kompilácia bez bootloadera
Kompilácia bez bootloadera
Kompilácia bez bootloadera
Kompilácia bez bootloadera
  1. Nájdite súbor boards.txt (pre akúkoľvek dosku, ktorú používate).

    V mojom prípade bol umiestnený tu: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Skopírujte svoju dosku a premenujte prvý kľúč, aby ste určili verziu bez bootloadera. K pôvodnému názvu som práve pridal _nbl.

    • Staré: seeed_XIAO_m0
    • Novinka: seeed_XIAO_m0_nbl
  3. Zmeňte hodnotu.name:

    • Staré: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Novinka: seeed_XIAO_m0_nbl.name = Seeeduino XIAO Žiadny bootloader
  4. Zmeňte linker na flash bez bootloadera zmenou skriptu ld Builder:

    • Staré: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Novinka: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with out _bootloader.ld
  5. Reštartujte Arduino IDE.
  6. Z ponuky panelov vyberte novú dosku „Seeeduino XIAO No Bootloader“.
  7. Vyberte „Exportovať kompilované binárne súbory“
  8. Po skompilovaní bude súbor.bin v priečinku vášho projektu Arduino.

Krok 6: 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
Flash MCU s J-Link

Adafruit má fantastického sprievodcu pri preprogramovaní bootloadera na zariadení M0/M4. V našom prípade sa chceme zbaviť bootloadera, ale funguje to rovnako.

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

Akonáhle to urobíte, nebudete môcť nahrať kód cez USB. Môžete postupovať podľa vyššie uvedeného sprievodcu a načítať bootloader späť do zariadenia, aby ste znova nahrali kód cez USB, ako ste to dokázali z výroby.

Sprievodca Adafruit je veľmi podrobný, ale toto sú základné kroky:

  1. Spájajte prepojovacie vodiče k zadnej časti dosky XIAO.

    • Sprievodca Adafruit nepovedal, že kolík RST na oddeľovacej doske 2x5 je potrebné pripojiť k resetovaciemu kolíku na doskách Adafruit. Ale pre XIAO som sa potreboval pripojiť ku všetkým štyrom podložkám na zadnej strane dosky.
    • Kolík VREF je potrebné pripojiť k kolíku XIAO 3,3 V. To hovorí debuggeru, že logika zariadenia je 3,3 V. Bez neho, ak vyberiete nesprávnu možnosť, môžete poškodiť mikrokontrolér.
  2. Pripojte prepojovacie vodiče k J-Link.
  3. Zapnite dosku XIAO káblom USB.
  4. Otvorte Atmel Studio.
  5. Vyberte Nástroje Programovanie zariadení
  6. Vyberte svoju dosku M0. V tomto prípade ATSAMD21G18A
  7. Vyberte SWD.
  8. Prečítajte si konfiguráciu z cieľa.
  9. Ak používate EDU J-Link, súhlaste s podmienkami použitia (ak dodržiavate podmienky použitia).
  10. V pravom hornom rohu skontrolujte, či je odčítaná hodnota napätia správna. Ak nie je 3,3 V, môžete dosku zlomiť!
  11. Vymažte poistku ochrany pred spustením (nastavte veľkosť zavádzača na 0 bajtov) a potom vyberte program.
  12. V časti pamäte vyberte skompilovaný súbor.bin alebo.hex a vyberte program.

Riešenie problémov:

Keď sa prečítate konfiguráciu zariadenia a zistíte, že napätie je mimo rozsah, skontrolujte, či je MCU zapojené do napájania a či je kolík J-Link VREF pripojený na 3,3 voltov

Krok 7: Skompilujte bez externého kryštálu

Prekompilovajte bez vonkajšieho kryštálu
Prekompilovajte bez vonkajšieho kryštálu

Doska XIAO má externý kryštál, ktorého spustenie trvá dlho. Prijímač Spektrum robí objav zariadenia na telemetrickej zbernici 350 milisekúnd po zapnutí, takže musíme kompilátoru povedať, aby namiesto toho používal interný oscilátor, vďaka ktorému bude spustenie takmer okamžité.

  1. Nájdite súbor boards.txt, ktorý ste predtým upravili (áno, tento krok som vám mohol uložiť skôr, ale pre mňa to bol proces učenia sa)
  2. Pridajte reťazec „-DCRYSTALLESS“do reťazca seeed_XIAO_m0_nbl.build.extra_flags. To kompilátoru povie, aby použil interný oscilátor.
  3. Skompilujte kód.
  4. Znovu flashujte MCU.
  5. Pomocou osciloskopu overte, či je čas spustenia dostatočne rýchly.

Ako vidíte na obrázku, žltý kanál 1 je napájací zdroj. Azúrový kanál 2 je pripravený kolík na mikrokontroléri. Asi 10 milisekúnd po zapnutí kanál dva vytiahne mikrokontrolér vysoko, čo naznačuje, že je v nastavovacej slučke. Po dokončení nastavenia je MCU kódovaný tak, aby vytiahol kolík nízko, čo znamená, že sa začína hlavná slučka. Rozsah ukazuje, že nastavenie trvá asi 3 milisekundy. Celkom trvá mikrokontrolér po zapnutí 13 milisekúnd, kým je pripravený.

Odporúča: