RC Ultimate · technický katalog

Funkce TX a RX

Od páček, enkodéru a TFT přes logiku jízdy až po nRF24, ochrany, OTA a blackbox. Jeden prohledávatelný přehled skutečných schopností rádia.

TX LOLIN S3 MiniRX LOLIN S3 Mini V2STM8 0.8stav zdrojů 9. 9. 2026
Otevřít katalogStáhnout MarkdownUživatelská příručkaWire protokol

Stav zdrojového průchodu: 9. září 2026. Rozsah: aktivní TX a RX firmware v pracovním stromu, primárně tx_lolin_s3_mini a rx_lolin_s3_mini_v2, včetně napojeného světelného modulu STM8 0.8.

Tento dokument odpovídá na otázku „Co celé rádio skutečně dělá, od otočení enkodérem až po vnitřní ochrany a přenosy?“ Vznikl kontrolou vstupů, menu, webových stránek, jejich obsluhy, RX výpočtů, transportu a provozních služeb. Nejde pouze o přepis dosavadního přehledu ani o seznam názvů C++ funkcí.

Popisuje současné zdrojáky včetně beta změn. Sám nepotvrzuje, že každý bod je v konkrétní právě nahrané binárce. Praktické ověření přebírá pouze tam, kde je zaznamenané v WE_HAVEWE_HAVE.md; otevřené testy mají autoritativní seznam v TODOTODO.md. Při tomto průchodu se neprováděl nový HW test, build, upload ani deploy.

1. Celková mapa#

Současný pinout a softwarová kapacita#

OblastKapacita firmwareAktivní přiřazení v současném pinoutu
TX analogové osyA0–A3A0 a A1; A2/A3 mají pin −1
TX digitální SVSV1–SV8SV1 a SV2; SV3–SV8 mají pin −1
TX analogové SVČtyři polohy SV9–SV12SVC vstup je zapnutý; skutečné polohy vyžadují odpovídající odporový ovladač
TX další ovládáníEnkodér, jeho tlačítko, TFT a měření bateriePiny těchto částí jsou přiřazené
RX lokální OUT16 konfiguračních slotůV2 má OUT1–OUT15; počet aktivovaných určuje profil
RX servo generátory V26 současně2 rychlé a 4 pomocné; nejde o 15 nezávislých servo generátorů
External světla16 persistentních pozicSTM8 0.8 poskytuje OUT0–OUT10

Tabulka dokládá kompilované přiřazení pinů, nikoli novou fyzickou kontrolu zapojení. TX má pro TFT a nRF oddělené SPI sběrnice. Buzzer je v aktuálním TX i RX V2 vypnutý (−1); zvukové nebo hlasové alarmy proto nejsou doloženou součástí současné obsluhy. RX V2 nemá zapnuté rychlostní/tacho vstupy.

Funkční členění#

RC Ultimate
├─ TX: vysílač
│  ├─ analogové osy, přepínače, enkodér
│  ├─ kalibrace, mapování, trim, expo, D/R, endpointy
│  ├─ modelové profily a jízdní varianty
│  ├─ TFT: jízda, diagnostika, rychlé ovládání, nastavení
│  ├─ safety gate, tempo, dohled nad spojením a baterií
│  ├─ WebSetup, zprostředkování RX API, OTA koordinace
│  └─ incidentní a crash diagnostika
├─ RF: nRF24
│  ├─ průběžné řízení a zpětná telemetrie
│  ├─ potvrzovaný service kanál a Wi-Fi provisioning
│  ├─ scan, identita RX, adaptivní výkon
│  └─ měření kvality a lokální obnova rádia
├─ RX: přijímač
│  ├─ steering, throttle, diferenciály, převod, naviják
│  ├─ asistence řazení, volitelná pulzní brzda
│  ├─ světelná logika a mapování OUT
│  ├─ teploty, ventilátory, voltmetr
│  ├─ autonomní safety, battery guard, thermal guard
│  └─ profily, webové API, OTA, incidentní záznam
└─ STM8: externí světelný modul
   ├─ 11 skutečných světelných výstupů
   ├─ HW PWM a soft-PWM, blikání a přechody
   └─ atomická konfigurace, timeout, opětovné připojení

Jak číst stav funkce: „uživatelská“ má dostupné ovládání v TFT/webu; „automatická“ běží sama; „API“ je implementovaná obsluha bez nutně vykresleného tlačítka; „podmíněná“ závisí na HW nebo překladu; „rezerva/částečná“ nemá doloženou celou cestu až k účinku. Nastavená a skutečně provedená hodnota nejsou vždy totéž. Zejména ACK není měření fyzické polohy serva.

2. Fyzické ovládání a zpracování vstupů#

2.1 Analogové vstupy#

  • Čtyři logické analogové vstupy A0–A3. Fyzicky nepřítomný pin se přeskočí.
  • Přiřaditelné role STEER, THROTTLE, AUX0, AUX1, případně vypnutí role/zdroje. V protokolu se dvě pomocné osy jmenují aux1 a aux2.
  • Globální HW kalibrace každého vstupu: minimum, střed, maximum, invert a deadband.
  • Přepočet obou polovin dráhy samostatně kolem kalibrovaného středu na rozsah −1000 až +1000.
  • Potlačení drobného pohybu kolem středu a přepočet zbytku dráhy tak, aby zůstala dostupná plná výchylka.
  • Další profilová inverze, trim, expo, dual rate a samostatné minimum/maximum výstupu.
  • Kladné expo zjemňuje střed; záporné ho zostřuje. D/R zmenšuje celkový rozsah, endpointy omezují výslednou výchylku.
  • Záporná větev THROTTLE má navíc pevné mírné nelineární zjemnění. Je to tvarování podle polohy páky, nikoli časově řízené pomalé rozjíždění. Nemá samostatný přepínač v UI.
  • Safety dostává samostatnou kalibrovanou hodnotu s deadbandem. Profilový trim, expo a D/R se proto nemají zaměňovat s fyzickým zjištěním neutrálu.
  • ADC sampler po přepnutí kanálu zahodí první převod, nechá ustálit vstup a použije EMA filtr. V jednom kroku měří jednu přítomnou osu; 1kHz task neznamená 1 kHz pro všechny čtyři osy současně.

2.2 Přepínače a tlačítka#

  • SV1–SV8 jsou fyzické digitální vstupy.
  • SV9–SV12 vznikají dekódováním čtyř pásem pomocného ADC vstupu SVC, pokud ho deska má. Jsou to možnosti analogového ovladače; v jednom vzorku SVC vychází nejvýše jedna z těchto poloh.
  • Rozlišuje se stav držení, krátký stisk a dlouhý stisk. SV krátký stisk používá interval přibližně 100–700 ms, dlouhý se vyvolá po 2 s.
  • Model konfigurace má pro každý slot zvlášť hold, click a long vazbu. Web nabízí běžné chování DIRECT, CLICK TOGGLE a LONG TOGGLE; SMART akce mají vlastní význam krátkého a dlouhého stisku.
  • Přiřaditelné akce zahrnují přední/zadní diferenciál, vysoký převod, hlavní světla, dálková, maják, rampu, SMART diferenciály, SMART světla a změnu jízdní varianty.
  • PBRAKE je také nabízená akce, ale v současném RX nemá dohledaný účinek na výstup. Podrobnost je v kapitole 21.
  • Pokud nejsou nakonfigurované žádné akce, existuje kompatibilní základní mapování prvních čtyř SV na přední diff, zadní diff, převod a světla.

2.3 Přesné chování SMART#

AkceKrátký stiskDlouhý stisk
SMART DIFFZ vypnuta zapne zadní diff; další stisky střídají zadní a oba diferenciályVypne oba
SMART BEAMSZ vypnuta zapne hlavní světla; další stisky střídají hlavní a dálkováVypne hlavní i dálková
DRIVE MODEPosune jízdní variantu dopředuPosune variantu zpět

Zdroje: tx_io.cpplib/tx_io/src/tx_io.cpp, tx_inputs.cpplib/inputs/src/tx_inputs.cpp, rc_math.hlib/common/include/rc_math.h, configstore.hlib/configstore/include/configstore.h, webový Profilerlib/webcore/src/webcore_profiler_page.cpp.

3. TFT obrazovky a ovládání#

3.1 Enkodér#

ÚkonVýsledek
Otočení mimo menuPřepíná CAR → ADC → TX-STATS → STATUS → STATS → CAR; opačně opačné pořadí
Jeden klik na CARPo skončení okna pro dvojklik otevře Drive menu
Otočení v menuVýběr řádku nebo změna editované hodnoty
Klik v menuVstup do položky, editace nebo potvrzení podle konkrétní karty
DvojklikHlavní menu; v kontextu otevřeného menu také návrat podle jeho úrovně
Držení přibližně 1,2 s v hlavním menuUložení rozpracovaných nastavení; u vzdálených karet čekání na potvrzení RX
Držení přibližně 5 sPřepnutí Setup Wi-Fi, pokud stisk neblokuje safety/battery dialog; při držení v hlavním menu může nejprve v 1,2 s proběhnout save a poté v 5 s přepnutí setupu

Jednotlivé kontexty si vstup přebírají: například klik na battery cutoff dialogu není zároveň klik do Drive menu. SCAN, SETUP a SETUP_WIFI jsou kontextové obrazovky, nikoli další tři položky běžného pětiobrazovkového kruhu.

3.2 Co jednotlivé obrazovky ukazují#

ObrazovkaFunkce
CARSchéma auta, diferenciály, převod LO/HI, světla, blinkry, maják/rampa, teploty ENG/ESC, jízdní varianta, baterie a link
ADCŽivá diagnostika analogu; raw/zpracovaná hodnota, pozorované minimum/maximum, zdroj řízení a jeho kalibrace, trim, invert, endpointy, D/R a expo
TX-STATS / USRSTATSVytížení jader a paměťové statistiky RAM/PSRAM podle dostupnosti HW
STATUSObsah průběžného TX paketu a ACK: osy, masky, flags, telemetrie, RF čas a diagnostika
STATSStav spojení, kvalita/čas RF, lokální a vzdálený PA, napětí a teploty
SCANProbíhající RF hledání, nalezené kanály a jména, výběr výsledku
SETUP_WIFINakonfigurovaný a skutečný Wi-Fi režim, SSID, IP TX a dostupnost/IP RX

3.3 Hlášení a zobrazení stavu#

  • CONNECTED s identitou skutečného RX; nový nepojmenovaný přijímač může hlásit NEW.
  • Indikace rozdílu požadavku a RX aplikovaného stavu zejména u diff/gear.
  • SIGNAL LOST se odvozuje od potvrzeného linkového stavu včetně grace, ne od jediného chybějícího ACK payloadu.
  • Safety dialog ukazuje nevyhovující osy, možnost pokračovat, přejít na trim nebo do setupu a následnou připravenost.
  • Cutoff dialog, odpočet, čekání na potvrzení uspání nebo vypnutí guardu a chyba servisní operace.
  • Tepelné varování/trip a samostatné barevné či blikající zvýraznění teplot ENG/ESC.
  • Menu rozlišuje editaci, neuložený stav, načítání, čekání na service a potvrzené uložení.
  • TEMPO ukazuje požadovanou, fyzickou a výslednou hodnotu i důvod zrušení.

Omezení indikace: přijetí ACK ani switches_act nedokazuje, že servo mechanicky dojelo nebo že žárovka svítí. RX nemá v této cestě snímač polohy/proudu. Lokální TFT blinkrová animace je také odvozená indikace, nikoli přenos fáze každého světelného výstupu.

3.4 Vnitřní obsluha displeje#

  • Samostatný UI task a předávání posledního úplného modelu; běžná obnova modelu po 100 ms.
  • Překreslování změněných oblastí a cachování obsahu.
  • PWM řízení jasu podsvitu.
  • Stavy displeje RUN/SLEEP/OFFLINE a interní požadavek na opětovnou inicializaci.
  • Podpora boot obrázku a animace z LittleFS s náhradními cestami. Současný TX má vypnutou synchronní boot sekvenci; dostupnost konkrétního obrázku závisí na souborech ve flash.
  • Před TX battery sleepem požadavek na skutečné vykreslení kritického hlášení, omezené čekání, čitelná prodleva a zhasnutí podsvitu.

Zdroje: ui.cpplib/ui/src/ui.cpp, runtime obrazovkylib/ui/src/ui_tft_runtime_views.cpp, CARlib/ui/src/ui_tft_car_view.cpp, setup obrazovkylib/ui/src/ui_tft_setup_views.cpp, TX supervisorlib/supervisor/src/supervisor.cpp.

4. Rychlé Drive menu#

4.1 LIGHTS#

  • Automatické blinkry ON/OFF.
  • Ruční levý a pravý blinkr.
  • Hazard.
  • Hlavní světla, dálková, maják a světelná rampa.
  • Ruční brzdové světlo a ruční zpátečkové světlo. Ruční brzdové světlo neznamená parkovací brzdu pohonu.
  • Jas rampy 0–100 % po 5 %. Při otevření editoru se skutečná RX hodnota znovu přečte.
  • Běžné existující světelné bity se přenášejí v průběžném řízení. Ruční příspěvky a PWM se ovládají potvrzovanými service operacemi.
  • Runtime PWM přepisuje společný aktuální jas rampy, ne její uložené dim_duty. Zaniká při restartu RX nebo novém apply konfigurace.

4.2 WINCH#

  • Otevření ovládání odjistí naviják potvrzenou operací při nulové rychlosti.
  • Enkodér nastavuje −100 až +100 % po 5 %, záporně OUT, kladně IN.
  • Klik odešle potvrzený STOP.
  • Opuštění ovládání nejprve dokončí zastavení a následně disarm; výstup WINCH_PWM drží signál LOW.
  • RX odmítne nenulovou rychlost bez armu nebo v setupu. Arm odmítne při failsafe/setupu.
  • Při failsafe, setupu, restartu a apply konfigurace se naviják nuluje; příslušná disarm cesta ruší jeho odjištění. Při běžném link failsafe se nejprve uplatní bezpečná nulová rychlost a navazující servo disarm.
  • Příkazy posílají absolutní rychlost, takže opakování stejného RF požadavku nepřidává další krok.
  • Tato ovládací cesta vyžaduje nakonfigurovaný WINCH_PWM. Samotné WINCH_IN/OUT v nabídce OUT nejsou náhradou proporcionálního service ovládání.

4.3 TEMPO#

  • TX udržuje nastavený povel plynu, nikoli měřenou rychlost auta; není zde zpětná vazba rychloměrem.
  • Aktivace při dopředném plynu zhruba 5–60 %.
  • Přechodová fáze požaduje uvolnění páky do 2 s, poté převezme nastavenou hodnotu.
  • Enkodér mění setpoint po 5 %; vyšší fyzický plyn ho může dočasně překrýt.
  • Zrušení brzdou, klikem/STOP, failsafem, změnou jízdní varianty, neúspěšným uvolněním plynu nebo vstupem do navijáku.
  • TFT zobrazuje fázi a důvod ukončení.

Zdroje: TX supervisor — car_menu a cruiselib/supervisor/src/supervisor.cpp, RX supervisor — winchlib/supervisor/src/rx_supervisor.cpp, service runtimelib/rx_service_runtime/src/rx_service_runtime.cpp.

5. Hlavní TFT menu#

5.1 Adjust#

KartaNastaveníPoužití a uložení
Steering / Throttle / Aux0 / Aux1Trim, minimum, maximum, expo; zobrazují se přiřazené roleŽivá TX RAM editace, dlouhý stisk uloží
Front diffOFF a ON polohaRX přednačtení, potvrzený RAM zápis, samostatné potvrzené NVS uložení
Rear diffOFF a ON polohaStejná cesta
GearLOW/OFF a HIGH/ON polohaStejná cesta
ABS brakeOFF/LINEAR/FIXED, frekvence, lineární duty min/max, pevné dutyPřednačtení pěti RX hodnot, RAM zápisy a jeden save celé RX konfigurace
  • Diff/gear pozice TFT vyjadřuje procenty kolem 1500 µs, rozsah −150 až +150 %, převod 1500 + procenta × 5 µs.
  • Vzdálená karta při otevření zneplatní starou kopii a sekvenčně načte skutečné RX hodnoty. Výběr již načteného řádku znovu neprovádí GET.
  • První chyba přednačítání zastaví zbytek dávky. Neúspěšný zápis/uložení nepředstírá SAVED a zachová dirty stav.
  • Trim steeringu se synchronizuje i do společného středu RX automatických blinkrů; potvrzení editace je RAM operace, dlouhé uložení persistentní.

5.2 Setup#

  • Wi-Fi: AP/CLIENT a stav synchronizace cíle RX. Karta režimu a samotné spuštění WebSetup jsou různé akce.
  • RF PA: AUTO/MIN/LOW/HIGH/MAX. Jde o dočasný provozní override, ne uloženou vlastnost modelového profilu.
  • Display brightness: 1–100 %, změna ihned, persistuje explicitním uložením.
  • Safety / idle failsafe: Off, 15, 30, 60, 120 nebo 300 s.
  • Logs: čtení a persistentní zapnutí/vypnutí TX a RX loggeru. RX stav se při vstupu potvrzeně načte.
  • Erase all: nejprve úspěšně smaže RX, teprve potom TX failsafe a crash logy. Nedostupný/BUSY RX nezpůsobí smazání TX části.
  • OTA: oddělené řádky stable a beta, TX/RX/TX+RX, CURRENT, PAIR WAIT a potvrzení/odložení instalace.
  • RF scan: hledání a výběr dostupného RX/kanálu; podrobně kapitola 14.

Zdroj: tx_menu_controller.cpplib/supervisor/src/tx_menu_controller.cpp, napojení menu v supervisorulib/supervisor/src/supervisor.cpp.

6. WebSetup a kalibrace#

6.1 Stránky#

TX hostuje Status (/), Calibration (/calib) a Profiler (/profiler). WebSetup se používá v bezpečném setup režimu. RX poskytuje vlastní HTTP API; TX zprostředkovává jeho operace do společného rozhraní v prohlížeči.

6.2 Status#

  • Stav linku, kvalita spojení, stáří vstupu RX, uptime, setup/failsafe.
  • Aktivní profil, jízdní varianta a UI/RF kanál.
  • TX/RX baterie, teploty TX a RX ENG/ESC.
  • Nakonfigurovaný/skutečný Wi-Fi režim, IP a online presence RX oddělená od RF linku.
  • Výběr AP/CLIENT, SSID, heslo a cílový TX host (client) pro síťové spojení; výběr SSID ze scanu s RSSI a informací o zabezpečení.
  • TX/RX bateriové profily, RX Battery Guard a kalibrace RX voltmetru.
  • Seznam teplotních senzorů, role ENG/ESC, editor fan křivek a informace o přiřazeném OUT ventilátoru.
  • Stav TX/RX blackboxu, zapnutí/vypnutí, zpřístupnění seznamu a stažení záznamů, oddělené mazání.
  • Ukončení setupu.

6.3 Calibration#

  • Výběr A0–A3 a živé sledování raw i kalibrované hodnoty.
  • Start relace, sběr krajních poloh, Set center s průměrováním vzorků.
  • Zmrazení zjištěných mezí a kontrola výsledku před uložením.
  • Změna/reset deadbandu v připravené relaci; náhled se propisuje do RAM.
  • Inverze vstupu.
  • Save uloží globální kalibraci, Dismiss bez předchozího save obnoví původní RAM kalibraci.
  • Inverze mimo rozpracovanou relaci a úpravy po již úspěšném save mohou ukládat ihned. Neplatí proto obecné pravidlo „na kalibrační stránce se nic neuloží bez dalšího Save“.

Zdroje: Statuslib/webcore/src/webcore_status_page.cpp, Calibrationlib/webcore/src/webcore_calib_page.cpp, calib.cpplib/calib/src/calib.cpp, webcorelib/webcore/src/webcore.cpp, TX API adapterapps/tx_s3/src/app_web_api.cpp.

7. TX profily a jízdní varianty#

  • 10 TX profilů pro modely, pojmenování, přidání, odstranění a aktivace.
  • Každý profil určuje UI kanál 1–13 a tím RF kanál; UI 1 odpovídá RF 125, další klesají po 10 až na RF 5.
  • Profil obsahuje 3 pojmenovatelné jízdní varianty s vlastními osami a vazbami přepínačů.
  • Volba aktivní varianty a přiřazení přepínače pro její změnu.
  • Mapování zdrojů na role, inverze, trim, D/R, expo, endpointy.
  • Editace SV vazeb a jejich chování.
  • Nastavení idle failsafe. Runtime čte účinný timeout přes TX metadata; nelze bez rozlišení mluvit o druhé nezávislé safety politice pro každou variantu.
  • Apply TX poskytuje RAM náhled upraveného aktivního profilu.
  • Save TX ukládá profilová data a metadata; aktivní konfigurace se znovu aplikuje.
  • Revert vrací rozpracovanou webovou editaci k načtenému základu.
  • Backend má také kopírování profilu a reset profilu přes /api/copy a /api/reset. V prohlédnuté současné stránce pro ně není samostatné běžné tlačítko; jsou to API schopnosti.
  • Scan může přizpůsobit aktivní TX profil nalezenému jménu/kanálu. To nenahrazuje RX konfiguraci fyzických výstupů.

Zdroje: Profilerlib/webcore/src/webcore_profiler_page.cpp, app_profiles.cppapps/tx_s3/src/app_profiles.cpp, app_web_api.cppapps/tx_s3/src/app_web_api.cpp, configstore.cpplib/configstore/src/configstore.cpp.

8. RX Profiler, výstupy a záloha#

8.1 Konfigurace přijímače#

  • Jméno RX, RF kanál, počet aktivních lokálních OUT a přiřazení funkce každému OUT.
  • Logické OUT se překládají na GPIO podle vybrané desky. Profil se netvoří zadáváním libovolného fyzického GPIO.
  • Datová kapacita lokální mapy je 16 slotů; RX V2 má 15 fyzicky přiřazených OUT, 2 rychlé a 4 pomocné servo kanály. Tabulky DOUT a běžného PWM mají po 16 runtime slotech, ale počet nezávislých výstupů stále omezuje počet dostupných GPIO. Metadata těchto kapacit publikuje RX.
  • Nový RX začíná s out_count = 0, tedy bez automaticky aktivovaných lokálních výstupů.
  • Kontrola parametrů, duplicit GPIO a dostupných prostředků výstupních driverů.
  • Fit RX to Active profile sladí identitu/jméno a RF kanál s TX; nevygeneruje kompletní OUT mapu.
  • Apply RX změní živou RAM konfiguraci. Save RX konfiguraci použije a uloží, web následně čte skutečný RX stav. Reload načte stav RX znovu.
  • Změna funkce/pinu přestaví HW vazby. Běžná service editace pozice/duty drží stabilní identitu funkce a GPIO, takže zbytečně nepřiděluje nový HW kanál.

8.2 Nabídka lokálních OUT#

FunkceÚčinek / nastavení
NONENeaktivní slot
STEERServo řízení, střed pulzu a travel
THROTTLEServo signál pro ESC, střed pulzu a travel
FRONT_DIFF_SERVOPřední diferenciál, OFF/ON poloha
REAR_DIFF_SERVOZadní diferenciál, OFF/ON poloha
GEAR_SHIFT_SERVOPřevod LOW/HIGH, OFF/ON poloha
WINCH_PWMProporcionální servo signál navijáku; střed a oba směrové endpointy
WINCH_IN, WINCH_OUTDigitální výstupy podle příslušných wire bitů; omezení dostupného TX ovládání viz kapitola 21
LIGHTS, HEADLIGHTSDigitální hlavní světla
HIGH_BEAMDigitální dálková světla
HEADLIGHTS_COMBINEDJeden PWM kanál: tlumená hlavní / plná dálková
TAIL_BRAKEZadní a brzdové světlo, samostatná intenzita a čas přechodu
TAIL_LIGHTS_COMBINEDTlumená zadní / plná brzdová
REVERSE_LIGHTZpátečkové světlo podle jízdní logiky nebo ručního příspěvku
BLINK_L, BLINK_RBlinkry; společný střed, prahy zapnutí/vypnutí a rychlost
BEACONMaják: trvalý svit nebo série 1/2/3 záblesků, čas záblesku, mezery, cooldown
LIGHTBARZapínaná PWM rampa, konfigurovaný jas a runtime override
PWM_FAN_ENG, PWM_FAN_ESCPWM ventilátory podle příslušné teplotní křivky

Steering/throttle používají 200Hz servo signál; pomocná serva diff/gear/winch 50 Hz. WINCH_PWM je navzdory názvu servo pulzní řízení, nikoli běžný osmibitový LED PWM výstup. U steering/throttle RX dovoluje travel 0–200 % a konfigurovatelný střed, s konečným omezením pulzů ve výpočtu.

8.3 Servisní testování#

  • Webové tlačítko u předního diffu, zadního diffu a převodu zapíná ON override příslušného serva.
  • Názvy JS rxCycles/rxToggleRowCycle neznamenají automatický cyklický pohyb: současná obsluha drží ON polohu.
  • Setup brání pohonu plynem. Testovací override se týká jen zvolených cílů.
  • Interní možnost steering testu existuje, ale jeho běžné vykreslení v Profileru je vypnuté.

8.4 Export a import#

  • Download uloží JSON schema v6. Upload přijímá schema v1–v6.
  • Záloha obsahuje RX jméno/kanál, lokální OUT a parametry, External mapu a časování, bateriový profil a voltmetrovou kalibraci, senzory a fan křivky.
  • Síťová hesla, API klíče, logy, telemetrie, testmode a OTA stav nejsou součástí tohoto formátu.
  • Import dekóduje a validuje celý dokument před prvním zápisem a ověřuje možnosti cílové desky.
  • Vyžaduje setup a potvrzený servo hard-disarm s omezenou platností požadavku.
  • Provádí NVS save/readback; při chybě zápisu, ověření nebo apply se pokouší obnovit předchozí platnou konfiguraci. Nejde o záruku transakčního zápisu všech NVS bloků při libovolném výpadku napájení.
  • Migrace starších profilů doplní ABS OFF a bezpečně vypnuté externí výstupy, pokud je starý formát neznal. Starší STM8 pořadí převádí podle fyzických výstupů do mapy s opraveným OUT2.

Zdroje: RX web APIlib/rx_web/src/rx_web_api.cpp, RX profile codeclib/rx_profile_codec/src/rx_profile_codec.cpp, rx_config.hlib/supervisor/include/rx_config.h, rx_metahelper.cpplib/supervisor/src/rx_metahelper.cpp, rx_io.cpplib/rx_io/src/rx_io.cpp, servo_mcpwm.cpplib/servo_mcpwm/src/servo_mcpwm.cpp.

9. Vnitřní jízdní funkce RX#

9.1 Asistence diferenciálů a řazení#

  • Přední diff, zadní diff a převod oddělují požadovaný a aplikovaný stav.
  • Nová změna čeká na malou absolutní výchylku plynu, přibližně do 5 %.
  • Po přestavení serva následuje 100 ms usazení a krátký 150ms povel dopředu na 10 %, který pomáhá mechanickému zařazení.
  • Během této sekvence je běžný plyn nahrazen neutrálem nebo uvedeným impulzem. Souběžné asistence se nesčítají; vybírá se nejvyšší požadovaný impulz.
  • Aplikovaný diff/gear bit se změní až po dokončení sekvence a vrací se v ACK.
  • Ve failsafe existuje dodatečná podmínka neutrálu odvozená od předchozí výchylky, až 5 s. Setup asistenci ruší a drží throttle na nule; konečný fyzický signál navíc podléhá servo disarmu.
  • Jde o pevnou automatiku ve firmware, nikoli o uživatelsky nastavitelný „shift assist“ panel.

9.2 Rozpoznání brzdění a zpátečky pro světla#

  • Po dopředném plynu první výraznější tah do záporné strany znamená brzdovou fázi.
  • Návrat do neutrálu otevře bránu zpátečky; další záporný povel může rozsvítit zpátečkové světlo.
  • V režimu ABS OFF tato stavová logika rozhoduje o světlech; sama není další pulzní transformací throttle.
  • Při aktivní ABS dodává informaci o brzdění/zpátečce přímo ABS automat, takže světla nevycházejí pouze z okamžité právě vypnuté PWM fáze brzdy.

9.3 Volitelná pulzní brzda „ABS“#

  • OFF: transparentní průchod RX throttle touto politikou.
  • LINEAR: duty brzdových pulzů podle síly brzdového povelu mezi nastaveným minimem/maximem.
  • FIXED: pevné duty při brzdění.
  • Nastavitelná obálka 5–50 Hz, duty 0–100 %. Servo carrier pro ESC zůstává na 200 Hz.
  • Střídá brzdný endpoint s neutrálem; je určená i pro ESC bez proporcionální brzdy.
  • Skutečný neutrální vstup v toleranci ±20 z 1000 po alespoň 100 ms připraví přechod do zpátečky. Umělé neutrální mezery mezi brzdovými pulzy se za uvolnění páky nepovažují.
  • Zpátečka je proporcionální a bez ABS pulzů.
  • Apply nastavení, failsafe, setup a asistence řazení resetují/přerušují příslušný ABS stav.
  • Frekvence a duty jsou omezené 5ms řídicím krokem; vysoká frekvence má hrubší dosažitelné rozlišení.
  • Název ABS zde neznamená měření prokluzu kol. Jde o otevřenou pulzní brzdu bez snímačů rychlosti kol.

Zdroje: rx_supervisor.cpplib/supervisor/src/rx_supervisor.cpp, rx_metahelper.cpplib/supervisor/src/rx_metahelper.cpp, policy_brake_abs.cpplib/policy/src/policy_brake_abs.cpp.

10. Světla a externí STM8#

10.1 Společná logika světel#

  • Automatické blinkry mají rozdílné prahy ON/OFF kolem nastavitelného středu, tedy hysterezi.
  • Ruční levý/pravý příspěvek se kombinuje s automatickým požadavkem a hazardem.
  • Hazard rozblikává obě strany společně. Failsafe na RX vynucuje hazard a aktivuje také požadavek majáku.
  • Maják umí trvalý svit nebo 1/2/3 záblesky s nastavitelnými časovými mezerami.
  • Hlavní a dálková světla mohou být oddělené digitální funkce nebo kombinovaný PWM kanál.
  • Zadní/brzdová světla mají kombinované varianty, případně samostatné intenzity a náběh.
  • Runtime jas rampy je společný pro odpovídající světelnou funkci.
  • RX sestaví jeden logický stav pro lokální i externí světla. Externí modul nepřebírá rozhodování, zda auto právě brzdí či couvá.
  • Když se stejná funkce používá lokálně i externě, její parametry se sjednocují; External blok zachovává vlastní data pro funkce používané jen externě a pro kompatibilitu profilu.

10.2 Skutečné schopnosti STM8 0.8#

  • 11 výstupů OUT0–OUT10.
  • HW PWM: OUT0, OUT1, OUT2, OUT9, OUT10.
  • Soft-PWM: OUT3–OUT8.
  • RX má 16 persistentních External pozic; počet dostupných řádků stanoví skutečný počet kanálů v odpovědi modulu.
  • Přiřazení FRONT/HEADLIGHTS_COMBINED, REAR/TAIL_LIGHTS_COMBINED, BLINK_L, BLINK_R, REVERSE, LIGHTBAR a BEACON.
  • Kombinované FRONT/REAR vyžadují HW PWM; LIGHTBAR vyžaduje PWM. Nabídka respektuje capability a PWM masky.
  • Protokol umí duty, fade, blink/beacon časování, komunikační timeout a failsafe duty. Web je prezentuje podle přiřazené funkce, ne nutně jako samostatný editor každého wire pole.
  • Pro samostatnou externí funkci nabízí web podle capabilities primární/sekundární jas, failsafe jas a fade, u blinkrů rychlost/střed/prahy a u majáku režim a časování. Při odpovídající lokální funkci místo toho edituje její společné parametry. Digitální kanál má pevné 0/100 % bez fade.
  • WORK_LIGHT je v protokolu i přiřazení, ale RX publikuje work_on = false; není to hotové samostatně ovladatelné pracovní světlo.

10.3 Připojení, přenos a obnova#

  1. RX zjistí dostupnost adresy světelného modulu 0x30.
  2. Načte INFO a ověří CRC, magic, verzi, schema, počet kanálů a velikosti.
  3. Přenese konfiguraci po omezených blocích a požádá o commit.
  4. Vyčká na potvrzení CONFIGURED se správnou generací.
  5. Teprve pak posílá živý stav; běžný STATE interval je 150 ms, kontrola STATUS přibližně 1 s.
  • Překonfigurování za běhu nejprve vyšle nulový stav a až po nové potvrzené generaci obnoví aktuální světla.
  • Odpojení nesmaže profil. Po připojení se opakuje handshake a konfigurace.
  • Neplatné přiřazení pro připojený modul zůstane v přenositelném profilu, ale modul ho dostane jako vypnuté.
  • Offline nebo nekompatibilní modul ponechá External sekci viditelnou jen pro čtení.
  • Napájený modul při ztrátě dat autonomně přejde po timeoutu na konfigurované failsafe duty.
  • Neúplné čtení nebo chyba CRC automaticky neresetuje celou sdílenou I2C sběrnici.

10.4 I2C správce#

  • Samostatně hlídá známé adresy světelného modulu a MPU6050 na 0x68/0x69; nedělá plošný scan všech adres.
  • Rozlišuje opakovaný address NACK a skutečnou poruchu sběrnice.
  • Potvrzuje odpojení a zajišťuje opakované vyhledání bez restartu RX.
  • Při bus error provede odložený bus-clear, uvolnění vodičů, nejvýše 9 pulzů SCL, STOP a novou inicializaci Wire.
  • Publikuje snapshot dostupnosti a generaci obnovy; serial hlásí změnu ustáleného seznamu zařízení.
  • MPU6050 je zatím detekce adresy, nikoli gyroskopické řízení, stabilizace nebo zpracování náklonu.

Zdroje: rx_supervisor.cpplib/supervisor/src/rx_supervisor.cpp, rx_light_i2c.cpplib/rx_light_i2c/src/rx_light_i2c.cpp, I2C správcelib/i2c_devices/src/i2c_device_manager.cpp, sdílený protokoli2c_light_module/lib/light_i2c_protocol/include/light_i2c_protocol.h, STM8 projekti2c_light_module/README.md.

11. Teploty a ventilátory#

11.1 Měření ENG/ESC#

  • RX obsluhuje až dva 1-Wire teplotní senzory v samostatném tasku.
  • Každý senzor má adresu, dostupnost, validitu, teplotu a čas posledního validního měření.
  • Kontrola adresního CRC a podporované rodiny senzorů, diagnostika neplatného měření.
  • Periodické znovuvyhledání přibližně po 5 s umožňuje návrat odpojeného senzoru bez restartu.
  • Asynchronní konverze s vyčkáním přibližně 750 ms; měření a čtení probíhá zhruba v sekundovém rytmu a neblokuje řídicí task RX.
  • Vyhlazení platných teplot a přiřazení role ENG nebo ESC podle adresy; nelze jedním čidlem bez rozlišení obsadit obě role.
  • Přenos ENG/ESC do ACK, zobrazení na TFT a detailnější údaje přes web.
  • Hodnota v ACK je kompaktní celostupňová telemetrie. Detailní webový snapshot má bohatší informaci o platnosti/přítomnosti.

11.2 Regulace ventilátorů#

  • Každá role má vlastní křivku o 2–5 bodech, teploty 0–100 °C a PWM 0–100 %.
  • Mezi body se výkon lineárně interpoluje; PWM podél křivky nesmí klesat.
  • Webový graf umožňuje editovat body, přidávat/odstraňovat je v dovoleném počtu a obnovit výchozí křivku.
  • Funkci je nutné přiřadit na skutečný RX OUT jako PWM_FAN_ENG nebo PWM_FAN_ESC.
  • Po startu se používá 2s rozběhový test na plný výkon.
  • Cílová hodnota se vyhodnocuje přibližně jednou za sekundu.
  • Krátký výpadek již známého senzoru používá poslední platnou teplotu; po 10 s bez ní se žádá plný výkon.
  • Pokud není platný senzor vůbec k dispozici nebo role není přiřazena, aktivní fan výstup žádá plný výkon.
  • Změna výkonu má rampu: nahoru rychleji, dolů pomaleji. Přechod cíle na 100 % tedy není totéž jako okamžité přeskočení výstupní rampy.
  • Výpočet fanů pokračuje i při link failsafe; není podmíněn tím, že TX právě posílá dopředný plyn.

11.3 Tepelná ochrana samotného RX#

  • Thermal guard používá interní teplotu jádra RX, nikoli čidla ENG/ESC.
  • V aktuální konfiguraci: warning od 85 °C po 5 s, jeho zrušení pod 80 °C; trip od 95 °C po 2 s nebo bez čekání při validním vzorku 110 °C.
  • Trip je západka, která spustí safety sekvenci. Odkliknutí TFT popupu západku neruší.
  • Důvod warning/trip se posílá diagnostickými bity ACK.
  • Podpora zdroje interní teploty závisí na cílovém ESP32; nedostupné měření se neprezentuje jako platné.
  • Fyzické odpojení napájení thermal power-cut GPIO ještě není hotové. Cílený HW test warning/trip je v TODO.

Zdroje: rx_io.cpplib/rx_io/src/rx_io.cpp, fan_update v rx_supervisor.cpplib/supervisor/src/rx_supervisor.cpp, RX compositionapps/rx_lolin32/src/main.cpp, policy_thermal_guardlib/policy/src/policy_thermal_guard.cpp, výchozí tepelné prahylib/policy/include/policy_thermal_guard.h.

12. Baterie a napájení#

12.1 Měření a nastavení#

  • TX i RX měří napětí baterie a používají vyhlazené hodnoty.
  • Bateriový profil určuje počet článků a full / nominal / cutoff na článek. Web nabízí TX 1S/2S a RX 2S/3S.
  • Procenta se odvozují z napětí a parametrů profilu; nominal odpovídá 35 %, cutoff 0 % a full 100 %, mezi body se interpoluje.
  • Jde o odhad z napětí, nikoli coulomb counter, měření proudu nebo zbývající kapacita v mAh.
  • RX používá automatickou volbu efektivního 2S/3S počtu článků v příslušné profilové větvi; zachycená 3S sada se při poklesu za běhu nepřepne na 2S. Účinný počet je společný pro procenta a ochranné prahy.
  • TX má vlastní ADC přepočet z dříve změřené kalibrace. RX nabízí uživatelskou kalibraci voltmetru.

12.2 Kalibrace RX voltmetru#

  • Web zobrazuje raw/EMA ADC a přepočtené napětí.
  • Uživatel zadává skutečné napětí z multimetru a přidává kalibrační vzorky; konfigurace má kapacitu 8 bodů.
  • Nastavení hodnot odporového děliče, výpočet kalibračního přepočtu a reset kalibrace.
  • RX ukládá koeficienty a používá je při následném měření; kalibrace je také v exportu profilu.

12.3 Battery Guard#

  • Varovný práh se odvozuje z profilu pro přibližně 10 %; cutoff z konfigurovaného cutoff napětí.
  • Potvrzovací časy a hystereze tlumí reakce na krátké propady; standardní warning 1,5 s, cutoff 2 s.
  • RX guard lze persistentně zapnout/vypnout z webu nebo příslušnou service operací.
  • Potvrzený RX cutoff vynutí failsafe a nabídne na TFT 15s rozhodovací okno.
  • Klik žádá potvrzený SLEEP; držení 1,2 s žádá persistentní GUARD OFF.
  • Bez rozhodnutí, při ztrátě servisního spojení nebo při dosažení nouzové spodní meze RX dokončí uspání autonomně.
  • Service SLEEP_NOW je přijatelný jen při skutečně čekajícím cutoffu.
  • Před uspáním je prostor pro odeslání diagnostiky/ACK a bezpečné odstavení výstupů.
  • Vypnutí guardu ruší příslušný battery stav; neobchází ostatní nezávislé příčiny failsafe.

12.4 TX kritická baterie a sleep#

  • TX má lokální kontrolu baterie včetně kritického startu.
  • Po potvrzení kritického podpětí zobrazí TX BATTERY / CRITICAL s napětím, vyčká na vykreslení s timeoutem, ponechá hlášku krátce čitelnou a zhasne TFT.
  • Při deep sleepu se vypne Wi-Fi a Bluetooth; společná sleep cesta zakazuje wakeup zdroje. Nelze ji prezentovat jako běžné uspání, ze kterého se rádio samo probudí otočením enkodéru.
  • Firmware neobsahuje nabíjení nebo balancování článků jako uživatelskou funkci.

Zdroje: rc_battery.hlib/common/include/rc_battery.h, policy_battery_guard.cpplib/policy/src/policy_battery_guard.cpp, TX supervisorlib/supervisor/src/supervisor.cpp, RX mainapps/rx_lolin32/src/main.cpp, RX weblib/rx_web/src/rx_web_api.cpp, powermgmt.cpplib/powermgmt/src/powermgmt.cpp.

13. Safety a failsafe#

13.1 TX safety gate#

  • Kontrola při prvním platném spojení, opětovné jištění po delší ztrátě linku a gate při nečinnosti.
  • Rozpoznání neutrálu jen u relevantních/přítomných os a oddělené vyhodnocování aktivity.
  • Ochrana proti drobnému šumu vstupu při rozhodování o nečinnosti.
  • Hlášení konkrétních nevyhovujících os a možnost přejít k jejich trimu nebo do setupu.
  • Výzva k vědomému pokračování podle fáze; vstup do bezpečného stavu nečeká na uživatelské potvrzení.
  • Defaultní hranice dlouhé ztráty pro safety gate je 2,5 s; idle timeout je nastavitelný.

13.2 Obousměrný link a neutralizace#

  • Link politika kombinuje stáří lokálního příjmu a vzdálený příznak linku; ustavení/zánik mají potvrzovací intervaly.
  • Rozlišuje aktuální platnost řídicího spojení a čerstvost telemetrického payloadu.
  • Při ztrátě nebo vnějším safety hold vede osy směrem k neutrálu a spravuje failsafe flags a stav přepínačů.
  • RX používá časově odvozenou rampu, protože se jeho aplikace probouzí událostí. Počet průchodů taskem proto sám neurčuje dobu rampy.
  • TX má zvláštní omezenou RF grace větev pro podmínky vysokého výkonu; tato tolerance je součástí autoritativního LinkFs pro TFT.
  • Zachování bezpečného stavu při restartu protistrany a opětovné ustavení spojení.

13.3 Servo hard-disarm#

  • Samostatná politika rozlišuje sledování linku, rampu, neutral hold a SIGNAL_DISARMED.
  • Konfigurace RX používá 1 s detekce ztráty, 1 s rampy a 1 s neutral hold. Jde o jednotlivé části politiky; setup, TX FS a vynucené ochrany mají vlastní vstupy, takže to není univerzální třísekundový timeout každé situace.
  • Po disarmu servo driver fyzicky drží signál LOW, nepřestane pouze měnit poslední puls.
  • Opětovné odjištění je řízené stavem spojení a příslušných ochranných požadavků.
  • Naviják má navíc svůj nezávislý signal arm/disarm.
  • Import profilu a Wi-Fi megatransfer mají potvrzené vynucení disarmu před citlivou operací.

13.4 Setup a nezávislé ochrany#

  • Vstup do setupu vynucuje bezpečný řídicí stav; RX throttle je v setupu nulový.
  • Povolené testování vybraného serva je výslovně oddělené od řízení plynu.
  • Ztráta linku, požadavek FS z TX, battery cutoff a thermal trip zůstávají rozlišitelné příčiny.
  • Chyba service transakce sama nezastaví periodické odesílání řízení; ovládaná funkce ale může zůstat v bezpečně odmítnutém stavu.
  • Při failsafe RX ruší ruční světelné příspěvky, nuluje naviják, navazující disarm ruší jeho odjištění a světelná logika přidává výstražná světla.

Zdroje: safety_gatelib/policy/src/policy_safety_gate.cpp, linkfslib/policy/src/policy_linkfs.cpp, servo_disarmlib/policy/src/policy_servo_disarm.cpp, rx_iolib/rx_io/src/rx_io.cpp, TX supervisorlib/supervisor/src/supervisor.cpp, RX mainapps/rx_lolin32/src/main.cpp.

14. Rádiový přenos a vyhledání RX#

14.1 Průběžné řízení a telemetrie#

  • nRF24 se současnou konfigurací 250 kbit/s, HW ACK/retry a softwarovou kontrolou integrity payloadů.
  • TX paket 18 B: flags, sekvence, steering, throttle, dvě AUX osy, maska přepínačů, service request a CRC16.
  • RX ACK 13 B: ENG/ESC/core teplota, napětí baterie, service odpověď, aplikované switch bity, flags, diagnostika a CRC8.
  • RC_PROTO_VER = 13 je diagnostická konstanta; číslo verze se neposílá jako další pole každého řídicího paketu.
  • RF vrstva doplňuje transportní sekvenci, PA flags a CRC. Sekvence TX je podle kontraktu vyloučena z aplikační CRC16.
  • TX vysílá poslední celý snapshot z Pošťáka v samostatném rytmu, obvykle po 5 ms.
  • RX vybere platná data z přijaté dávky a publikuje je aplikaci. Notifikace po dávce probíhá po uvolnění SPI.
  • RX IRQ má záložní polling pro případ chybějícího přerušení.
  • HW potvrzení přenosu a přítomnost ACK telemetrického payloadu se evidují odděleně.
  • WELCOME rozšíření ACK může přidat 10bajtové jméno a jeho CRC; základní 13B struktura ACK se tím nemění.

14.2 Scan a identita#

  • Vyhledávání na 13 předvolených RF kanálech 125, 115, …, 5.
  • Přibližně 50 ms na kanál, pět průchodů, nominální okno 3,25 s.
  • Zapamatuje nalezené kanály a validní jména RX, výsledky podrží pro výběr.
  • Otočením se volí výsledek, klik vybere nalezený kanál, dvojklik scan opustí.
  • Bez platného výsledku klik nepředstírá úspěšné připojení.
  • Nalezené jméno může pomoci zvolit odpovídající TX profil; aktuální identita pro CONNECTED se obnovuje podle přijímače.
  • Jde o discovery a výběr kanálu. Není zde doložené frekvenční hopping řízení, spektrální analyzátor ani individuální kryptografické párování modelu.

