Obsah:

Rovinný výškoměr RC (kompatibilní s telemetrií Spektrum): 7 kroků
Rovinný výškoměr RC (kompatibilní s telemetrií Spektrum): 7 kroků

Video: Rovinný výškoměr RC (kompatibilní s telemetrií Spektrum): 7 kroků

Video: Rovinný výškoměr RC (kompatibilní s telemetrií Spektrum): 7 kroků
Video: Souvislost mezi parametry drsnosti povrchu a parametry vibrací materiálu... 2024, Červenec
Anonim
Rovinný výškoměr RC (kompatibilní s telemetrií Spektrum)
Rovinný výškoměr RC (kompatibilní s telemetrií Spektrum)

Vyrobil jsem tento výškoměr, aby pilot mohl vědět, že jsou pod hranicí 400 stop u RC letadel v USA. Můj přítel byl znepokojen, protože nemohl s jistotou říci, že byl vždy pod 400 stop, a chtěl dodatečné ujištění, že senzor s telemetrickými daty poskytne. Ano, můžete si koupit senzor od Spektrum, ale tento projekt můžete postavit za méně než 20 $ s breakout deskami (které jsou již v ceně nadsazené). Pokud již máte programátor J-link, můžete si jej postavit na vlastní desce za pár dolarů. Nemluvě o tom, že jakmile porozumíte protokolu Xbus, můžete vyrobit některý z dalších podporovaných senzorů! Ale v tomto projektu budu pouze pokrývat výškoměr …

Seznam dílů:

  • Pro tento projekt jsem použil desku mikrokontroléru Seeeduino XIAO, protože je malá, používá procesor M0, který má pro tento projekt dostatek energie, má I2C i SPI připravené k vybalení z krabice a používá logiku 3,3 V, takže nedochází k posunu úrovně Požadované.

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

  • Pro snímání tlaku vzduchu jsem koupil desku BMP388 od Adafruit. Deska má přerušené I2C i SPI a může pracovat s logikou 3,3 V nebo 5 V.

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

  • Protoboard pro zapojení obvodu
  • Páječka/páječka
  • Záhlaví pinů samec/samice, abych mohl snadno odpojit senzor/mikrokontrolér.
  • Malé tlačítko. Používám to k vynulování počáteční nadmořské výšky.
  • 10k odpor pro vytažení tlačítka.
  • 4kolíkový zásuvkový konektor JST-XH pro připojení k telemetrickému portu přijímače Spektrum
  • Programátor SEGGER J-Link EDU pro flashování M0 bez bootloaderu.

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

  • 10kolíková odlamovací deska Adafruit SWD

    www.adafruit.com/product/2743

Zásoby

  • Také jsem 3D vytiskl malý kryt pro svůj výškoměr, ale to není potřeba.
  • Osciloskop- Pokud jej nemáte, vřele doporučuji tento:

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

Krok 1: Naučte se telemetrický protokol Spektrum

Naučte se telemetrický protokol Spektrum
Naučte se telemetrický protokol Spektrum
Naučte se telemetrický protokol Spektrum
Naučte se telemetrický protokol Spektrum
Naučte se protokol telemetrie Spektrum
Naučte se protokol telemetrie Spektrum

To pro mě většinou udělal Raymond Domingo. Už udělali výškoměr kompatibilní se Spektrumem, takže sledování tohoto zdrojového kódu opravdu pomohlo. Datové listy telemetrie Spektrum vyplnily zbývající mezery. Měření úrovní dat z přijímače ukázalo, že bych potřeboval logiku 3,3 V.

Přijímač odešle adresu zařízení a poté očekává 16bajtovou odpověď. Datový list ukazuje struktury všech různých senzorů. I když struktura není dlouhá 16 bajtů, přijímač očekává vždy 16 bajtů zpět.

Datový list Spektrum:

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

Projekt Raymonda Dominga:

www.aerobtec.com/download/altisSpektrumInte…

Krok 2: Vyberte Hardware

Vyberte Hardware
Vyberte Hardware
Vyberte Hardware
Vyberte Hardware
Vyberte Hardware
Vyberte Hardware

Pro snímání tlaku jsem použil BMP388 breakout board od Adafruit. Breakout poskytuje průlomy I2C a SPI a funguje na logice 3,3 V nebo 5 V. Adafruit vždy dělá úžasnou práci s jejich odpočinkovými deskami, takže jsem si ji koupil. Místo toho jsem ve své sestavě použil desku DFRobot Gravity BMP388, protože moje deska Adafruit již byla používána.

Vzhledem k tomu, že hostitelské zařízení I2C používá logiku 3,3 V, potřeboval jsem mikrokontrolér 3,3 V a chtěl jsem, aby byl malý. Chtěl jsem použít Adafruit Trinket M0, ale jsou relativně drahé a nemají vylomeno mnoho pinů. Pak jsem našel desku Seeeduino XIAO. Jedná se o desku M0 s I2C i SPI připravenou k provozu s konektorem USB-C. Navíc je opravdu malý! Celkově se mi tato deska moc líbí (i když pomalý startovací krystal mi trvalo věčnost, než jsem na to přišel).

Spektrum používá 4pinový zástrčkový konektor velikosti JST-XH na přijímači pro port „Xbus“, do kterého budeme klepat. Na výškoměru jsem použil 4kolíkovou zásuvku JST-XH a fungovalo to perfektně.

Krok 3: Napište software

K napsání celého kódu jsem použil Arduino IDE. Zkopíroval jsem telemetrický protokol Spektrum z jejich datového listu a přidal jej do své knihovny Arduino. Vzhledem k tomu, že Adafruit má vždy pěkné knihovny pro své výpadky, použil jsem jejich knihovnu BMP3XX pro snímač BMP388.

