3 dalis: trys mygtukai, trys spalvos ir AND vartai, kurie viską sujungia

EdgeTX Cockpit Voice, 3 dalis iš 9. Kaip priverčiau RadioMaster GX12 įgarsinti savo telemetriją, kad žema baterija būtų tai, ką išgirstu, o ne tai, ko pamiršau pažiūrėti.

‹ 2 dalis: Kalibracija, ant kurios stovi kiekvienas įspėjimas · 4 dalis: Ką pultas iš tikrųjų pasako › · Pradėti nuo 1 dalies

1 dalis nustatė tikslą ir vieną skrydžio valdiklio nustatymą, ant kurio viskas stovi. Ši dalis yra mechanizmas: kaip pultas nusprendžia, kada kalbėti, ir kaip neleidžiu trims atskiroms įspėjimų sistemoms kovoti tarpusavyje.

Trys mygtukai, trys spalvos, trys posistemės

GX12 turi šešis papildomus mygtukus virš svirčių. Tai EdgeTX konfigūruojami funkciniai jungtukai (CFS), kiekvieną galima pavadinti, priskirti pradinę būseną ir RGB spalvą, kurią pultas tikrai užsidega.

Naudoju antrą trijų mygtukų grupę ir spalvas priskyriau taip, kad visos įspėjimų sistemos būseną galėčiau patvirtinti vienu žvilgsniu į pultą, dar prieš užsidėdamas akinius, nes tai vienintelė akimirka, kai į pultą iš tikrųjų žiūriu.

Spalvomis pažymėti CFS mygtukai

MygtukasPavadinimasSpalvaPradinė būsenaKą valdo
SW4logRaudonaIšjungtaTelemetrijos įrašymas į SD kortelę
SW5batŽaliaĮjungtaVisi baterijos įtampos įspėjimai
SW6gpsMėlynaIšjungtaVisi GPS / palydovų pranešimai

Baterijos įspėjimai pagal nutylėjimą įjungti, būtent to niekada nenoriu turėti prisiminti. GPS pranešimai išjungti, nes ant whoop'ų ir analoginių riperių GNSS modulio nėra visai, ir nenoriu „GPS pamestas“ sirenos kiekvieno skrydžio metu. Įrašymas išjungtas, nes jis pripildo SD kortelę.

Štai dalis, kurią teko išsiaiškinti: GX12 pulte modeliui priklausantis CFS blokas viršija pulto lygio jungtukų konfigūraciją. Abiejuose failuose yra SW4/5/6 įrašai. Pulto lygio įrašas radio.yml faile yra atsarginis; realiai veikia modelio YAML esantis customSwitches blokas.

 1# model00.yml — būtent šis blokas nugali
 2customSwitches:
 3   SW4:
 4      name: "log"
 5      type: 2POS
 6      group: 0              # 0 = nepriklausomas perjungimas
 7      start: START_OFF
 8      onColor:  { r: 63, g:  0, b:  0 }   # raudona
 9      offColor: { r:  2, g:  2, b:  2 }
10   SW5:
11      name: "bat"
12      type: 2POS
13      group: 0
14      start: START_ON       # baterijos įspėjimai aktyvūs iš karto
15      onColor:  { r:  0, g: 40, b:  2 }   # žalia
16      offColor: { r:  4, g:  0, b:  0 }
17   SW6:
18      name: "gps"
19      type: 2POS
20      group: 0
21      start: START_OFF
22      onColor:  { r:  0, g:  0, b: 63 }   # mėlyna
23      offColor: { r:  2, g:  2, b:  2 }

group: 0 reiškia nepriklausomą perjungimą. Mano SW1/SW2/SW3 yra group: 1, todėl veikia kaip vienas kitą išjungiantys mygtukai, patogu, pavyzdžiui, VTX galios lygiui rinkti, ir netinka trims nepriklausomoms įspėjimų posistemėms.

Kai mygtukai pavadinti, EdgeTX visur rodo pavadinimus, o ne SW52, ir loginių jungtukų puslapis pasidaro įskaitomas:

Jungtukų pavadinimai SETUP puslapyje

Signalo kelias

Prieš lenteles, visas kelias nuo celės iki garso:

