esp32idf_APRS
Una stazione APRS completa su un singolo ESP32
ESP-IDF nativo, senza Arduino.
IGate · Digipeater · Tracker · Meteo · Telemetria, con amministrazione web integrata, un modem software AFSK/FSK direttamente sul chip, collegamento ad APRS-IS, un framework di driver per sensori a runtime e aggiornamenti firmware OTA.
Benvenuti#
Benvenuti nella documentazione di esp32idf_APRS — una stazione APRS IGate, Digipeater, Tracker, Meteo e Telemetria nativa in ESP-IDF (C, senza Arduino) che gira interamente su un singolo microcontrollore ESP32.
Che cos’è questo progetto, in parole semplici#
La maggior parte delle stazioni APRS che si incontrano sul campo sono
costruite da due componenti separati: un computer (o una scheda a
singola board) che esegue un software APRS come Direwolf o Xastir, più un
TNC hardware o software in ascolto su una radio. esp32idf_APRS riduce
tutta questa pila — il modem audio, il motore dei pacchetti, la logica di
gateway, il digipeater e l’interfaccia dell’operatore — al firmware di un
singolo ESP32, senza PC, senza Raspberry Pi e senza scheda audio esterna
nel circuito.
Il convertitore analogico-digitale dell’ESP32 stesso ascolta l’uscita dell’altoparlante o del discriminatore di una radio, e il firmware demodula l’audio AFSK o FSK via software, interamente sul chip. Da lì decodifica i pacchetti AX.25, decide se instradarli verso internet, ritrasmetterli via RF, o entrambe le cose, e con la stessa facilità può generare il proprio traffico: beacon di posizione, report meteo, telemetria, messaggi, bollettini e oggetti. Tutto ciò si configura tramite una pagina web servita dal dispositivo stesso, via Wi-Fi, dal browser di un telefono o di un laptop — non c’è console seriale, non serve software speciale da installare, e non serve ricompilare il firmware per le impostazioni di uso quotidiano.
In breve: una scheda piccola ed economica, più una semplice interfaccia audio verso una radio, diventa un IGate, digipeater e tracker APRS completo e autonomo, che si configura da un browser e poi si lascia funzionare.
Che cos’è l’APRS?#
APRS — l’Automatic Packet Reporting System — è un protocollo digitale di radioamatore per lo scambio in tempo reale, da molti a molti, di piccole informazioni tattiche: la posizione di una stazione, il suo stato, brevi messaggi di testo, letture meteo, valori di telemetria e annunci generici. A differenza di un collegamento dati punto-punto, l’APRS è fondamentalmente un sistema di diffusione — chiunque ascolti sulla frequenza condivisa, o osservi la rete via internet, vede il traffico nel momento in cui avviene.
Una breve storia#
L’APRS è stato creato da Bob Bruninga, nominativo WB4APR, ingegnere di ricerca senior presso la United States Naval Academy. I suoi primi esperimenti di mappatura della posizione risalgono al 1982 su un Apple II, e già nel 1984 aveva una versione dedicata — il Connectionless Emergency Traffic System — funzionante su un Commodore VIC-20 per tracciare cavalli e cavalieri durante una corsa di resistenza di 100 miglia. Verso la fine degli anni “80 il software passò al PC IBM e, una volta combinato con il protocollo di radio a pacchetto AX.25 e, più tardi, con ricevitori GPS economici, si trasformò in un sistema generale di reportistica tattica in tempo reale. Fu presentato formalmente alla comunità dei radioamatori e chiamato APRS — un acronimo costruito sul nominativo dello stesso Bruninga — in un articolo del 1992 alla Computer Networking Conference dell’ARRL. Bruninga ha continuato a mantenere il protocollo e il suo sito di riferimento fino alla sua scomparsa nel 2022, dopo la quale è stata fondata la APRS Foundation per portare avanti lo sviluppo del protocollo.
Due sviluppi hanno trasformato l’APRS da esperimento di nicchia nella radio a pacchetto a servizio di radioamatore ampiamente utilizzato: il GPS economico ha reso pratico il reporting automatico e continuo della posizione, e la nascita di APRS-IS — la dorsale connessa a internet formata da stazioni riceventi (IGate) che inoltrano il traffico RF sulla internet pubblica — ha fatto sì che l’attività di una stazione potesse essere vista in tutto il mondo in pochi secondi, non solo da chi si trovava nel raggio della radio.
Uso attuale#
Oggi l’APRS viene utilizzato in tutto il mondo per il tracciamento di veicoli ed escursionisti, il reporting di stazioni meteo, la messaggistica di testo a corto raggio tra operatori, il supporto a eventi e reti, la logistica di ricerca e soccorso, e semplicemente per monitorare chi è attivo localmente. Il traffico viene scambiato su una frequenza VHF condivisa in ciascuna regione (comunemente 144.390 MHz in Nord America; altre frequenze si applicano altrove), ritrasmesso localmente dai digipeater, e collegato alla rete globale APRS-IS tramite gli IGate — gli stessi due ruoli implementati da questo firmware. Siti aggregatori come aprs.fi permettono a chiunque di osservare quel traffico globale su una mappa nel browser. Molte radio commerciali per radioamatori includono ormai l’APRS di fabbrica, ed è cresciuto un vasto ecosistema di software open source — trattato in dettaglio alla fine della pagina successiva — attorno al protocollo, su piattaforme desktop, mobile ed embedded.
Come è organizzata questa documentazione#
Questa documentazione è organizzata in tre parti, ciascuna con il proprio insieme di capitoli:
Funzionalità — ciò che la stazione fa dal punto di vista dell’operatore: gateway, l’interconnessione BrandMeister, digipeating, beacon, messaggistica, il risponditore di interrogazioni, meteo, telemetria, bollettini, oggetti, il bot Telegram opzionale, la posta radio Winlink, la pagina del radiomodem e l’amministrazione web — che ospita anche la vista live del ricevitore GNSS.
Capacità — le proprietà del firmware trasversali alle funzioni: i profili del modem, il filtraggio, la localizzazione, l’archiviazione, OTA, la rete e il supporto hardware.
Interni — come è costruito: la sequenza di avvio, la mappa dei task, il flusso dei dati, la catena di segnale DSP, il motore di configurazione e il registro dei sensori.
Per iniziare
Funzionalità
- IGate — gateway APRS-IS
- Interconnessione BrandMeister (senza DMR)
- Digipeater
- Beacon e il pianificatore
- Il pianificatore di beacon condiviso
- Le risposte alle query viaggiano sullo stesso task
- Funzioni di servizio
- Jitter anti-collisione
- Scaglionamento del TX dentro una passata
- Estensioni dati (PHG / RNG / DFS / DF)
- Posizione GPS in tempo reale e rotta/velocità
- Smart Beaconing
- Altitudine compressa
- Sovrapposizioni numeriche in un rapporto compresso
- La capacità di messaggistica sta nell’identificatore di tipo dati
- Commento di posizione Mic-E
- Testo di stato Mic-E
- Direzione d’antenna ed ERP nei rapporti di stato
- Ambiguità di posizione
- L’estensione di precisione !DAO!
- Il marcatore di non archiviazione !x!
- Localizzatore Maidenhead nei rapporti di stato
- Budget di lunghezza del rapporto di stato
- Blocco di frequenza
- Sub-campi ripetitore di Oggetti/Elementi
- I timestamp sono UTC
- Messaggistica APRS
- Risponditore di query APRS
- Report meteorologico
- Telemetria
- Bollettini, Oggetti e Item
- Bot Telegram
- Il proprio file di configurazione
- Avvio supervisionato
- L’avviso di avvio proprio del servizio è spento
- Avviso di avvio
- Una sola sessione TLS, condivisa da un lotto
- Inoltro dei messaggi della stazione a Telegram
- Inoltro dei bollettini a Telegram
- Comandi integrati
- Chi può parlare con il bot
- La pagina Telegram
- Posta radio Winlink (APRSLink)
- Radiomodem
- Perché alcuni campi richiedono un riavvio
- Protocollo
- Audio / AFSK
- Demodulatore di ricezione
- Interfaccia audio
- I tre pulsanti di diagnostica
- Messa in servizio di una stazione nuova, in ordine
- Profili suggeriti
- Riferimento dei campi
- Ciò che deliberatamente non c’è in questa pagina
- Risoluzione dei problemi
- Amministrazione web
Capacità
- Il modem software
- Filtraggio
- Classificazione per tipo di payload
- Gate di query generica (obbligatorio, entrambe le direzioni)
- Gate di portata locale (RF→INET)
- Gate di prefisso locale (RF→INET)
- Whitelist / blacklist di indicativi (budlist)
- Unwrap selettivo di terze parti (solo INET→RF)
- Validazione del filtro server
- Filtro di visualizzazione del registro traffico
- Rete
- Archiviazione e OTA
- Localizzazione