ELRS ant laido — CRSF, packet rate ir range

ELRS linkas iš tikrųjų yra du protokolai vienas paskui kitą: RF air protokolas tarp pulto TX modulio ir imtuvo, ir CRSF serial protokolas tarp imtuvo ir skrydžio kontrolerio. Nustatymai (bind phrase, domain) gyvena ELRS konfigūracijoje; OSD skaičiai — RC telemetrijoje. Šis snippet'as yra laido ir paket'ų lygio žvilgsnis ir apie tai, kodėl packet rate maino atsaką į range.

flowchart LR
    Handset[Radio handset] -->|CRSF over UART| TXmod[TX module]
    TXmod -->|ELRS RF air protocol| RX[Receiver]
    RX -->|CRSF over UART, 420k| FC[Flight controller]
    RX -->|ELRS RF telemetry| TXmod

CRSF laidas (imtuvas → skrydžio kontroleris)

Tarp RX ir FC duomenys yra CRSF (Crossfire Serial Protocol) per paprastą UART — 420 kbaud, 8N1, vienas start bitas ir vienas stop bitas kiekvienam baitui. Dideli packet rate (500 Hz+) susiderina greitesnį baud (pvz., 921600), kad baitai vis dar tilptų tarp atnaujinimų.

Frame formatas

Kiekvienas CRSF frame'as yra tos pačios formos ir niekada neviršija 64 baitų:

Baitas(-ai)LaukasReikšmė
0Sync0xC8 (įrenginio adresas / sync)
1Lengthkiek baitų seka toliau — type + payload + CRC (2–62)
2Typeframe'o tipas (kas yra payload'e)
3 … n-1Payload0–60 baitų, priklauso nuo tipo
nCRC8tik nuo type + payload, polinomas 0xD5 (DVB-S2)

CRC sąmoningai neįtraukia sync ir length baitų, todėl sugadintas length negali paslėpti sugadinto payload'o.

Frame tipai, kuriuos realiai pamatysi