14.3 Adaptivní RF výkon#

  • Automatika pracuje s MIN/LOW/HIGH; MAX je ruční úroveň.
  • Vyhodnocuje úspěšnost přenosu, chyby CRC, řadu selhání, dobu ticha a filtrované skóre linku.
  • Při špatném spojení výkon zvyšuje, při dlouhodobě dobrém ho může snižovat.
  • V paketech posílá stav PA i požadavek na změnu výkonu protistrany.
  • Časová hystereze a cooldown omezují neustálé přepínání.
  • Ruční MAX mění TX RF periodu na 10 ms, po opuštění se vrací standardních 5 ms.
  • Zobrazované link procento je odhad z přenosových statistik, nikoli analogové RSSI nRF nebo změřená vzdálenost.

14.4 Lokální obnova nRF#

  • Po přibližně 200 ms bez platného příjmu kontrola dostupnosti čipu a jeho provozních registrů.
  • Pokud je čip zdravý, samotná vypnutá protistrana nezpůsobuje zbytečný reinit.
  • Při závadě úplná reinicializace a readback aktuální konfigurace; opakování nejdříve po 1 s.
  • Obnova drží aktuální kanál/výkon a příslušný scan stav.
  • Reinit nepředstírá nový validní paket, neomlazuje stará data a neruší tak failsafe.
  • Počet kontrol, pokusů a úspěchů je součástí diagnostiky. Úspěšný readback místního čipu není sám důkazem obnoveného spojení s RX/TX.

Zdroje: rc_protocol.hlib/common/include/rc_protocol.h, rf_nrf24.cpplib/rf/src/rf_nrf24.cpp, rf_pa_control.cpplib/rf/src/rf_pa_control.cpp, rf_tx_scan.cpplib/rf/src/rf_tx_scan.cpp, tx_scan_ui.cpplib/supervisor/src/tx_scan_ui.cpp.

15. Potvrzované servisní operace#

15.1 Co service kanál umí#

SkupinaOperace
SYSTEMPing, volba TX AP jako cíle RX, volba sdíleného Wi-Fi klientského profilu
SMART_DRIVEAuto blinkry a střed blinkrů od trimu; RAM nebo persistentní zápis
LIGHT_CONTROLRuční levý/pravý blinkr, brzdové a zpátečkové světlo, čtení/zápis jasu rampy
SERVO_SETUPČtení a RAM zápis šesti diff/gear poloh; explicitní save RX konfigurace
WINCH_CONTROLČtení/zápis rychlosti a vlastního arm/disarm
BATTERY_CONTROLČtení/persistentní zápis guardu, potvrzení uspání při cutoffu
BRAKE_ABSČtení/zápis pěti nastavení pulzní brzdy, explicitní save
LOG_CONTROLČtení/persistentní přepnutí RX loggeru a smazání RX logů
MEGATRANSFERPřenos Wi-Fi klientského profilu přes RF

15.2 Potvrzení, chyby a opakování#

  • Service má 4 B v každém směru uvnitř běžného paketu/ACK.
  • Jedna aktivní transakce, ID 1–15; kontrola shody ID, tasku a parametru.
  • TX opakuje požadavek do konečného výsledku, timeoutu nebo limitu pokusů.
  • Lokální mez standardní transakce je 1500 ms nebo 64 dokončených RF cyklů, podle toho, co nastane dříve.
  • RX si pamatuje výsledek dokončeného požadavku a na duplicity odpoví bez opakování účinku, například NVS zápisu.
  • BUSY dovolí pokračování asynchronní práce; terminální chyba se odlišuje od úspěchu.
  • Fronta TX dokáže slučovat čekající požadavky na tutéž hodnotu, například rychlé změny absolutní rychlosti navijáku.
  • Explicitní CANCEL a automatická expirace relací umožňují obnovu i po restartu TX.
  • RX rozlišuje nově publikovaný RF snapshot a opakované přečtení starého; starý request po výpadku nemá znovu založit relaci.
  • Hodnoty až 4 B se přenášejí po potvrzovaných fragmentech. Zápis se aplikuje až po úplném sestavení a kontrole.
  • Širší diff/gear hodnoty používají tuto cestu například tam, kde již nestačí kompaktní znaménkový bajt.

15.3 Wi-Fi megatransfer#

  • SSID a heslo lze předat RX přímo po nRF, tedy ještě bez funkčního společného Wi-Fi spojení.
  • Kontrolní service rámec řídí fáze BEGIN/DATA/END/CANCEL. Datový fragment využije 8 B jinak určených pro čtyři analogové osy.
  • Pouze při FS: TX drží setup, nuluje přepínače a RX potvrdí READY až po fyzickém servo LOW.
  • Payload má verzi, délky, SSID/heslo a CRC32, nejvýše 103 B ve 13 datových fragmentech.
  • RX nejprve konfiguruje STA v RAM, čeká na skutečné připojení a IP; NVS commit provede až po úspěchu.
  • Připojovací probe neběží jako plný RX setup webserver.
  • Při chybě/cancelu před commitem obnoví předchozí RAM cíl a uvolní relaci. Již potvrzený commit se neruší.
  • Celková lease 45 s, receive-progress timeout 3 s, připojovací pokus 20 s.
  • Nově publikované ACK a hodnoty jednotlivých fází se kontrolují tak, aby staré OK nepotvrdilo následující krok.
  • CRC poskytuje kontrolu přenosové integrity. Tento přenos není šifrovaný.

Zdroje: rc_service.cpplib/rc_service/src/rc_service.cpp, rc_megatransfer.cpplib/rc_service/src/rc_megatransfer.cpp, RX service runtimelib/rx_service_runtime/src/rx_service_runtime.cpp, TX fronta a provisioninglib/supervisor/src/supervisor.cpp.

16. Wi-Fi a komunikace webů#

  • Běžné RC řízení používá nRF. Wi-Fi se zapíná pro setup a příslušné servisní/provisioning operace.
  • TX může vytvořit AP nebo se připojit jako klient k existující síti.
  • RX se může připojit k TX AP nebo ke společné klientské síti podle svého uloženého/deferred cíle.
  • Cílový TX host/IP umožňuje RX najít TX pro presence zprávy. Položka TX host (client) není sama důkazem přejmenování vlastního mDNS hostname TX.
  • RX průběžně oznamuje IP/presence TX; tato dostupnost určuje, zda lze použít RX HTTP operace.
  • TX funguje jako HTTP prostředník konfigurace, importu/exportu, baterií, teplot, logů a OTA stavu RX.
  • Presence ping má vlastní task, takže odchozí síťové čekání neblokuje přijímání RX HTTP požadavků.
  • RX web runtime má opakované připojení, při delší nedostupnosti restart Wi-Fi a ještě později recyklaci serveru; aktuální intervaly těchto stupňů jsou 5/45/180 s.
  • Síťové apply může být odložené, aby se nejprve dokončila obsluha požadavku a konfigurace se měnila ve správném lifecycle.
  • Opustit setup znamená také ukončit příslušnou webovou relaci/testování.

Zdroje: webcore.cpplib/webcore/src/webcore.cpp, rx_web_runtime.cpplib/rx_web_runtime/src/rx_web_runtime.cpp, RX presence taskapps/rx_lolin32/src/main.cpp, app_web_api.cppapps/tx_s3/src/app_web_api.cpp.

17. OTA#

17.1 Nabídka a volba aktualizace#

  • TX v Setup Wi-Fi klientském režimu stáhne katalog a zjistí kandidáty pro sebe a dostupný typ RX.
  • Podpora katalogu stable a beta, aktuálních verzí jednotlivých rolí a příznaku povinné dvojice.
  • Volba TX, RX nebo koordinovaného TX+RX podle kandidáta.
  • Katalogová řádka zůstává dostupná i pro vědomý downgrade nebo návrat mezi stable/beta.
  • CURRENT označuje shodu s běžící verzí; PAIR WAIT neproveditelnou párovou nabídku.
  • Automatický prompt se omezuje na novější/force nabídku; starší firmware se nevnucuje automaticky.
  • Potvrzení nebo odložení na TFT.

17.2 Instalace#

  • HTTP/HTTPS streaming obrazu do OTA oddílu bez potřeby celé binárky v RAM.
  • Kontrola deklarované velikosti a SHA-256, pokud je příslušná metadata poskytují v platném formátu; není správné tvrdit, že libovolný ručně zadaný obraz vždy musí mít hash.
  • RX API kontroluje cílové zařízení požadavku a poskytuje busy/průběh/chybu.
  • Při TX instalaci se koordinovaně pozastaví RF a runtime/helper tasky a uspí displej.
  • Při chybě TX instalace se obnoví příslušné dříve běžící části a další perioda začne bez dohánění staré práce.
  • RX má vlastní instalační task a během zápisu zastavuje příchozí webovou obsluhu.
  • TX+RX se instaluje v pořadí RX nejprve, s kontrolou návratu/verze RX před pokračováním TX.
  • Úspěch končí restartem do nového obrazu; očekávaný restart se odlišuje od běžné poruchy spojení v této relaci.
  • Boot guard pro obraz PENDING_VERIFY po 10 s doběhu validačního okna zavolá označení obrazu za validní. Jde o potvrzení běhu firmware, nikoli úplný HW autotest všech serv, senzorů a rádia.
  • HTTPS klient používá setInsecure(). Přítomnost HTTPS a SHA-256 zde neznamená implementovaný podpis firmware nebo plné ověření certifikátu serveru.