Hlavní výběry z mého návrhu jsou:

  • Nastavte I2C tak, aby se choval jako klientské zařízení a reagoval na adresu výškoměru Spektrum (0x12).
  • Přečtěte si barometr BMP388 prostřednictvím SPI.
  • Uložte údaje o nadmořské výšce do dvou různých vyrovnávacích pamětí, aby požadavek I2C od přijímače data nepoškodil, a při načítání dat střídejte tyto dvě vyrovnávací paměti. Tím je zajištěno, že data odeslaná příjemci jsou vždy úplná.
  • Pomocí tlačítka vynulujete výškoměr.

Další podrobnosti a analýzu kódu naleznete ve videu.

Krok 4: Zapojte obvod

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

Použil jsem protoboard, ale pokud si chcete udělat čas na návrh frézované desky na míru, můžete tento obvod udělat mnohem čistší.

Spojil jsem konektor JST-XH s piny XIAO I2C. Protože přijímač vydává 5 voltů na telemetrickou sběrnici, kladný signál ze sběrnice šel na pin VCC XIAO. Tímto způsobem se palubní regulátor 3,3 V používá k napájení snímače BMP388.

Krok 5: Kompilace bez zavaděče

Kompilace bez zavaděče
Kompilace bez zavaděče
Kompilace bez bootloaderu
Kompilace bez bootloaderu
  1. Najděte svůj soubor boards.txt (pro jakoukoli desku, kterou používáte).

    V mém případě byl umístěn zde: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Zkopírujte desku a přejmenováním prvního klíče určete verzi bez bootloaderu. Právě jsem přidal _nbl k původnímu názvu.

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

    • Staré: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Novinka: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. Upravte linker tak, aby blikal bez bootloaderu změnou 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. Restartujte Arduino IDE.
  6. V nabídce desek vyberte novou desku „Seeeduino XIAO No Bootloader“.
  7. Vyberte „Exportovat kompilované binární soubory“
  8. Po zkompilování bude soubor.bin ve vaší složce 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 průvodce přeprogramováním zavaděče na zařízení M0/M4. V našem případě se chceme zbavit bootloaderu, ale funguje to stejně.

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

Jakmile to provedete, nebudete moci nahrávat kód přes USB. Můžete postupovat podle výše uvedeného průvodce a flashovat zavaděč zpět do zařízení, abyste znovu nahráli kód přes USB, jako byste to dokázali z továrny.

Průvodce Adafruitem je velmi důkladný, ale toto jsou základní kroky:

  1. Připájejte propojovací vodiče k zadní straně desky XIAO.

    • Průvodce Adafruit neříkal, že pin RST na 2x5 breakout desce je třeba připojit k resetovacímu pinu na deskách Adafruit. Ale u XIAO jsem se potřeboval připojit ke všem čtyřem padům na zadní straně desky.
    • Kolík VREF musí být připojen ke kolíku XIAO 3,3 V. To sděluje ladicímu programu, že logika zařízení je 3,3 V. Bez něj, pokud vyberete špatnou možnost, můžete poškodit mikrokontrolér.
  2. Připojte propojovací vodiče k J-Link.
  3. Zapněte desku XIAO kabelem USB.
  4. Otevřete Atmel Studio.
  5. Vyberte Nástroje Programování zařízení
  6. Vyberte si desku M0. V tomto případě ATSAMD21G18A
  7. Vyberte SWD.
  8. Přečtěte si konfiguraci z cíle.
  9. Pokud používáte EDU J-Link, vyjádřete souhlas s podmínkami použití (pokud dodržujete podmínky použití).
  10. V pravém horním rohu zkontrolujte, zda je odečtené napětí správné. Pokud není 3,3 V, můžete zlomit desku!
  11. Vymažte pojistku ochrany při spuštění (nastavte velikost zavaděče na 0 bajtů) a poté vyberte program.
  12. V části paměti vyberte kompilovaný soubor.bin nebo.hex a vyberte program.

Odstraňování problémů:

Když si přečtete konfiguraci zařízení, pokud se zobrazí chyba mimo rozsah, ujistěte se, že je MCU připojeno k napájení a že kolík J-Link VREF je připojen na 3,3 voltů

Krok 7: Překompilovat bez externího krystalu

Překompilovat bez externího krystalu
Překompilovat bez externího krystalu

Deska XIAO má externí krystal, jehož spuštění trvá dlouho. Přijímač Spektrum provádí objev zařízení na telemetrické sběrnici 350 milisekund po zapnutí, takže musíme kompilátoru říci, aby místo toho použil interní oscilátor, což způsobí spuštění téměř okamžitě.

  1. Najděte soubor boards.txt, který jste dříve upravili (ano, tento krok jsem vám mohl uložit dříve, ale pro mě to byl proces učení)
  2. Přidejte řetězec „-DCRYSTALLESS“do řetězce seeed_XIAO_m0_nbl.build.extra_flags. To řekne kompilátoru, aby použil interní oscilátor.
  3. Překompilovat kód.
  4. Znovu flashujte MCU.
  5. Pomocí osciloskopu ověřte, zda je doba spuštění dostatečně rychlá.

Jak vidíte na obrázku, žlutý kanál 1 je napájecí zdroj. Azurový kanál 2 je připravený pin na mikrokontroléru. Asi 10 milisekund po zapnutí je kanál dva vytažen vysoko mikrokontrolérem, což naznačuje, že je v instalační smyčce. Jakmile je nastavení dokončeno, MCU je kódováno tak, aby vytáhlo kolík nízko, což znamená, že začíná hlavní smyčka. Rozsah ukazuje, že nastavení trvá přibližně 3 milisekundy. Celkově trvá mikrokontrolér po zapnutí 13 milisekund, než je připraven k provozu.

Doporučuje: