É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
- Installer
- Étape 1 : récupérer les TLE actuels
- Étape 3 : Trouvez les événements qui augmenter/culminer/définir`Satellite.find_events()`renvoie une liste plate d'événements (0 = hausse, 1 = point culminant, 2 = défini). Traitez-les en trois étapes :```python
- Étape 4 : décalage Doppler sur une passe
- Étape 5 : Lier le budget pour chaque pass
- Étape 6 : Émettez iCalendar pour que les passes apparaissent dans votre calendrier
- Étape 7 : Exécutez-le sur cron
- Remplacement de STK Cloud, pièce par pièce
- Lectures complémentaires
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 solfrom 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 passesUtilisez 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).
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')É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 Cloud | Remplacement gratuit |
|---|---|
| Prédiction de passes | Skyfield |
| Budget des liens | Analyseur de budget des liaisons satellites rftools |
| Courbes Doppler/distance | Portée Skyfield |
| Masques d'élévation + terrain | Skyfield + DEM local (SRTM) |
| Visualisation 3D | Cesium.js |
| Dépistage des conjonctions | SOCRATES |
Lectures complémentaires
- Documentation Skyfield
- Catalogues Celestrak TLE
- rftools Satellite Pass Predictor — version hébergée de ce planificateur pour les satellites amateurs les plus courants
- Migration depuis STK Cloud : alternatives gratuites — article complémentaire sur le remplacement du flux de travail STK complet
- Dimensionnement d'un budget de liaison UHF CubeSat — exemple travaillé de bout en bout
Articles connexes
Scripting Satellite Link Budgets with ITU-Rpy (Python Examples)
STK-free link-budget automation: sweep frequency, rain availability, and elevation in pure Python using the ITU-Rpy reference implementation of P.618/P.676/P.840. Companion to the rftools Satellite Link Budget Analyzer.
30 avr. 2026
Satellite CommunicationsSizing a 9600-baud UHF Downlink for a 3U CubeSat: Full Walkthrough
End-to-end link budget for an amateur-band 3U cubesat: EIRP, ground-station G/T, ITU-R propagation losses, and Monte Carlo availability. Uses the Amateur CubeSat preset.
29 avr. 2026
Satellite CommunicationsMigrating from STK Cloud: Free Alternatives for Link Budget and Orbit Analysis
Ansys is sunsetting STK Cloud in March 2026. Here are the free open-source replacements for the two things it did best — ITU-R link budgets and orbital pass prediction.
29 avr. 2026