Známá hranice: pozdní příchod RX do již běžícího Setup Wi-Fi nemusí po dokončené TX kontrole znovu přepočítat párovou nabídku. Oprava a její HW test zůstávají v TODO. OTA ESP32 také není vzdálená aktualizace STM8 světelného modulu.

Zdroje: ota_check.cpplib/ota/src/ota_check.cpp, rx_ota.cpplib/rx_ota/src/rx_ota.cpp, RX OTA HTTP obsluhalib/rx_web/src/rx_web_api.cpp, TX lifecycleapps/tx_s3/src/tx_app.cpp.

18. Diagnostika a blackbox#

18.1 Živá diagnostika#

  • CPU obou jader, free/min heap, RAM/PSRAM podle HW.
  • Doby práce a zpoždění tasků, maxima, vynechané periody, rozestupy RF pokusů, pause/resume počty.
  • RF počty úspěšných/neúspěšných přenosů, ACK payloadů, chybných CRC, retry ARC, prodloužených write časů a fail streak.
  • RX IRQ notifikace a timeout probuzení, prázdná probuzení, velikosti dávek, sekvenční mezery/duplicity a selhání fronty ACK.
  • Místní a vzdálený PA, požadavky na změnu výkonu, ticho protistrany a link score.
  • Registry rádia a čítače health check/reinit.
  • ADC snapshoty, kalibrační stav, raw teploty, 1-Wire presence/CRC/family diagnostika.
  • Stav servisní transakce včetně typu, parametru, hodnoty, stáří, výsledku a počtu RF pokusů.
  • Serial logy boot/reset důvodu, OTA, přechodů safety, konfigurace, připojených I2C zařízení a stack high-water údajů.

18.2 TX failsafe/service blackbox#

  • Průběžný kruhový buffer v RAM a zachycení kontextu před incidentem i po něm.
  • Spouštěče zahrnují přechod do logovatelného failsafe, zestárlé ACK a neúspěšnou service transakci.
  • Běžný setup a úmyslný idle gate jsou rozlišené, aby samy netvořily falešné poruchové záznamy.
  • Výchozí předincidentní vzorkování je 50 ms a 60 vzorků. Po triggeru se pořizují další vzorky; při capture se může vzorkovat rychleji, takže počet post-vzorků není automaticky pevná délka v sekundách.
  • Oddělený writer zapisuje CSV do LittleFS, poslední záznam a číslované záznamy.
  • Omezení počtu uložených incidentů a rezerva volného místa chrání prostor pro další diagnostiku.
  • Není to nepřetržitý archiv každého RF paketu.

18.3 TX crash záznam#

  • RTC kruhový buffer uchovává předresetový kontext tam, kde ho daný reset zachová.
  • Při příštím startu se rozlišuje crash-like reset, například watchdog/panic/brownout, a dostupná stopa se uloží do crash CSV.
  • Vede poslední i číslované crash záznamy.
  • Nejde o záruku uchování RAM při úplném odpojení napájení.

18.4 RX blackbox#

  • Jeden CSV obsahuje rychlé F řádky RF/link stavu a pomalé S řádky baterie, teploty, bezpečnostních západek, servo fáze a heapu.
  • Rychlá stopa sleduje 5ms řídicí rytmus při RF událostech; za ticha pokračuje přes 20ms fallback. Širší RF statistiky mají 20ms obnovu.
  • Pomalé snapshoty po 500 ms, při triggeru vynucený aktuální kontext.
  • Kapacita rychlého prebufferu 240 vzorků, pomalého 20 vzorků; nominálně 1,2 s rychlého a 10 s pomalého kontextu, při tichu závisí skutečný časový rozsah rychlé stopy na kadenci.
  • fs_cause_mask rozlišuje link, TX FS, thermal trip a battery cutoff.
  • Oddělený writer, poslední i číslované soubory, omezený počet záznamů.
  • Cílené ověření nového vícerychlostního CSV skutečným RF výpadkem je stále otevřený HW test.

18.5 Přístup k logům#

  • TFT Setup/Logs: persistentní přepnutí obou loggerů a potvrzené společné mazání.
  • Web Status: seznam, stažení a samostatné mazání TX/RX záznamů.
  • TX má navíc podmíněný USB MSC read-only disk RCLOGS, pokud překlad podporuje CONFIG_TINYUSB_MSC_ENABLED.
  • Tento disk nabízí README, FS_LAST.CSV, číslované FS soubory, CRASH.CSV a číslované crash soubory; snapshot se obnovuje při vstupu do setupu.
  • USB MSC není univerzální vlastnost všech RX desek ani důkaz, že disk bude vidět s libovolným USB režimem buildu.

Zdroje: TX loggery a USB MSClib/supervisor/src/supervisor.cpp, RX loggerapps/rx_lolin32/src/main.cpp, RF statistikylib/rf/include/rf_nrf24.h, sysstatslib/sysstats/src/sysstats.cpp, rc_debuglib/ui/src/rc_debug.cpp.

19. Ukládání a vnitřní runtime#

19.1 Co přetrvává přes restart#

OblastUkládaná data
TX globálníHW kalibrace, metadata aktivního profilu/počtu profilů, jas, účinný idle timeout, bateriové nastavení, Wi-Fi, přepínač loggeru
TX modelováJméno/kanál profilu, mapy os, přepínačové vazby, jízdní varianty a jejich metadata
RX modelováJméno/kanál, logická OUT mapa, parametry, auto blinkry, ABS, External konfigurace
RX další blokySíťový cíl, baterie/voltmetr, teplotní role/fany, povolení loggeru
LittleFSIncidentní/crash CSV a podpůrné soubory, případně boot média
  • Verze konfigurací, kontrola velikosti/magic a CRC tam, kde příslušný formát CRC používá.
  • Migrace starších dat a bezpečné výchozí hodnoty pro chybějící/neplatné bloky.
  • RX NVS aktuálně v11, přenositelný JSON v6; čísla neoznačují stejný formát.
  • Persistentní RX OUT identita se ukládá logicky a překládá přes cílový pinout.
  • Živé ruční světelné příspěvky, rychlost/arm navijáku, tempo a PA override jsou provozní stav; není vhodné očekávat jejich obnovení jako uložených povelů po restartu.
  • NVS TX a RX jsou samostatní vlastníci. Například uložit profil na TX neznamená automaticky uložit kompletní RX OUT mapu.

19.2 Časování a předávání dat#

TX: tx_io → kalibrace/mapování v inputs → supervisor/safety/menu
        → poslední úplný TX snapshot v Pošťáku → RF

RX: RF → poslední úplný RX snapshot v Pošťáku → safety + rx_supervisor
        → rx_io → DOUT / PWM / servo / externí světelný stav

Zpět: RX telemetrie + aplikovaný stav + service odpověď → Pošťák → RF ACK → TX
  • TX HW sampler 1 ms na core 0, supervisor 5 ms na core 1, RF vlastní 5ms task na core 1; kalibrace má samostatný pomalý helper z hlediska priority.
  • Periodické tasky vlastní svůj čas; nezávisí na centrálním fázovaném spouštění ostatních tasků.
  • Při zpoždění se přeskočí zmeškaný cyklus a čas se založí znovu, nedohání se fronta starých povelů.
  • Pošťák je atomický ping-pong mailbox; raw snapshoty a UI/light snapshoty tvoří další hranice posledního úplného stavu.
  • RX aplikaci budí validní RF batch, výstupy STEER/THROTTLE používají 5ms řízení. Bez událostí se probudí po 20 ms pro safety a další postup.
  • Pomalé 1-Wire konverze, I2C, síťové čekání, OTA a zápis logů mají vlastní task/lifecycle.
  • HW servo/PWM generátory zajišťují pulzy mezi průchody aplikačního tasku.
  • Sdílený SPI guard koordinuje přístup tam, kde je sběrnice sdílená; aplikace neobchází transport přímými zápisy do rádia.
  • Start načítá a validuje konfiguraci, sestaví moduly, připraví bezpečný počáteční stav a teprve pak spouští příslušné runtime části. OTA používá explicitní pozastavení/obnovu.

Zdroje: configstore.cpplib/configstore/src/configstore.cpp, rx_nvs.cpplib/supervisor/src/rx_nvs.cpp, Postak.cpplib/postak/src/Postak.cpp, tx_app.cppapps/tx_s3/src/tx_app.cpp, RX mainapps/rx_lolin32/src/main.cpp, shared_spi_guardlib/shared_spi_guard/src/shared_spi_guard.cpp.

20. Rozhraní API#

Toto je funkční mapa zaregistrovaných cest, nikoli kompletní specifikace metod, parametrů, validace a chybových návratů. Existence cesty také neznamená, že má vlastní tlačítko v UI.

20.1 TX lokální API#

OblastCesty
Stav/setup/api/state, /api/setup
Kalibrace/api/calib/live, /start, /center, /save, /dismiss, /dead, /resetdead, /invert — posledních sedm pod prefixem /api/calib
Wi-Fi/api/wifi/mode, /api/wifi/scan, /api/wifi/mode/set
RX presence/api/rx/present, /api/rx/presence
Profily/api/profiles, /api/profile, /api/active, /api/profile_add, /api/profile_remove
Profilová data/api/ax, /api/bn, /api/dm, /api/drive_mode_active
Náhled/metadata/api/tx/preview, /api/tx/meta, /api/apply
API kopie/reset/api/copy, /api/reset
Baterie/api/battery
TX logy/api/logs, /api/logs/file, /api/logs/erase, /api/logs/enabled

20.2 TX prostředník pro RX#

