Skip to content
RFrftools.io
Satellite Communications30 avril 202610 min de lecture

Élaboration d'un calendrier de pass pour les stations terrestres avec Skyfield

Ansys STK Sunset-ready : calculez les prévisions de passage SGP4 pour votre radio amateur ou votre station au sol Cubesat à l'aide de Skyfield. Procédure pas à pas complète en Python avec récupération TLE, masques d'altitude, Doppler et exportation iCalendar.

Sommaire

Pourquoi avez-vous besoin d'un planificateur de passes local

Si vous gérez une station SatNOGS, une cabine de radioamateur qui suit l'AO-91/ISS/NOAA, ou un segment sol Cubesat à un stade précoce, vous avez besoin de prévisions de passes automatisées. Les outils commerciaux (STK, NOVA) sont excessifs. Les prédicteurs Web gratuits (AMSAT, Heavens-Above) ne scriptent pas bien. STK Cloud expirant en mars 2026, l'alternative gratuite la plus propre est Skyfield, le successeur Python moderne de PyEphem.

Cet article présente un planificateur complet de stations terrestres en environ 80 lignes de Python : récupérez de nouveaux TLE, calculez les prochaines 24 heures de passes pour une liste de satellites, filtrez par altitude minimale, calculez le Doppler pour la fréquence de votre liaison descendante et émettez iCalendar pour que les passes apparaissent dans votre application de calendrier.

Installer

§ 0§

C'est ça Skyfield extrait ses propres éphémérides (DE421, IERS) lors de la première exécution, soit environ 17 Mo mis en cache localement.

Étape 1 : récupérer les TLE actuels

Les TLE dérivent : utilisez-les dans les 7 jours suivant l'époque. Extrayez l'ensemble d'éléments actuel de Celestrak :

§ 1§

Choisissez vos cibles par leur nom (elles sont sensibles aux majuscules et minuscules dans le fichier Celestrak) :

targets = [
    by_name['AO-91 (FOX-1B)'],
    by_name['ISS (ZARYA)'],
    by_name['NOAA 19'],
    by_name['GreenCube (IO-117)'],
]
## Étape 2 : Définissez votre station au sol
from skyfield.api import wgs84, load

ts = load.timescale()
my_station = wgs84.latlon(40.0150, -105.2705, elevation_m=1624)  # Boulder, CO
min_elevation_deg = 10  # horizon mask to skip low passes
Utilisez le paramètreelevation_m: il affecte sensiblement la plage d'inclinaison à des angles de faible altitude.

Étape 3 : Trouvez les événements qui augmenter/culminer/définirSatellite.find_events()renvoie une liste plate d'événements (0 = hausse, 1 = point culminant, 2 = défini). Traitez-les en trois étapes :
from datetime import timedelta

t0 = ts.now()
t1 = ts.from_datetime(t0.utc_datetime() + timedelta(hours=24))

for sat in targets:
    t, events = sat.find_events(my_station, t0, t1,
                                altitude_degrees=min_elevation_deg)
    # Group into rise/peak/set triples
    triples = zip(t[0::3], t[1::3], t[2::3])
    for rise, culm, setting in triples:
        # Peak elevation
        topo = (sat - my_station).at(culm)
        alt, az, dist = topo.altaz()
        print(f'{sat.name:30s}  {rise.utc_iso():20s}  peak {alt.degrees:4.1f}°  slant {dist.km:4.0f} km')
Ignorez les satellites déjà au-dessus de l'horizon aut0(la liste des événements commence par une paire culminant/set).

Étape 4 : décalage Doppler sur une passe

Pour l'UHF amateur (435 MHz), une passe peut décaler votre porteuse de ±10 kHz ; votre récepteur doit suivre. Calculez le Doppler instantané à partir de la plage de fréquence :

§ 5

Pour un passage aérien typique de 6 minutes avec l'AO-91, vous verrez un balayage Doppler d'environ +10 kHz (hausse) à 0 (zénith) et −10 kHz (réglage). Suivez-le sur le VFO principal de la radio pour ne pas perdre le signal.

Étape 5 : Lier le budget pour chaque pass

Une fois que vous avez défini la plage d'inclinaison, introduisez-la dans le calculateur de perte de trajectoire en espace libre rftools ou calculez en ligne :

§ 6

Pour obtenir un budget complet des liaisons Monte-Carlo avec des modèles de propagation UIT-R, utilisez le Satellite Link Budget Analyzer et partagez l'URL du scénario avec le journal de bord de votre station.

Étape 6 : Émettez iCalendar pour que les passes apparaissent dans votre calendrier

C'est là que le planificateur devient utile pour les humains :

§ 7§

Importez lepasses.icsdans Apple Calendar/Google Calendar/Outlook et vous recevrez des notifications push 5 minutes avant chaque passe.

Étape 7 : Exécutez-le sur cron

Déposez le script au~/bin/station-passes.pyet crénez-le une fois par jour :

§ 8§

Associez-le aucurl --upload-fileà un calendrier Webdav et votre téléphone verra automatiquement chaque passe.

Remplacement de STK Cloud, pièce par pièce

Pour les activités amateurs, cubesats et petites entreprises commerciales, la boîte à outils combinée remplace les fonctionnalités quotidiennes de STK Cloud :

Fonctionnalité STK CloudRemplacement gratuit
Prédiction de passesSkyfield
Budget des liensAnalyseur de budget des liaisons satellites rftools
Courbes Doppler/distancePortée Skyfield
Masques d'élévation + terrainSkyfield + DEM local (SRTM)
Visualisation 3DCesium.js
Dépistage des conjonctionsSOCRATES
Pour les études commerciales sur la conception de missions ou les programmes institutionnels, vous aurez toujours besoin d'un STK ou d'un GMAT de la NASA pour ordinateur de bureau. Pour tout le reste, y compris les revues de conception d'AMSAT, la pile Skyfield + rftools est complète.

Lectures complémentaires

Articles connexes