# Crossfire / INAV Telemetry Tracker Leggere la telemetria di un aeromodello **INAV**, ritrasmessa dal modulo TX **ExpressLRS** via **TX Backpack / ESP-NOW**, con un **ESP32 DevKit** a terra. Obiettivo finale: **antenna tracker**. ## Catena dati ``` INAV FC (GPS) --CRSF--> RX ELRS --link RF--> TX ELRS --> TX Backpack --ESP-NOW (canale 1, MAC=UID)--> ESP32 a terra ``` Il backpack ritrasmette i frame di telemetria CRSF; l'ESP32 imposta il proprio MAC = UID (hash della bind phrase) per riceverli. ## Sottoprogetti ### `01_telemetry_reader/` Sketch minimale **RX-only**: riceve, fa parsing CRSF (terseCRSF) e stampa una dashboard leggibile su seriale. Il punto di partenza più semplice per validare la catena. Vedi `01_telemetry_reader/README.md`. ### `02_telemetry_bridge/` **Firmware unico multi-modo** (consigliato d'ora in poi). 4 modalità a runtime selezionabili via **comando seriale** (`!` poi `0`..`3`, oppure `!` poi `m` per il successivo; scelta salvata in NVS, la board si riavvia nel nuovo modo): - **HUMAN** — dashboard leggibile - **CRSF_DUMP** — dump esadecimale dei frame - **LTM** — traduzione CRSF→LTM v2 per **mwptools** (monitoraggio volo) - **MAVLINK** — traduzione CRSF→MAVLink v2 per **mwptools** (come LTM, più la corrente istantanea in Ampere) Codice condiviso in `lib/EspNowCrsf` (ESP-NOW/ricezione) e `lib/Ltm` (encoder LTM). `terseCRSF` e la libreria MAVLink ufficiale (`c_library_v2`) sono vendorizzate in `lib/`. Vedi `02_telemetry_bridge/README.md`. ## Cosa è fattibile e cosa no (verificato) | Funzione | Stato | Note | |---------------------------------------------|--------------|------| | Lettura telemetria (GPS/batt/assetto/link) | ✅ Fattibile | downlink via backpack | | Monitoraggio volo in mwptools (LTM) | ✅ Fattibile | LTM unidirezionale | | MSP bidirezionale verso FC **via backpack** | ❌ No | backpack è downlink-only (ELRS maintainer, #3510) | | MSP bidirezionale (missioni/config) | ⚠️ Serve altro link | SiK/3DR seriale o mLRS/MSPX | ## Setup comune 1. **VSCode + PlatformIO**, apri la sottocartella del progetto che vuoi usare. 2. Genera l'**UID** dalla bind phrase su https://expresslrs.github.io/web-flasher/ e mettilo in `src/my_config.h`. 3. Sulla radio (RadioMaster): Lua ELRS → **Backpack → Telemetry = ESPNOW**. 4. Verifica che i sensori GPS compaiano sulla radio (EdgeTX → Telemetry → Discover). 5. Build → Upload → Monitor (115200). ## Riferimenti - ELRS Backpack Telemetry: https://www.expresslrs.org/software/backpack-telemetry/ - Limiti uplink (maintainer): https://github.com/ExpressLRS/ExpressLRS/discussions/3510 - Esempio ESP-NOW: https://github.com/druckgott/ELRS-Backpack-Example-ESPNOW - Parser CRSF: https://github.com/zs6buj/terseCRSF - LTM (INAV): https://github.com/iNavFlight/inav/blob/master/src/main/telemetry/ltm.c - mwptools: https://codeberg.org/stronnag/mwptools