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.

| Mygtukas | Pavadinimas | Spalva | Pradinė būsena | Ką valdo |
|---|---|---|---|---|
| SW4 | log | Raudona | Išjungta | Telemetrijos įrašymas į SD kortelę |
| SW5 | bat | Žalia | Įjungta | Visi baterijos įtampos įspėjimai |
| SW6 | gps | Mėlyna | Išjungta | Visi 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:

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")]
endPagrindinė 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.


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