flowchart LR
    subgraph AIR["Orlaivis"]
      direction TB
      GNSS["GNSS modulis"]
      FC["Betaflight FC<br/><code>report_cell_voltage = ON</code>"]
      GNSS --> FC
      FC -->|"CRSF 0x08 baterija<br/>CRSF 0x02 GPS"| RX["ELRS imtuvas"]
    end

    RX -.->|"2,4 GHz atgalinis kanalas<br/>telemetrijos santykis 1:N"| TX["ELRS TX modulis"]

    subgraph GX12["RadioMaster GX12 — EdgeTX 2.12.2"]
      direction TB
      TX --> SENS["Telemetrijos sensoriai<br/>RxBt · Sats · GAlt"]
      BTN["CFS mygtukai<br/>log · bat · gps"]
      SENS --> LS["Loginiai jungtukai<br/>L1 … L11"]
      BTN -->|AND vartai| LS
      LS --> SF["Specialiosios funkcijos"]
      SF --> SPK(["Garsiakalbis"])
      SF --> SD[("SD kortelės CSV")]
    end

Pagrindinė struktūrinė idėja yra AND vartai. Kiekvienas loginis jungtukas turi andsw lauką, antrą sąlygą, kuri taip pat turi būti tenkinama. Būtent tai vienuolika nepriklausomų slenksčio detektorių paverčia trimis perjungiamomis posistemėmis. Slenksčių logika ir aktyvavimo logika yra aiškiai atskirtos, ir man niekada nereikia redaguoti slenksčių, kad nutildyčiau posistemę.

Loginiai jungtukai

Vienuolika. Pirma ekranai, tada YAML, tada kam kiekvienas skirtas.

Loginiai jungtukai L01–L07
Loginiai jungtukai L06–L11

Viena detalė, kuri sutaupys tau painiavos skaitant YAML: logicalSw blokas indeksuojamas nuo nulio, o sąsajos etiketės, nuo vieneto. logicalSw: 2: yra tas jungtukas, kurį pultas vadina L3. Lygiai taip pat tele(14) yra nuo nulio skaičiuojamas indeksas telemetrySensors sąraše, mano faile tai RxBt.

 1logicalSw:
 2   0:                              # = L1
 3      func: FUNC_VNEG              # a < x
 4      def: "tele(14),40"           # RxBt < 4,0 V   (prec:1, tad 40 = 4,0)
 5      andsw: "SW52"                # IR  bat mygtukas įjungtas
 6   1:                              # = L2
 7      func: FUNC_VNEG
 8      def: "tele(14),36"           # RxBt < 3,6 V
 9      andsw: "SW52"
10   2:                              # = L3   <-- tas, kuris gelbsti skrydžius
11      func: FUNC_VNEG
12      def: "tele(14),38"           # RxBt < 3,8 V
13      andsw: "SW62"                # IR  gps mygtukas įjungtas
14   3:                              # = L4
15      func: FUNC_VPOS              # a > x
16      def: "tele(22),6"            # Sats > 6
17      andsw: "SW62"
18   4:                              # = L5
19      func: FUNC_VPOS
20      def: "tele(22),13"           # Sats > 13
21      andsw: "SW62"
22   5:                              # = L6
23      func: FUNC_ADIFFEGREATER     # |delta| >= x   <-- žr. pastabą žemiau
24      def: "tele(21),120"          # GAlt, 120 m
25      andsw: "NONE"                # visada aktyvus
26   6:                              # = L7
27      func: FUNC_VNEG
28      def: "tele(22),6"            # Sats < 6
29      andsw: "SW62"
30   7:                              # = L8
31      func: FUNC_VNEG
32      def: "tele(14),35"           # RxBt < 3,5 V
33      andsw: "SW52"
34   8:                              # = L9
35      func: FUNC_VNEG
36      def: "tele(14),38"           # RxBt < 3,8 V
37      andsw: "SE1"                 # SE vidurys -- prearm vartai, žr. žemiau
38   9:                              # = L10
39      func: FUNC_VPOS
40      def: "tele(14),42"           # RxBt > 4,2 V
41      andsw: "SW52"
42   10:                             # = L11
43      func: FUNC_VNEG
44      def: "tele(14),29"           # RxBt < 2,9 V
45      andsw: "SW52"

Kiekvienas iš jų turi delay: 0 ir duration: 0. Įsidėmėk tai.

Tokia visa struktūra. Vienuolika slenksčio detektorių, trys perjungiamos posistemės, vienas AND laukas, kuris juos atskiria. Ko visa tai dar nedaro, tai neskleidžia garso.


Series: EdgeTX Cockpit Voice, 3 dalis iš 9. Kaip priverčiau RadioMaster GX12 įgarsinti savo telemetriją, kad žema baterija būtų tai, ką išgirstu, o ne tai, ko pamiršau pažiūrėti.

‹ 2 dalis: Kalibracija, ant kurios stovi kiekvienas įspėjimas · 4 dalis: Ką pultas iš tikrųjų pasako › · Pradėti nuo 1 dalies

Posts in this series

    comments powered by Disqus

    Translations: