La catena dal satellite al tuo browser è più semplice di quanto sembri. Sei ingredienti, ben distinti.
Un piccolo CubeSat in orbita LEO (Low Earth Orbit, 400-700 km) ha a bordo un modulo LoRa identico a quello che potresti comprare tu — un SX1278 da pochi euro, magari indurito per le radiazioni spaziali. Ad intervalli regolari (di solito ogni 20-60 secondi) trasmette un beacon: un pacchetto LoRa di 30-100 byte che contiene la sua identità e i dati che vuole mandare a terra.
Il satellite trasmette su frequenze precise — solitamente 437 MHz (banda satellite amatoriale) o 433 MHz (banda ISM). La potenza è tipicamente 20-30 dBm (100-1000 mW), che è poco, ma a 500 km di distanza basta per essere captato grazie alla sensibilità del modulo LoRa (-148 dBm).
La stazione di terra è in pratica un ricevitore LoRa fisso sintonizzato sulla frequenza giusta nel momento giusto:
Quando il backend sa che un satellite sta per passare sopra la tua zona, manda un comando MQTT alla tua stazione: "alle 14:32:18 metti il LoRa su 437.2 MHz, SF12, BW 250 kHz". La tua stazione si configura e si mette in ascolto.
Quando il SX1278 cattura un pacchetto, l'ESP32 lo prende, ci aggiunge metadati (orario, RSSI, SNR, frequenza esatta) e lo pubblica via WiFi sul broker MQTT pubblico di TinyGS (mqtt.tinygs.com). MQTT è un protocollo super-leggero pensato proprio per IoT: il pacchetto vola via in millisecondi, anche su connessioni asimmetriche o lente.
Sul backend di TinyGS un servizio software:
Su tinygs.com vedi:
Una cosa importante: tu non devi sapere quale satellite passa quando, su quale frequenza, con quale modulazione. Il backend conosce le orbite di tutti i satelliti supportati (i loro TLE vengono aggiornati ogni giorno da NORAD), conosce la posizione GPS della tua stazione, e ti pianifica automaticamente i pass migliori. La tua stazione si configura in tempo reale a ogni cambio.
Tu accendi l'ESP32, dai le credenziali WiFi, dai le tue coordinate, e il lavoro è finito. Il resto succede da solo.