Pod prefixem /api/rx:

  • /cfg, /cfg/apply, /cfg/save;
  • /profile/export, /profile/import;
  • /rf/channel/apply, /rf/channel/save;
  • /testmode/set;
  • /battery, /temps, /temps/raw;
  • /ota/state, /ota/install;
  • /logs, /logs/file, /logs/erase, /logs/enabled.

20.3 Nativní API přijímače#

RX poskytuje odpovídající cesty pod /rx: konfiguraci, import/export, kanál, testmode, baterii, teploty, OTA a logy. Navíc má /rx/net/get a /rx/net/set pro síťové nastavení.

Čtení RX konfigurace vrací i metadata funkcí, parametrů, fyzicky dostupných OUT a kapacit a informace externího modulu. Díky tomu se web přizpůsobuje konkrétnímu přijímači.

Zdroje: registrace TX cestlib/webcore/src/webcore.cpp, TX aplikační handlersapps/tx_s3/src/app_web_api.cpp, registrace a handlers RXlib/rx_web/src/rx_web_api.cpp.

21. Hranice, rezervy a rozdíly proti starším přehledům#

Při katalogizaci je nutné rozlišit nabízený název, skutečný runtime účinek a prakticky ověřený scénář. Následující rozdíly byly zjištěné kontrolou aktivního kódu; tento dokument je neopravuje změnou firmware.

PoložkaPřesný současný stav
Počet ovladačů TXČtyři analogové a osm digitálních slotů jsou kapacita firmware. Aktivní pinout zapíná A0/A1, SV1/SV2 a pomocný SVC; ne všech osm fyzických přepínačů a čtyři páky.
PBRAKE / parkovací brzdaTX akce a wire bit existují; RX ho načte do ctx.pbrake_on, ale ve výpočtech výstupů se toto pole nepoužívá. Hotový zásah do ESC/serva/brzdového světla touto cestou nebyl nalezen. Starší označení „máme parkovací brzdu“ je příliš silné.
Ruční BRAKE v LIGHTSFunguje jako ruční brzdové světlo přes service. Není to chybějící implementace PBRAKE.
WINCH_IN / WINCH_OUTJsou v nabídce RX digitálních funkcí a čtou wire bity; současné TX bindingy je nenabízejí a Drive/WINCH posílá service rychlost pro WINCH_PWM. Plnohodnotné běžné ovládání samostatných digitálních směrů z aktuálního TX nebylo doloženo.
AUX osy vs. RX AUX funkceDvě proporcionální osy se mapují a přenášejí. Historické RX digitální FuncId AUX0/AUX1 ale vracejí nulu a nejsou v nabídce OUT. Rádio tím automaticky nemá dvě další uživatelsky přiřaditelná proporcionální serva.
WORK_LIGHTProtokol/přiřazení existuje; light_state.work_on je v RX pevně false. Samostatné ovládání chybí.
HAZARD OUTInterní FuncId a výpočet existují, ale současná nabídka RX OUT ho nezahrnuje. Uživatelský hazard funguje přes levý/pravý blinkr a světelnou logiku.
MPU6050Dostupnost I2C adresy, nikoli čtení pohybu nebo stabilizace řízení.
TEMPODrží procento plynu, ne měřenou rychlost vozu.
ABSPulzní brzda bez snímačů prokluzu; označení není důkaz uzavřené regulace ABS.
Thermal guardChrání podle core teploty RX. ENG/ESC mají měření, indikaci a fan řízení, ne stejný automatický core trip.
Thermal power-cutSoftwarový trip a odstavení serv existují; fyzické vypnutí napájení je otevřená HW práce.
ACT maskaAplikovaný stav logiky, zejména dokončené diff/gear sekvence; není fyzická zpětná vazba všech přepínačů a periferií.
TFT SCAN/SETUP_WIFIKontextové obrazovky; běžné otáčení přepíná jen pět provozních obrazovek.
Web servo cycleNavzdory názvům JS jde o ON override; není zde spuštěný automatický cyklus OFF/ON.
Kopie/reset TX profiluImplementované API, nikoli automaticky viditelná tlačítka současného Profileru.
USB log diskPodmíněná TX TinyUSB MSC větev. Je nutné rozlišit podporovaný kód a skutečný USB režim překladu.
OTA boot validaceČasově odložené potvrzení běžící aplikace, ne univerzální test všech funkcí zařízení.
OTA a Wi-Fi integritaCRC/hash nejsou podpis/autentizace. Megatransfer není šifrovaný a HTTPS instalátor neověřuje serverový certifikát.
RX zálohaZahrnuje funkční konfiguraci, baterie, čidla/fany a External, ale ne síťová hesla, logy nebo OTA stav.

Některé modulové README mají starší odstavec o neuzavřeném praktickém testu, přestože kořenové WE_HAVE již zaznamenává jeho dokončení (například import profilu nebo Wi-Fi chybové scénáře). Pro testovací stav má přednost současný kořenový přehled. Tento průchod nepřevádí dříve potvrzené funkce zpět mezi neověřené.

Aktuálně otevřené HW ověření se podle TODO týká zejména core thermal warning/trip a nového RX vícerychlostního blackboxu; otevřená oprava OTA se týká pozdního připojení RX. Výkonové dimenzování PCB světelného modulu a výběr thermal power-cut HW jsou další samostatné oblasti.

22. Mapa zdrojového pokrytí#

OblastHlavní implementace použitá při průchodu
Aktivní role a deskyplatformio.iniplatformio.ini, rc_pins.hlib/common/include/rc_pins.h
TX composition a profilytx_app.cppapps/tx_s3/src/tx_app.cpp, app_profiles.cppapps/tx_s3/src/app_profiles.cpp, app_web_api.cppapps/tx_s3/src/app_web_api.cpp
Fyzické vstupytx_io.cpplib/tx_io/src/tx_io.cpp, tx_inputs.cpplib/inputs/src/tx_inputs.cpp, calib.cpplib/calib/src/calib.cpp
TX řízení, tempo, rychlé menu, battery UIsupervisor.cpplib/supervisor/src/supervisor.cpp
Hlavní menu a scan UItx_menu_controller.cpplib/supervisor/src/tx_menu_controller.cpp, tx_scan_ui.cpplib/supervisor/src/tx_scan_ui.cpp
TFTui.cpplib/ui/src/ui.cpp, CARlib/ui/src/ui_tft_car_view.cpp, runtimelib/ui/src/ui_tft_runtime_views.cpp, setuplib/ui/src/ui_tft_setup_views.cpp, topbarslib/ui/src/ui_tft_topbars.cpp
Webové stránkyStatuslib/webcore/src/webcore_status_page.cpp, Calibrationlib/webcore/src/webcore_calib_page.cpp, Profilerlib/webcore/src/webcore_profiler_page.cpp
RX aplikace a ochranná orchestracemain.cppapps/rx_lolin32/src/main.cpp
RX funkční výpočty a metadatarx_supervisor.cpplib/supervisor/src/rx_supervisor.cpp, rx_metahelper.cpplib/supervisor/src/rx_metahelper.cpp
Fyzické výstupy a senzoryrx_io.cpplib/rx_io/src/rx_io.cpp, servo_mcpwm.cpplib/servo_mcpwm/src/servo_mcpwm.cpp
Čisté ochranné politikysafety gatelib/policy/src/policy_safety_gate.cpp, link FSlib/policy/src/policy_linkfs.cpp, servo disarmlib/policy/src/policy_servo_disarm.cpp, batterylib/policy/src/policy_battery_guard.cpp, thermallib/policy/src/policy_thermal_guard.cpp, brake ABSlib/policy/src/policy_brake_abs.cpp
RF a mailboxrf_nrf24.cpplib/rf/src/rf_nrf24.cpp, PAlib/rf/src/rf_pa_control.cpp, scanlib/rf/src/rf_tx_scan.cpp, Postaklib/postak/src/Postak.cpp, wire kontraktlib/common/include/rc_protocol.h
Servicerc_service.cpplib/rc_service/src/rc_service.cpp, megatransferlib/rc_service/src/rc_megatransfer.cpp, RX runtimelib/rx_service_runtime/src/rx_service_runtime.cpp
KonfiguraceTX configstorelib/configstore/src/configstore.cpp, RX NVSlib/supervisor/src/rx_nvs.cpp, RX codeclib/rx_profile_codec/src/rx_profile_codec.cpp
Síťwebcorelib/webcore/src/webcore.cpp, RX weblib/rx_web/src/rx_web_api.cpp, RX web runtimelib/rx_web_runtime/src/rx_web_runtime.cpp
OTATX checker/installer a boot guardlib/ota/src/ota_check.cpp, RX installerlib/rx_ota/src/rx_ota.cpp
I2C světlasprávce sběrnicelib/i2c_devices/src/i2c_device_manager.cpp, RX klientlib/rx_light_i2c/src/rx_light_i2c.cpp, STM8 projekt/protokoli2c_light_module/README.md
Napájení a diagnostikapowermgmtlib/powermgmt/src/powermgmt.cpp, sysstatslib/sysstats/src/sysstats.cpp, rc_debuglib/ui/src/rc_debug.cpp, loggery v TX supervisoru a RX main

Exportované reference share_kamarad_sw/src_refs, staré archivy a build cache nebyly považovány za aktivní zdroj funkcí. Samotná existence historické knihovny, enum hodnoty nebo pomocné API funkce nebyla automaticky označena za dostupné ovládání rádia.

Pro zadaný výraz nebyla nalezena žádná kapitola.