TipasPavadinimasKryptisKą neša
0x16RC Channels PackedRX → FC16 kanalų × 11 bitų (stick'ai)
0x14Link StatisticsRX → FCRSSI, LQ, SNR, RF režimas, TX galia
0x08Battery SensorFC → RXįtampa, srovė, mAh (telemetry uplink)
0x02GPSFC → RXlat/lon, greitis, palydovai
0x1EAttitudeFC → RXroll, pitch, yaw
0x2B/2C/2DLUA parametersabiELRS config meniu radijuje
0x7A–0x7CMSP over CRSFabiConfigurator srautas per linką

Kaip supakuoti stick'ai (0x16)

RC frame'as sugrūda 16 kanalų po 11 bitų į lygiai 22 baitus (16 × 11 = 176 bitai). 11 bitų laukai nesutampa su 8 bitų baitais, todėl kanalai peržengia baitų ribas:

(0-inis bitas dešinėje. Bitų liniuotė aiškiai parodo nesutapimą — ch2 prasideda baito viduryje, ch3 persilieja į kitą baitą.) 11 bitų = 2048 žingsniai, atitinka RC rezoliuciją, kurią ELRS neša nuo galo iki galo. Visas RC frame'as yra 1 + 1 + 1 + 22 + 1 = 26 baitai → 260 bit-times → ~620 µs prie 420 kbaud, todėl 1000 Hz packet rate reikalauja aukštesnio CRSF baud.

Dešimt baitų — kiekvieno OSD skaičiaus šaltinis:

1uplink RSSI ant1, uplink RSSI ant2, uplink LQ, uplink SNR,
2active antenna, RF mode, uplink TX power,
3downlink RSSI, downlink LQ, downlink SNR

Uplink = pultas → aparatas (tavo valdymo linkas). Downlink = aparatas → pultas (telemetrija).


RF air protokolas — packet rate

Ore packet rate yra tai, kiek valdymo paket'ų per sekundę siunčia TX. Tai vienas svarbiausių ELRS nustatymų, nes vienu metu nustato ir vėlinimo grindis, ir range lubas.

2,4 GHz

RateModuliacijaJautrumasAir vėlinimasCharakteris
50 HzLoRa−115 dBm~20 msmaksimalus range / prasiskverbimas
150 HzLoRa−112 dBm~6,7 mssubalansuotas long-range
250 HzLoRa−108 dBm~4 msnumatytasis; puikus visapusiškas
333 Hz FullLoRa−105 dBm~3 msdaugiau kanalų, trumpesnis range
500 HzLoRa−105 dBm~2 msfreestyle/racing „sweet spot“
F1000FLRC−104 dBm~1,5 mstik racing; trapus per atstumą

900 MHz

Maksimumas — 200 Hz, bet žemo rate režimai pasiekia daug giliau: 25 Hz siekia −123 dBm, o 50 Hz — −120 dBm. Žemesnis dažnis taip pat geriau difraguoja aplink kliūtis nei 2,4 GHz, todėl 900 MHz — long-range / už reljefo diapazonas.


Kodėl egzistuoja kompromisas

Žemesnis packet rate → kiekvienas paket'as ilgiau būna ore, naudodamas aukštesnį LoRa spreading factor. Daugiau energijos vienam bitui reiškia, kad imtuvas gali iškapstyti signalą toliau iš triukšmo:

  • Jautrumas → range. Kas ~6 dB papildomo jautrumo maždaug padvigubina laisvos erdvės range (path loss auga kaip atstumas²). 50 Hz (−115 dBm) yra ~10 dB žemiau nei 500 Hz (−105 dBm) — maždaug 3× didesnis range prie tos pačios TX galios.
  • Jautrumas → prasiskverbimas. Medžiai, sienos ir tavo paties kūnas slopina signalą keliais dB. Būtent papildoma jautrumo atsarga leidžia žemam rate „prasimušti“ pro kliūtį, dėl kurios aukštas rate nueitų į failsafe.
  • Rate → atsakas. Atsakas — tai tiesiog tarpas tarp atnaujinimų: 1000 Hz = švieža komanda kas 1 ms; 50 Hz = kas 20 ms. Racer'iai jaučia skirtumą tarp 2 ms ir 6,7 ms kaip glaudesnį stick-to-quad ryšį; žemiau ~150 Hz vėlinimas tampa juntamas.

Visų trijų vienu metu turėti negali — fizika, deja, nesiderina. Greiti paket'ai atsakūs, bet trapūs; lėti paket'ai atsparūs, bet vėluoja. Teisingas atsakymas — dinaminis: įjunk Dynamic Power ir leisk linkui nusileisti į žemesnį rate ties range riba (nustatoma vieną kartą ELRS LUA skripte).

flowchart TD
    R{Packet rate} -->|High: 500–1000 Hz| Fast[Low latency<br/>Short range<br/>Poor penetration]
    R -->|Low: 25–50 Hz| Slow[High latency<br/>Long range<br/>Great penetration]
    R -->|Mid: 150–250 Hz| Bal[Balanced<br/>Sensible default]

Telemetry ratio

Downlink telemetrija (RX → pultas) pasiskolina laiko tarpsnius iš uplink'o. Telemetry ratio 1:n reiškia vieną telemetrijos paket'ą kas n RC paket'ų:

  • Tankesnis ratio (1:2) duoda greitą telemetriją, bet vagia tarpsnius iš valdymo.
  • Retesnis ratio (1:64, „Std“) beveik visą pralaidumą palieka RC.
  • Prie žemo packet rate visas vamzdis labai siauras — net 1:2 prie 50 Hz duoda tik ~25 telemetrijos atnaujinimų/s, per mažai sklandžiam MAVLink HUD. Norint daugiau telemetrijos pralaidumo, reikia kelti packet rate, o ne vien ratio.

Daugumai skraidymo tinka Std arba 1:81:16; GPS/HUD darbui varyk 250 Hz+ su 1:2.


Ką tai reiškia praktikoje

  • CRSF yra checksum'inamas baitų protokolas per UART — nustatyk portą į Serial RX, provider CRSF, be inversijos; žr. ELRS konfigūracija.
  • Packet rate yra trišalis kompromisas — atsakas vs range vs prasiskverbimas. Rinkis pagal skrydį arba varyk dinamiškai.
  • OSD skaičiai ateina tiesiai iš 0x14 frame'o — ką kiekvienas reiškia ir kurį stebėti, rasi RC telemetrijoje, o kaip teisingai sudėti antenas — Antenų išdėstyme.

Related Snippets