DEV Community

Cover image for L'antenne qui visait les étoiles
Yann Klein
Yann Klein

Posted on Edited on AI-assisted

L'antenne qui visait les étoiles

English version here 🇬🇧

Prologue : Ouvre la fenêtre et regarde le ciel 🌌

En ce moment même, pendant que vous lisez ces lignes, des satellites valant plusieurs millions d'euros passent au-dessus de vos têtes. Certains d'entre eux transmettent des images de la Terre à qui veut bien les écouter. Pas seulement en interne à leur propre entreprise, ou bien à des services gouvernementaux, à n'importe qui. Les images sont transmises non chiffrées, vers tout point de la Terre, sur des fréquences que tu peux capter avec environ 100 euros de matériel et un balcon qui donne sur le ciel.
Et ils ne transmettent pas que des images de la Terre: on peut aussi capter données météo, des info sur le traffic aérien/maritime, les radios amateurs, et même des vidéos de la Station spatiale internationale 🛰️ !

Quand j'ai découvert ce fait assez incroyable, j'ai senti qu'un nouvelle espace s'ouvrait à moi, comme si je pouvais vraiment atteindre les étoiles, depuis chez moi. De nouvelles aventures spatiales et de nouvelles découvertes m'attendaient, un satellite après l'autre.

Ceci est une histoire de satellites (d'imagerie météo en particulier!). C'est aussi l'histoire de comment ce qui a commencé par un « et si je tentais ça », un petit challenge, s'est transformé en une station de réception distribuée sur deux pays. Une épopée impliquant un vieux MacBook ressuscité en serveur, mon père sur une échelle à Théding en France configurant un système que je suis digitalement depuis Barcelone en Espagne et, au moment où j'écris ces lignes, un satellite géostationnaire qui dérive lentement dans le ciel vers le seul point qui me permettrait de le recevoir. Et ladite épopée n'est pas terminé: cet article se termine sur un engin spatial encore en mouvement préparant la suite de l'histoire.

Mais présentons les personnages de cette aventure: les satellites.
Nous allons rencontrer deux types de satellites, et leur différence est la clé de tout ce projet:

La première, ce sont les satellites en orbite polaire 🛰️. Ils volent bas, à quelques centaines de kilomètres d'altitude, et vite, du nord au sud pendant que la Terre tourne en dessous, si bien qu'ils finissent par passer partout (au-dessus de vous aussi ! 👾). Ce sont ceux que je traque dans cette histoire : en particulier, la série russe METEOR-M, à 800 km au-dessus de nos têtes, qui émet en bande VHF autour de 137 MHz. Le hic, c'est qu'ils ne sont au-dessus de nos têtes que dix à quinze minutes à chaque fois. Ce genre de satellite sort de l'horizon, décrit un arc au-dessus de nous, puis disparaît, et on a juste ce laps de temps pour capter tout ce qu'il raconte avant qu'il ne s'en aille. Si on le rate, on est bon pour attendre l'orbite suivante (dans 1 à 2 jours !).

La deuxième famille, ce sont les satellites géostationnaires 🌍. Ils se trouvent incroyablement loin, à environ 36 000 km, sur une orbite calée si précisément qu'ils font le tour de la Terre en exactement un jour, ce qui fait que, vus du sol, ils semblent parfaitement immobiles. Fixés dans le ciel. Toujours là, toujours tournés vers la même face de la planète, en émission continue. Pas de fenêtre de dix minutes 🤩. Mais ils émettent tout là-haut en bande L (~1,7 GHz), une tout autre type de signal. Gardez ces satellites ça en tête, la fin de cet article met en scène l'un d'eux, l'Elektro-L3, littéralement en train de glisser jusqu'à sa nouvelle position.


Chapitre 1 : « Et si je pointais une antenne vers le ciel ? »

Mon challenge étant clair, il était temps de passer à la pratique : j'ai acheté une clé USB RTL-SDR bon marché, livrée avec une petite antenne dipôle télescopique, j'ai déployé l'antenne sur ma terrasse, je l'ai pointée, un peu au petit bonheur la chance, vers le ciel, j'ai attendu un passage de METEOR, et j'ai lancé l'enregistrement.

Kit de clé RTL-SDR

Faisons un petit zoom sur cette clé USB, parce qu'elle est vraiment centrale dans ce project.


🤓 Le coin des geeks : les petits récepteurs RTL-SDR sur lesquels toute la communauté d'amateur de signaux satellites s'est construite n'ont jamais été conçus pour être des radios. Ils ont commencé leur vie comme de simples tuners de télévision DVB-T, des clés USB pour regarder la TV numérique sur son ordinateur portable. Vers 2012, des gens en train de bidouiller la puce ont réalisé qu'on pouvait contourner le décodage TV et accéder aux échantillons radio bruts de l'antenne caché à l'intérieur.
Grâce à cette découverte, une clé TV à 60 € devenait une radio digitale (SDR) polyvalente. Elle capture une tranche du spectre radio, la numérise, et envoie les données brutes à un ordinateur. Tout la partie radio, la detection de fréquence, le filtrage, la démodulation, transformer une ondulation du signal en pixel, se passe en aval dans un logiciel sur un ordinateur. Dans un sens, cette clé USB est bien moins qu'une radio, elle est à peine plus qu'une antenne, et laisse la majorité du travail aux dévelopeurs.


C'est un super outil, très simple et adaptable. Ce qui signifie aussi que quand ça ne marche pas, il n'y a pas de « radio » à blâmer. Dans la plupart des cas, l'erreur et logicielle... et elle vient de nous (et dans ce cas précis, moi!).

Et quand j'ai commencé à l'utiliser... ça n'a pas du tout marché!

Le satellite est passé, pile à l'heure prévue (j'expliquerai pourquoi l'horaire est si précis dans un chapitre plus loin). J'ai enregistré le passage. J'ai lancé le décodeur. Et voilà ce qui en est sorti...

Première image reçue

Vous voyez cette bande presque noire 👆? C'est l'image que j'ai obtenue. Pas même une image noire rectangulaire. Dix minutes de diffusion satellitaire au-dessus de ma tête, et j'ai capté une baguette noire 🥢 (ça, ou bien une image de Rorschach pour ordinateur?).

Mais ce premier, hmm, machin noire, avait de l'importance, une fois que j'ai compris ce que je regardais. C'était le fragment du passage où le signal avait réussi, brièvement, à se hisser au-dessus du bruit radio : le moment où le satellite était au plus haut et au plus près, traversant le moins d'air et de distance possible. Partout ailleurs, quand il était bas sur l'horizon et loin, son signal ne dépassait jamais le vacarme radio de la ville, et le décodeur n'avait rien du tout, ou rien d'autre à se mettre sous la dent que du bruit statique, qu'il a fidèlement restitué en noir ⬛️. L'image n'était pas un échec total, puisqu'elle m'a aidé à diagnostiquer mon problème.

Mon problème, c'était le signal 📶. Ou plutôt son absence 🥸 : le satellite se trouve à quelques centaines de kilomètres d'altitude et émet à peine quelques watts, et le temps que ce murmure atteigne mon décodeur, il était déjà englouti dans tout le bruit radio de fond d'une ville. Le décodeur a besoin que le signal dépasse ce plancher de bruit pour reconstruire une image. Le mien y arrivait à peine, une fois, au sommet du passage, et se noyait partout ailleurs.

Cette bande noire de bruit radio n'avait rien d'inspirant. Mais si la différence entre le noir et une vraie image n'était qu'une question de qualité de signal, alors c'était un problème que j'étais en capacité de résoudre!

Et la première solution était dans la boîte depuis le début : l'antenne ! 📡 J'avais bien branché l'antenne, mais je l'avais traitée comme un accessoire alors que c'était en réalité un instrument. Une antenne dipôle n'est pas juste un bout de metal qu'on pointe vers des choses, c'est un objet paramétré finement dont la longueur est censée correspondre à la longueur d'onde qu'on cherche à capter. La mienne n'était parametrée sur rien de particulier...


Chapitre 2 : « L'antenne : bien plus qu'un bout de metal... ! » 📡

Il s'est avéré que l'antenne avait un manuel. Je n'avais pas lu le manuel. Du Yann (-> moi) tout craché !

Le dipôle fourni avec le kit RTL-SDR n'est pas figé : les tiges sont télescopiques, et la base permet de régler l'angle entre elles. Et bien les régler fait toute la différence entre une capture terrestre impeccable et rien du tout. Pour la bande 137 MHz, la recommandation est la suivante : chaque bras doit mesurer 53,4 cm de long, avec un angle de 120° entre eux. J'ai déployé les tiges télescopiques à 53,4, réglé le V, et les images se sont immédiatement améliorées.

Description de l'image

La plupart d'entre nous n'ont eu affaire qu'à des antennes de radio FM/AM 📻. Et si vous vous souvenez bien, les régler n'a jamais été très difficile. C'est dû à la force et à l'omniprésence du signal FM/AM autour de nous. Les signaux satellites sont une tout autre histoire.


🤓 Le coin des geeks : ce 53,4 n'est pas un chiffre magique trouvé par tâtonnement, c'est tout simplement 137 MHz écrit en centimètres. Les ondes radio ont une longueur physique. À 137 MHz, chaque onde mesure environ 2,19 mètres de crête à crête (c'est la vitesse de la lumière divisée par la fréquence). Une antenne dipôle doit mesurer une demi-longueur d'onde, d'une extrémité à l'autre, donc chacun de ses deux bras doit faire un quart de longueur d'onde, soit environ 54,7 cm, raccourci légèrement à ~53,4 cm pour tenir compte du comportement réel du métal à ses extrémités (2-3 % de rabot nécessaires). Et si on veut recevoir une fréquence plus haute? Les tiges doivent être plus courte, parce que l'onde l'est aussi.

Schéma de réception du signal satellite


La question des dimensions s'est révélée être la partie facile. L'orientation, elle, a été la partie difficile, et j'y ai perdu des journées entières.

C'est un moment de galère que je veux partager avec vous pour souligner que dans ce genre d'aventures, il y a beaucoup de frustrations, d'erreurs, d'attentes, mais que la joie du succès final en vaut la chandelle 😌. Au début, j'avais placé l'antenne en V dressé à la verticale, pointes vers le ciel, avec la logique de la pointer en direction du satellite. Grossière erreur! Et la comprendre m'a pris du temps et de nombreux échanges avec mes amis IA (dédicaces à Claude et au Chat).
Quand le satellite est juste au-dessus de nos têtes, son signal voyage verticalement vers nous, mais le champ électrique E du signal, celui que nous allons finalement capter, est perpendiculaire à la direction du signal : dans ce cas précis, il est horizontal. En plaçant l'antenne à la verticale, E n'a aucune action sur ladite antenne précisément au moment où le satellite est vertical au-dessus de nous, au plus près, et envoie son signal le plus clair... J'avais construit une antenne précisément optimisée pour ignorer les meilleures 90 secondes de chaque passage !

La correction qui a apporté le plus gros bond en qualité d'image de tout le projet était assez simple : mettre l'antenna à l'horizontale. Un dipôle horizontal à un maximum de sensibilité pile à la verticale au-dessus de lui. Après ce changement, mon antenne capté son meilleur signal précisément quand le satellite était le plus proche !

L'orientation était aussi un point clé. L'antenne dipôle doit être alignée est-ouest, pour que les zones mortes tombent à l'est et à l'ouest, là où le satellite n'est pas, et que le lobe principal couvre l'arc nord-sud qu'il parcourt.

Étapes du fonctionnement de l'antenne


🤓 Le coin des geeks : un satellite météo polaire ne prend pas une photographie. Il construit son image ligne par ligne, comme un scanner, ou une vieille imprimante de bureau. À son bord, un miroir balaie de gauche à droite, perpendiculairement à la direction de vol du satellite, peignant une fine bande est-ouest du sol en dessous. Puis le mouvement nord-sud du satellite le fait avancer d'un cran, il peint la bande suivante, puis la suivante, empilant des milliers de bandes pour former une image. L'image est tissée : la largeur vient du miroir balayeur, la hauteur vient de l'orbite. Vous comprenez maintenant pourquoi ma première image était une bande noire..!


Une fois qu'on visualise l'image construite de cette façon, une conséquence en découle, propre à l'endroit où je vis. Je suis dans un « intérieur » de Barcelone, un espace encaissé par des immeubles qui rognent mon horizon au nord et au sud. On pourrait croire que ça rend juste mes images mauvaises visuellement. Ce que ça fait en réalité, c'est les rendre plus courtes en hauteur, tout en gardant leur pleine largeur, à cause du mécanisme de balayage.

Chaque ligne de balayage est-ouest est tracée par le satellite qui regarde vers le bas et vers les côtés, sur une fauchée large d'environ 2 900 km. Il se moque complètement de l'allure de mon horizon : pour que je reçoive cette ligne entière, il me suffit de capter le satellite à cet instant précis, et au milieu du passage, il est haut dans le ciel, bien dégagé de tout bâtiment. Donc j'obtiens la pleine largeur, à chaque fois. Ce que les immeubles me volent, c'est le début et la fin du passage, les moments où le satellite est bas sur les horizons nord et sud, caché derrière du béton avant même d'avoir dégagé ma ligne de toits. Ce sont le haut et le bas de l'image. Du coup, mes captures ressemblent à une image large : le balayage est-ouest complet du continent, mais coupé court au nord et au sud, parce que les toits de Barcelone décident de la portion de chaque passage que j'ai le droit de voir.

Passage reçu depuis Barcelone

Ce fait a été un coup assez dur pour mon project : j'ai découvert que certaines limites été physiques, qu'on ne pouvait ni les amplifier ni les contourner en se réorientant. Cet immeuble sur mon horizon nord n'allait jamais bouger. Si je voulais un jour les tranches de ciel que Barcelone me cachait, je n'aurais pas besoin d'une meilleure antenne. J'aurais besoin d'un ciel différent. (Gardez cette idée en tête, elle est à quelques pays de distance!)

🔧 Notes de construction : le dipôle en V pour capter ses premières images

Ce montage devrait vous donner une assez bonne première image de la Terre. 🌍

  • Dimensions : chaque bras à 53,4 cm (un quart de longueur d'onde à 137 MHz), mesuré depuis le connecteur central jusqu'à la pointe. Les deux bras de longueur égale.
  • Angle : environ 120° entre les deux bras, le « V ». (Cela élargit et uniformise le diagramme de réception zénithal par rapport à un dipôle droit à 180°.)
  • La mettre à l'horizontale : c'est le point le plus important. Posez le V bien à plat. « Pointes vers le haut » est l'erreur classique du débutant : ça dirige le trou de signal de l'antenne pile sur le satellite au zénith, c'est-à-dire au moment le plus fort du passage. À plat = sensibilité maximale au-dessus.
  • Choisissez ensuite l'azimut : les éléments alignés est-ouest, avec un horizon dégagé.
  • Emplacement : plus votre horizon nord-sud est dégagé, plus vos images seront grandes verticalement (voir la note sur le balayage plus haut).
  • Note sur la polarisation (le saviez-vous ?) : la liaison descendante de METEOR est polarisée circulairement, alors qu'un dipôle droit (comme notre antenne en V) est polarisé linéairement. À cause de ça, on perd environ 3 dB à cause de ce décalage. Ça fonctionne quand même très bien. L'antenne la plus adaptée est une antenne QFH (hélice quadrifilaire), qui figure sur ma liste de possibles futur projets (un peu trop chère/compliquée à construire pour le moment).

Après cette étape, l'antenne était enfin bien configurée, et les images le prouvaient. Mais le signal restait faible, faisant perdre une partie des images reçues. Et, l'antenne étant désormais bien réglée, mon hypothèse était qu'une autre partie de mon montage étouffait le signal. Ce qui nous amène au chapitre 3.


Chapitre 3 : « Et si j'amplifiais le signal avant que le câble ne le dévore ? »

L'antenne étant configurée, mes images étaient passées d'une bande noire à une image reconnaissable des côtes de la Méditerranée. Du progrès! Mais elles étaient loin d'être parfaites :

Première image de la Terre

Les bandes noires horizontales que l'on voit sont des lignes perdues. Souvenez-vous, dans le chapitre précédent, que l'image est peinte ligne par ligne. Donc, une bande noire correspond à un moment où le signal est tombé sous le seuil dont le décodeur a besoin. L'image arrivait proprement pendant un moment, puis se déchirait en noir, puis se rétablissait. Des passages entiers gâchés par ces trous.

Je suis donc parti à la chasse pour trouver où je perdais du signal. Et je l'ai trouvé dans le composant le moins glamour de tout le montage : le câble.

Voilà ce qui se passe : il y a environ 10 mètres de câble coaxial entre mon antenne et la clé USB de décodage radio RTL-SDR. J'avais commencé avec 5 mètres, puis j'ai hissé l'antenne du sol de ma terrasse jusqu'à ma pergola pour dégager plus de ciel (des images plus hautes, exactement comme promis au chapitre précédent), ce qui a coûté 5 mètres de plus. 10 mètres, c'est beaucoup de câble à faire traverser à un signal déjà faible, et un câble coaxial n'est pas un supraconducteur, loin de là. Chaque mètre atténue un peu le signal, grignotant ce signal ténu qui avait déjà traversé 800 km. Ça, c'est déjà gênant, mais supportable. Le vrai problème est plus subtil, et c'est le cœur de tout ce chapitre :


🤓 Le coin des geeks : dans une chaîne de réception, l'ordre de vos composants détermine votre plancher de bruit, et la toute première chose que touche le signal compte plus que tout le reste combiné. C'est une vraie loi, qui porte un nom (la formule de Friis pour le bruit en cascade), et en version courte : chaque étage ajoute un peu de son propre bruit, mais la contribution de chaque étage est divisée par tout le gain qui le précède. Donc le premier composant apporte tout son bruit, le deuxième apporte son bruit réduit par le gain du premier étage, le troisième encore plus réduit. Placez un bon amplificateur en premier, avec un vrai gain, et il noie mathématiquement le bruit de tout ce qui suit, y compris une clé RTL-SDR bon marché et électriquement bruyante !


Voici le piège dans lequel j'étais tombé: la perte électrique d'un câble n'est pas seulement une perte, la perte, c'est du bruit. Un câble avec pertes placé au début de votre chaîne se comporte comme un très mauvais premier étage, en installant un plancher de bruit que rien en aval ne pourra jamais défaire. Donc la question n'est pas « comment amplifier le signal faible ? » mais plutôt « où l'amplifier ? ».

Si vous placez l'amplificateur à la fin du cable, près de la radio RTL-SDR, vous avez déjà perdu! Le signal a d'abord traversé tout ce câble avec pertes, il arrive dégradé, et ensuite vous l'amplifiez... ce que vous amplifiez, c'est le signal ET le bruit du câble ensemble. Vous avez transformer un brouhaha en brouhaha plus fort 🥲. Si au contraire vous placez l'amplificateur juste à l'antenne, avant le câble, il amplifie le notre petit signal radio dès le départ, et ensuite seulement envoie ce signal désormais robuste dans le câble coaxial. Le câble prend toujours sa part, mais c'est la part d'un signal fort. Même câble. Même amplificateur. Résultat opposé, décidé entièrement par l'extrémité à laquelle vous le boulonnez. Et avec 10 mètres de câble, se tromper sur ce choix aurait été fatale.

Le composant qui fait le travail d'amplification est appelé un amplificateur faible bruit, ou LNA en abrégé (Low Noise Amplifier), et celui que j'ai acheté est un Nooelec SAWbird+ NOAA, conçu spécifiquement pour cette bande météo d'environ 137 MHz. Il fait deux boulots à la fois. Il amplifie, en premier dans la chaîne, au niveau de l'antenne. Et la partie « SAW » est un filtre à ondes acoustiques de surface, une petite porte passe-bande qui ne laisse passer qu'environ 137 MHz et rejette le reste.


🤓 Le coin des geeks : ce filtrage est plus important qu'il n'y paraît, parce qu'un amplificateur amplifie tout, ABSOLUMENT TOUT !, y compris les signaux forts dont vous ne voulez pas. Les villes regorgent d'émetteurs puissants juste au-dessus de la bande FM : radio professionnelle, contrôle du trafic aérien, balises de navigation, etc. Si vous laissez tout ça frapper un amplificateur grand ouvert, les signaux les plus forts peuvent le saturer et le désensibiliser au signal faible qui vous intéresse vraiment. Le filtre SAW claque la porte au bruit hors bande avant qu'il n'atteigne l'étage d'amplification, si bien que tout ce précieux gain est dépensé sur votre signal à 137 MHz, et rien d'autre.

Note que ça signifie aussi que vous ne pourrez pas capter de signaux hors 137 MHz avec ce LNA ; si le trafic aérien ou d'autres signaux de la ville vous intéressent, il vous faudra une antenne séparée.


J'ai monté le SAWbird directement au point d'alimentation de l'antenne. Il a besoin d'être alimenté, et la clé RTL-SDR Blog vient à la rescousse : elle peut envoyer une petite tension continue vers le haut, dans le même câble coaxial qui fait descendre le signal (c'est ce qu'on appelle un bias tee), si bien que l'amplificateur puise son énergie dans le câble même qu'il alimente 😻. Une option en plus dans la ligne de commande qui lance le décodage sur mon ordinateur, et le LNA sur la terrasse s'allume.

Et les bandes noires se sont refermées ✨.

Pas entièrement, pas sur tous les passages marginaux, mais la différence a vraiment été notable. Les passages qui se déchiraient auparavant en bandes arrivaient maintenant entiers, de haut en bas. Les images sont passées de « reconnaissables mais abîmées » à « presque toujours complètes ».

Première image complète de la Terre

🔧 Notes de construction : bien ajouter un LNA

  • Quoi acheter : un Nooelec SAWbird+ NOAA (~50 €), un LNA avec un filtre passe-bande SAW intégré, centré sur la bande météo 137 MHz. Il existe des variantes de SAWbird pour d'autres bandes, prenez bien la version NOAA pour METEOR/NOAA en VHF. (Cible différente, filtre différent : un montage GOES/bande L a besoin d'un SAWbird complètement différent, on y reviendra bien plus tard.)
  • La seule règle qui compte : montez-le au point d'alimentation de l'antenne, pas près du récepteur. Un LNA côté radio lutte contre une perte de câble déjà survenue, un LNA côté antenne fixe un plancher de bruit bas avant le câble.
  • La longueur de câble fait partie de l'équation : je fais courir 10 m de câble coaxial d'une antenne montée sur la pergola jusqu'à la clé RTL-SDR. Plus la ligne est longue, plus la règle « LNA à l'antenne » compte : 10 m de perte avant l'amplificateur auraient fixé un plancher de bruit que rien en aval n'aurait pu corriger.
  • L'alimenter : activez le bias tee sur une clé RTL-SDR Blog pour envoyer du courant continu dans le câble jusqu'au LNA (pas besoin de câble d'alimentation séparé jusqu'au toit). Dans SatDump/rtl_sdr, c'est une option/un bouton bias-tee ; rappelez-vous de le désactiver quand vous utilisez la clé pour autre chose. Quand c'est activé, vous devez voir un voyant vert sur votre LNA.
  • Pourquoi le filtre SAW justifie son prix : un LNA non filtré amplifie tout, et un émetteur fort à proximité, hors bande, peut le saturer et le désensibiliser à votre signal faible. Le filtre rejette les déchets avant l'étage de gain. Dans un coin rural tranquille, vous pourriez vous en passer, en ville, non ! Note que le filtre fonctionne même quand le LNA n'est pas alimenté. Pour capter des signaux hors 137 MHz depuis la même antenne, il vous faudra le débrancher physiquement.
  • Ordre du montage complet, de bout en bout : antenne → SAWbird (LNA + filtre) → câble coaxial → clé.

Après cette étape, j'avais une antenne bien conçue, orientée pour mon ciel, avec un amplificateur faible bruit qui amplifiait le signal avant que le câble ne puisse le gâcher. Pour la première fois, capter un bon passage de METEOR paraissait fiable plutôt que dépendant de la chance.

Ce qui, bien sûr, est exactement le moment où un nouveau genre d'insatisfaction apparût! Parce que maintenant je captais les passages de façon fiable... en restant debout devant mon ordinateur, à la bonne minute, en lançant manuellement un enregistrement, puis en lançant manuellement le décodeur, puis en sauvegardant manuellement l'image. Le goulot d'étranglement n'était plus la radio. Le goulot d'étranglement, c'était moi, pauvre être humain qui avait d'autres choses à faire que d'activer une antenne.


Chapitre 4 : « Et si un ordinateur faisait tout ça pendant que je dors ? »

Il y a une fatigue bien particulière qui vient du fait d'être la partie la plus lente de son propre système 🥲. Je pouvais désormais capter un bon passage, mais seulement en étant physiquement présent à la bonne minute, en démarrant l'enregistrement à la main, en attendant dix minutes, en lançant le décodeur, en sauvegardant l'image, et en recommençant pour le satellite suivant le lendemain. La radio fonctionnait. Le goulot d'étranglement avait un nom, c'était Yann (ouais, c'est moi !).

J'ai donc décidé de me retirer de la boucle. Et la machine que j'ai choisie pour me remplacer était de celles que la plupart des gens auraient jetées : un vieux MacBook, largement passé de mode, plus digne de confiance pour rien qui nécessite qu'un humain s'assoie devant. Je l'ai réinitialisé, j'y ai installé Debian, et je l'ai exilé dans une pièce de rangement pour qu'il vive sa seconde vie de serveur.

Description de l'image


🤓 Le coin des geeks : un ordinateur portable, surtout un vieil ordinateur, a fortiori avec un disque SSD, est en secret un excellent serveur maison, et il en dort un dans la moitié des tiroirs du monde. Réfléchissez à ce qu'il a qu'un Raspberry Pi ou une VM dans le cloud n'a pas :

  • un onduleur intégré : la batterie encaisse les coupures et micro-coupures de courant qui, sinon, redémarreraient la machine en plein milieu d'un passage satellite
  • un écran et un clavier intégrés, en permanence disponibles pour exactement le moment où le SSH plante et où vous devez voir ce qui cloche
  • des cartes Wi-Fi et Bluetooth intégrées, assurant toute la connectivité dont un serveur maison a besoin. C'est un ordinateur tout-en-un, auto-alimenté, avec son propre écran, et plutôt portable en plus ! On a juste appris à les voir comme jetables dès qu'ils ne peuvent plus faire tourner le dernier OS 💻💔.

Le cerveau de l'opération, c'est n8n : un outil d'automatisation de workflows très populaire et open source, qui permet de connecter différents services dans une seule et même application (par exemple, connecter Slack à Claude AI et à l'API LinkedIn pour générer et publier automatiquement des posts LinkedIn).

Mon flux de planification des passages

Mon flux de capture d'images

n8n est l'orchestrateur de ma « station de réception satellite » : il calcule quand aura lieu le prochain passage, allume la radio RTL-SDR, enregistre le signal, le décode, traite l'image, et dépose le résultat dans la galerie publique. Tout cela via un planificateur, sans surveillance, pendant que je sirote ma Vodka Martini, sans alcool bien sûr 🙄🍸.


🤓 Le coin des geeks : vous pouvez savoir exactement quand un satellite va passer au-dessus de chez vous, plusieurs jours à l'avance, à la seconde près : leurs orbites sont déterministes. Leur trajectoire est publiée sous forme de TLE (« Two-Line Element », un jeu de deux lignes), un enregistrement texte laconique d'environ 140 caractères décrivant la forme et l'orientation de l'orbite à un instant connu. Donnez ce TLE et vos coordonnées à un programme bien codé et il vous prédit que le satellite apparaîtra au-dessus de votre horizon à, disons, 14h 03 min 27 s demain, montera jusqu'à 71° d'élévation, et se couchera à 14h16.

Explication du TLE


Je n'ai pas fait le calcul moi-même. Je fais plutôt une requête à l'API N2YO. En plus de la position du satellite, je calcule aussi le lever/coucher du soleil grâce à l'API Sunrise-Sunset : la caméra du satellite METEOR est trop faible pour détecter la moindre lumière nocturne venant de la Terre, les images capturées après le crépuscule sont pratiquement noires ⬛️.

Quand le satellite est juste au-dessus de mon antenne et que le soleil brille, n8n exécute ceci :

# 1. Enregistrer le passage en bande de base brute
rtl_sdr -f 137900000 -s 2400000 -g 20 ~/satellite-images/meteor_$(date +%H%M).raw
# 2. Décoder les échantillons bruts en image
./satdump pipeline meteor_m2-x_lrpt baseband \
  meteor_HHMM.raw decoded_HHMM \
  --samplerate=2400000 --baseband_format=cu8

Le décodeur, c'est SatDump, le couteau suisse de la réception d'images satellite. Il transforme des échantillons radio bruts en images jpg de la Terre.

La dernière étape à construire, c'était la publication. Les images décodées avaient besoin d'un chez-elles sur Internet, et j'ai choisi Coolify pour déployer facilement une page web de galerie d'images satellite. C'est un peu comme un Heroku ou un Vercel mais auto-hébergé sur mon MacBook. Il gère l'hébergement de mes sites (via des conteneurs Docker), me donne des tableaux de bord et des déploiements façon git-push, et transforme mon vieux MacBook Pro 2011 en ma propre petite plateforme cloud ☁️ 💻 ☁️.

La page de galerie elle-même est un simple conteneur nginx qui "serve" les images sur une page index.html. Elle est en ligne sur satellite.yannklein.dev, accessible depuis n'importe où dans le monde, malgré le fait que le MacBook soit sur une connexion domestique sans IP fixe, grâce à un tunnel Cloudflare. (Comment ce tunnel fonctionne sans IP fixe et sans port ouvert est assez intéressant, mais je garde ça pour le chapitre où il fait quelque chose de bien plus impressionnant : atteindre des signaux au-delà des frontières nationales.)

Flux du site satellite vers le web

Pour la première fois, tout le système tournait sans moi. Je me réveillais, je regardais mon téléphone, et il y avait une image fraîche de la Méditerranée qu'un vieux MacBook avait captée, décodée, et publiée pendant que j'étais absent.

🔧 Notes de construction : automatiser la boucle capture→décodage→publication

Les parties de base (enregistrement + décodage) sont des commandes réelles, copiables-collables. La partie orchestration est décrite pour que vous puissiez en reconstruire la forme. J'ai publié mes vrais flux et configs n8n dans ce dossier du dépôt.

  • Enregistrer un passage (bande de base brute, l'entrée de tout le reste) :
  rtl_sdr -f 137900000 -s 2400000 -g 20 ~/satellite-images/meteor_$(date +%H%M).raw

-f 137900000 = 137,9 MHz. Pour M2-3 et M2-4, 137,9 est la fréquence principale. (Le gain -g 20 fonctionne bien une fois que le SAWbird soulève le signal ; avec un LNA puissant en amont, vous ne voulez souvent pas du gain max, qui peut saturer la clé.)

  • Le décoder avec le pipeline METEOR LRPT de SatDump :
  ./satdump pipeline meteor_m2-x_lrpt baseband IN.raw OUT_DIR \
    --samplerate=2400000 --baseband_format=cu8 --fill_missing

--fill_missing interpole les lignes manquantes pour que le rare trou de signal restant soit rattrapé plutôt que laissé en bande noire, une jolie finition par-dessus le travail du SAWbird du Chapitre 3.

  • Le bug qui m'a coûté une soirée : si SatDump signale aucun décodeur/plugin, c'est que vous le lancez depuis le mauvais endroit ; lancez-le depuis son propre dossier build/, pas depuis une installation système.
  • dans mon cas, SatDump est compilé depuis les sources (il existe différentes façons de l'installer). Il compile et tourne très bien sur du matériel ancien et peu puissant, ne laisse donc pas un vieil ordinateur portable vous arrêter.
  • Prédire les passages : les orbites sont déterministes, utilise l'API N2YO pour planifier les captures.
  • Quand l'image est vide et que ce n'est pas de votre faute : METEOR-M2-3 a une antenne partiellement non déployée 😅, son signal est faible et intermittent. Vérifie l'état du satellite (la communauté APT Group rapporte en direct la qualité des passages) avant de blâmer votre montage.
  • Le stack, en résumé : vieux portable → Debian → n8n (orchestration) → SatDump (décodage) → Coolify (PaaS auto-hébergé gérant Docker) → conteneur nginx (la galerie) → tunnel Cloudflare (accès public, sans IP fixe). Chaque brique est gratuite et open source.

Quel voyage épique depuis mes premiers essais de capture d'images terrestres ! J'avais construit une machine qui captait le ciel à ma place et publiait les résultats en ligne. Mais les images qu'elle publiait étaient encore brutes, grises, et, j'allais bientôt le découvrir que certaines étaient à l'envers et inversées.

Première image en niveaux de gris de la Terre


Chapitre 5 : « Et si ces scans gris devenaient de vraies cartes en couleur ? »

Mon vieux MacBook captait désormais les passages et les publiait sans moi. Il ne restait qu'un problème avec les images publiées : elles étaient grises et déformées. C'était encore de la sortie brute d'un scanner en orbite. Quid des magnifiques cartes en couleur que j'avais vues d'autres personnes publier, des cartes avec des côtes nettes, des villes étiquetées ? Ce genre de carte demandait trois étapes de plus :

Étape un : la couleur.

Un satellite METEOR ne « voit » pas en couleur comme votre œil. Son scanner, le MSU-MR, observe la Terre dans plusieurs bandes spectrales séparées, en même temps. Il produit 3 photos en noir et blanc simultanées, chacune prise à travers un filtre différent : une en lumière visible, une en proche infrarouge, une en infrarouge à ondes courtes. Chacune n'est qu'une grille de valeurs de luminosité.

Spectre lumineux reçu par le MSU-MR

Trois images fréquentielles de la Terre

Pour fabriquer une image couleur, vous assignez trois de ces bandes aux canaux rouge, vert et bleu d'une image et vous les laissez se mélanger. C'est un composite en fausses couleurs. « Fausses » parce que les couleurs ne sont pas ce que votre œil verrait, c'est un mappage choisi pour faire ressortir certaines caractéristiques.

J'utilise 3 recettes de SatDump pour produire des images en fausses couleurs qui mettent en évidence des éléments intéressants :

Trois images en fausses couleurs de la Terre

  • Fausses couleurs AVHRR 221 (Rouge = Ch.2, Vert = Ch.2, Bleu = Ch.1) : une vue générale en fausses couleurs construite à partir des deux canaux réflectifs ; mon réglage habituel pour le contraste terre/végétation.
  • Fausses couleurs AVHRR 3a21 (Rouge = Ch.3a/SWIR, Vert = Ch.2/proche IR, Bleu = Ch.1/visible) : le canal infrarouge à ondes courtes est sensible à la chaleur intense et aux terrains calcinés, donc c'est celui où les feux actifs et les cicatrices de brûlure ressortent en rouge/orange vif contre le reste de la scène.
  • MSA : une amélioration dédiée à la détection de points chauds plutôt qu'un simple réarrangement RVB ; elle signale directement les anomalies thermiques, ce qui permet de faire ressortir les feux plus faibles ou plus petits que les composites en fausses couleurs peuvent manquer.
    Incendies et fumée en Espagne - 26 juillet 2026
    ---

🤓 Le coin des geeks : sur ces images, vous pouvez distinguer un nuage d'un panache de fumée, et l'astuce, c'est la taille des particules ! Les nuages sont faits de gouttelettes d'eau et de glace relativement grosses, et les grosses gouttelettes diffusent toutes les longueurs d'onde de lumière plus ou moins également (visible, proche infrarouge, infrarouge à ondes courtes). Être lumineux dans les trois canaux signifie du rouge + vert + bleu vifs, ce qui se mélange en blanc. La fumée, c'est l'inverse : elle est faite de particules minuscules, et les minuscules particules diffusent préférentiellement seulement les longueurs d'onde les plus courtes, en laissant passer les plus longues. Donc la fumée est lumineuse dans la bande visible mais presque transparente en infrarouge proche et en infrarouge à ondes courtes. Dans cette recette, la bande visible est câblée sur le Bleu, donc la fumée illumine le canal bleu et presque rien d'autre, et ressort dans un bleu distinct et fantomatique, contre les nuages blancs autour d'elle.

Et l'empreinte de l'incendie apparaît aussi, par la logique inverse : la végétation en bonne santé est intensément lumineuse en proche infrarouge (c'est le canal Vert ici, ce qui explique pourquoi l'Espagne brille en jaune-vert), donc une cicatrice de brûlure, là où la végétation a brûlé, devient sombre et ressort nettement contre le vert du terrain environnant. Dans une seule image, vous pouvez voir à la fois la cicatrice de l'incendie et sa fumée, grâce aux différentes façons dont la matière interagit avec différentes longueurs d'onde de lumière.


Étape deux : la projection. Maintenant les images étaient colorées mais toujours mal formées.


🤓 Le coin des geeks : un scan satellite brut est fortement déformé, et la déformation est pire sur les bords. Le scanner balaie un immense arc, large de près de 3 000 km, et près des extrémités de chaque balayage, il regarde la Terre selon un angle rasant, si bien que chaque pixel étale bien plus de terrain qu'un pixel pris à la verticale. L'image brute est en « perspective satellite », pas dans la perspective habituelle d'une « carte du monde ».

Image satellite mettant en avant la distorsion périphérique


La projection (ou géoréférencement) corrige ça. On connaît l'orbite exacte du satellite et son orientation pour chaque ligne de balayage, donc on peut calculer la vraie latitude et longitude que chaque pixel observe, et redessiner toute l'image déformée sur une vraie grille cartographique. Après traitement, la côte déformée s'aligne sur la vraie côte à laquelle on est tous habitués. C'est l'une des améliorations les plus satisfaisantes du projet. (Côté technique, l'image brute d'un canal fait environ 1568 px de large, le composite corrigé est étiré à ~2800 px pour défaire la distorsion panoramique, soit environ 1,79× de correction horizontale.)
Une fois que chaque pixel a une coordonnée réelle, une jolie chose devient possible : on peut y ajouter des étiquettes.

J'ai écrit 2 petits scripts :

  • compute_barcelona_px.py : fait l'inverse de la projection : étant donné la latitude et la longitude d'un lieu, il calcule quel pixel correspond à ce lieu.
  • add_map_overlay.py : l'utilise pour placer des marqueurs de villes exactement où ils doivent être : Barcelone sur son cap, Madrid dans les terres, Marseille, Rome et Alger chacune épinglée au bon point. La carte a cessé d'être une jolie image pour devenir une image référencée.

Étape trois : le retournement

Environ la moitié de mes images ressortaient à l'envers et inversées en miroir. J'ai passé une soirée convaincu que quelque chose était cassé dans mon traitement. Mais j'ai vite compris que ce n'était pas le cas... !
Souvenez-vous qu'un satellite polaire peint son image ligne par ligne pendant son vol, et qu'il peut traverser mon ciel dans l'une de deux directions : parfois il se dirige vers le sud (un passage « nord-sud »), parfois vers le nord. Quand il vole dans la direction opposée, il peint l'image dans le sens opposé, et comme il regarde aussi de l'autre côté, la gauche et la droite s'inversent aussi.

Le correctif, une fois compris, était presque trivial : déterminer dans quelle direction le satellite voyageait et retourner les images qui doivent l'être. Vous pouvez lire la direction directement dans la géométrie du passage fournie par l'API N2YO, l'azimut auquel le satellite se lève, et retourner ces images de 180°.

Un détail clé : je fais tourner deux SatDump.

SatDump est un projet formidable qui évolue vite, ce qui signifie parfois qu'une fonctionnalité dont vous dépendez n'est pas ou seulement partiellement disponible dans la version que vous utilisez. Mon décodeur principal, c'est la toute dernière version de SatDump, et elle est si récente que l'équipe de développement n'a pas encore eu le temps d'y ajouter la projection cartographique et la correction géographique. Donc, pour obtenir des cartes correctement projetées, j'ai installé une seconde version, plus ancienne (v1.2.2), à côté, réservée uniquement à l'étape de projection. Pas le flux de traitement d'image le plus propre, mais il a l'avantage de fonctionner pour l'instant 😬

Et puis, la récompense.

Avec la couleur, la projection et les étiquettes de villes qui fonctionnaient toutes, je pouvais enfin faire ce que je voulais secrètement depuis la première image noire : les empiler. J'ai construit un petit visualiseur (assisté par IA, j'y reviendrai plus tard sur cette façon de travailler) qui prend chaque passage d'une journée, les projette tous sur la même carte centrée sur Barcelone, et les joue en fondu enchaîné sous forme de timelapse. Cinquante-deux passages, la météo de toute une journée qui s'écoule sur une carte fixe de mon coin du monde, les villes restant immobiles pendant que les nuages se déplacent au-dessus d'elles.

🔧 Notes de construction : du scan gris à la carte étiquetée

  • Fausses couleurs : dans SatDump, le composite 321 / 3a21 fait correspondre ch3 (SWIR)→Rouge, ch2 (proche IR)→Vert, ch1 (visible)→Bleu. Très efficace pour séparer la végétation (vert), les nuages (blanc/cyan), la fumée (bleu), et les cicatrices de brûlure (sombre). Les composites sont définis dans satdump_cfg.json, sous les rgb_composites de l'instrument, chacun avec une equation du type "ch3, ch2, ch1".
  • Projection : activez geo_correct et project (avec draw_map: true) dans la config du composite pour que SatDump projette la fauchée brute sur une vraie grille cartographique et dessine les côtes. Le géoréférencement est ce qui rend possibles les étiquettes et l'empilement.
  • Le retournement à 180° : si la moitié de vos passages arrive à l'envers et en miroir, c'est la direction du passage (ascendant ou descendant). Je détecte la direction à partir de l'azimut de lever (startAz entre 90 et 270° = NtoS) et je la stocke dans un champ direction, dans le meta.json de chaque passage et dans passes.json. Je corrige ensuite ça à deux endroits : l'étape de traitement fait pivoter les images du canal NtoS de 180° côté serveur avec ImageMagick (convert "$f" -rotate 180 "$f"), et la galerie retourne aussi les images NtoS à l'affichage avec du CSS transform: scale(-1,-1).
  • Étiquettes : une fois projeté, chaque pixel a un lat/lon, donc vous pouvez faire l'inverse, calculer le pixel correspondant aux coordonnées d'une ville, et superposer des marqueurs. (Mes scripts compute_barcelona_px.py + add_map_overlay.py font exactement ça ; je les publierai avec le reste.) Plus de détails dans la doc de ce dépôt. Pour la première fois, la galerie ressemblait à ce que je voulais construire. Vraie couleur, vraies cartes, ma ville étiquetée au centre. J'aurais pu m'arrêter là. C'était, selon n'importe quelle définition raisonnable, terminé. Mais il restait cette limitation... les immeubles autour de mon toit, qui m'empêchaient d'obtenir plus qu'une fine bande de terrain européen sur mes images satellite.

Bande d'image reçue depuis mon appartement à Barcelone


Chapitre 6 : « Et s'il y avait une deuxième antenne, dans un autre pays ? »

On ne peut pas déplacer un immeuble, j'avais établi ça 🥲. Alors j'ai arrêté d'essayer de réparer mon ciel, et je suis parti en chercher un autre.

J'ai de la famille à Théding, une petite ville de la Moselle, dans le nord-est de la France. Un ciel ouvert, un vrai horizon, et la partie qui transforme ce projet matériel en histoire : mon père, prêt à être mon coéquipier dans cette aventure satellite, à 1 000 km de distance.

Voici comment la collaboration fonctionne concrètement. Je configure tout côté informatique depuis Barcelone, à distance, en SSH. Le boulot de mon père, c'est ce que je ne peux pas faire depuis 1 000 km : placer et orienter physiquement l'antenne. Et ensuite, c'est le côté sympa, j'ai créé sa propre copie du site de la galerie. Il l'ouvrira et l'utilisera dans son propre navigateur, guettera l'arrivée des images, et ajustera son antenne en fonction de ce qu'il voit. Il est de facto l'ingénieur de terrain de la station de réception satellite de Théding.

La station de Théding avait une contrainte principale, qui m'a beaucoup appris sur mon système et sur comment je pourrais/voudrais le faire évoluer.

Netbook Compaq Mini i386

La machine à Théding est un vieux netbook i386, ancien et bien, bien, bien plus faible que même mon MacBook ressuscité. Il ne peut pas décoder un passage satellite dans un temps raisonnable. Il ne peut pas faire tourner l'étape de projection. Il ne peut même pas faire tourner mon habituel assistant IA embarqué sur la machine pour m'aider à travailler dessus, il est tout simplement trop faible pour servir d'environnement de développement. À tous points de vue, c'est le mauvais ordinateur pour ce travail 😅.
Pour cette raison, je lui ai confié seulement un seul et unique job.


🤓 Le coin des geeks : la bonne stratégie avec un nœud distant faible, c'est de lui faire faire presque rien, et de pousser tout le vrai travail là où le calcul est réellement disponible. Le netbook de Théding ne fait que ceci : quand un passage est prévu, il enregistre les échantillons radio bruts dans un fichier, écrit un petit fichier annexe de métadonnées (quel satellite, à quelle heure, dans quelle direction), et renvoie un compte-rendu. C'est tout. Le fichier brut est rapatrié vers le sud, et mon serveur maison à Barcelone le décode, le colorise, le projette, et le publie sur la galerie de mon père, exactement comme si le passage avait eu lieu sur mon propre toit.


Et c'est ce choix de conception qui explique pourquoi le détail suivant compte autant:


🤓 Le coin des geeks : vous pouvez réduire vos données d'environ un facteur dix, en n'échantillonnant pas plus vite que nécessaire. À Barcelone, où le fichier brut ne quitte jamais la machine, j'enregistre à 2,4 millions d'échantillons par seconde (-s 2400000). À Théding, ce même fichier brut doit voyager sur 1 000 km via la connexion domestique modeste d'un netbook, donc j'enregistre plutôt à 250 000 échantillons par seconde (-s 250000). Ça représente environ un dixième de la taille du fichier, et la belle nouvelle, c'est que les images sont tout aussi bonnes ! Le signal LRPT de METEOR ne fait qu'environ 120 kHz de large. Le taux d'échantillonnage doit être au moins le double de la largeur du signal qu'on veut capturer (une règle appelée le théorème de Nyquist-Shannon), donc 250 kS/s couvre très bien un signal de 120 kHz.


La dernière question était de savoir comment Barcelone parle à un netbook en France, et c'est là qu'une astuce que j'ai évoqué dans le Chapitre 4 montre enfin son utilité:


🤓 Le coin des geeks : normalement, pour atteindre une machine à distance, il faudrait qu'elle ait une adresse fixe et un port ouvert vers le monde, ce qui est à la fois contraignant (les IP domestiques changent) et un risque de sécurité (les ports ouverts se font scanner et attaquer). J'ai utilisé un tunnel Cloudflare, qui inverse le flux : un petit programme sur le netbook de Théding établit une connexion sortante vers Cloudflare et la maintient ouverte, et tout mon trafic atteint le netbook en remontant par cette même connexion que la machine a elle-même ouverte. Le netbook de Théding est joignable de n'importe où, et simultanément invisible pour tout le reste d'Internet. Depuis Barcelone, mon serveur l'atteint aussi simplement qu'avec ssh theding, et le tunnel fait le reste en coulisses.


Donc le trajet complet d'un passage à Théding ressemble à ceci :

  • mon serveur maison, à l'heure prévue, traverse la frontière via le tunnel et dit au netbook d'enregistrer
  • le netbook capture un fichier brut léger à 250 kS/s et renvoie le chemin du fichier
  • le serveur maison rapatrie ce fichier vers Barcelone par rsync, puis le pipeline habituel décodage-couleur-projection-publication du serveur maison, décrit dans les trois derniers chapitres, s'exécute dessus, et une image du ciel au-dessus de la France apparaît dans la galerie de mon père, et dans la mienne. En septembre 2026, tout est en place et fonctionne, mais nous cherchons encore un bon emplacement pour installer l'antenne à Théding. J'espère avoir bientôt de belles images à vous montrer.

🔧 Notes de construction : un second site de capture, à distance

  • Répartis le travail selon où se trouve le calcul. Le nœud distant fait le minimum : enregistrer la bande de base brute, écrire un fichier annexe de métadonnées, renvoyer le chemin du fichier. Tout le décodage/la projection/la publication se fait de retour sur la machine capable. Une machine distante faible (la mienne est un netbook i386) suffit, c'est juste un capteur.
  • N'échantillonne qu'aussi vite que le signal est large. Le LRPT de METEOR fait environ 120 kHz de large, donc 250 kS/s le capture entièrement (Nyquist-Shannon : échantillonner à ≥ 2× la largeur du signal). C'est environ 10× plus petit qu'un fichier à 2,4 MS/s, ce qui est décisif quand le fichier brut doit voyager sur une connexion distante modeste. En local, où le fichier ne bouge jamais, 2,4 MS/s convient très bien.
  • Atteins le site distant avec un tunnel Cloudflare, pas avec du port-forwarding. Lancez cloudflared sur le nœud distant ; il se connecte vers l'extérieur, donc vous n'avez besoin ni d'IP statique ni de port entrant ouvert (ça fonctionne derrière NAT/CGNAT, ça survit aux changements d'IP, rien n'est exposé aux attaques). Ensuite, c'est juste ssh <alias> depuis chez vous.
  • Le saut n8n, honnêtement : n8n tourne sur le serveur maison et atteint le site distant via un alias SSH classique (ssh theding, avec le tunnel configuré en dessous dans ~/.ssh/config). Il enregistre à distance, puis rsync -e ssh theding:$RAW $LOCAL rapatrie le fichier pour le décodage. Garder le nœud distant simple garde aussi tout ça bête et disciplinée.
  • Développe à distance. J'édite le code du site distant depuis mon ordinateur portable avec VS Code en remote-SSH, via le même tunnel ; le netbook est trop faible pour héberger un vrai environnement de développement lui-même, mais il n'en a pas besoin ; les fichiers paraissent locaux, la machine se contente de les conserver.

J'avais désormais deux ciels potentiels. Un ouvert en France et un encaissé à Barcelone, tous deux alimentant le même pipeline, tous deux publiant vers des galeries que n'importe qui pouvait visiter. Le projet était devenu une petite station de réception distribuée, à cheval sur deux pays, quelque chose que je n'aurais jamais imaginé construire au départ 🚀.

Et j'aurais pu, enfin, m'arrêter là.

Mais il restait tout un autre genre de satellite que je ne pouvais toujours pas toucher : celui qui ne bouge jamais.


Chapitre 7 : Où en est le projet?

Il est temps de présenter officiellement la version finale de ma galerie d'images satellite.

Un travail qui n'a l'air de rien. Un travail que beaucoup ne comprennent pas (d'innombrables personnes m'ont demandé pourquoi je faisais ça). Mais un travail qui m'a beaucoup appris, qui m'a fait un peu rêver d'espace, qui m'a fait sentir que je pouvais accomplir beaucoup avec peu de ressources et un peu d'ambition.

Chaque chapitre de cette épopée a pris pas mal de temps, des heures de frustration, de recherche. J'ai utilisé d'innombrables contournements pour compenser mon montage très "cheap" (je travaille quand même avec une vieille clé TV et deux ordinateurs portables dépassés..!). J'ai adoré/détesté chaque minute de tout ça !
Et la machine continue de tourner. Je ne fais plus rien maintenant, toute la boucle tourne toute seule. Les passages sont prédits, l'enregistrement démarre, le décodage tourne, les images sont colorisées, projetées, retournées et publiées, le tout sans surveillance, selon un planning, sur les deux sites. Je me réveille avec de nouvelles images de la Méditerranée que je n'ai rien fait pour mériter ce matin-là. J'en suis même à me demander ce que je devrais faire de toutes ces images..!

En plus de 3 mois, ça a rempli une galerie que n'importe qui peut ouvrir dès maintenant :

  • Barcelone : satellite.yannklein.dev
  • Théding (le ciel de mon père) : satellite.sergeklein.com (en ligne, mais encore vide, l'antenne n'est pas installée) Mais je vous avais promis au début que cette saga n'était pas terminée, et je le pensais.

Tout ce que j'ai construit chasse des satellites qui bougent, qui se lèvent, décrivent un arc, et se couchent en dix minutes. Mais il existe toute une autre population là-haut qui fait quelque chose que mes satellites polaires ne font jamais.

Ils restent parfaitement immobiles.


Chapitre 8 : « Et si je pouvais capter un satellite qui ne bouge jamais ? »

Tout, jusqu'ici, a été une histoire de chasse. Les satellites polaires sont rapides, bas, et disparus en dix minutes. Toute l'architecture, la prédiction, les enregistrements chronométrés, la logique de retournement, existe pour capter leurs passages éphémères. Mais l'imagerie météo la plus spectaculaire au monde ne vient pas de ceux-là. Elle vient de satellites qui restent immobiles au-dessus de l'équateur, à 36 000 km d'altitude, fixant tout un hémisphère en même temps, toute la journée, tous les jours.

J'en voulais un. Précisément, je voulais Elektro-L, les satellites météo géostationnaires russes, les seuls à diffuser leur imagerie non chiffrée en bande L, autour de 1691 MHz. Il diffuse une vue en disque complet de la Terre, le genre où vous voyez tout un quart de la planète tourner sous sa météo, en une seule image.

Et capter un satellite qui ne bouge jamais est, d'une manière cruciale, plus facile que d'en capter un qui bouge. Il n'y a pas de passage, il est toujours là, dehors. Il suffit de pointer une parabole (vous vous souvenez de ces paraboles satellite pour la télé ?) vers un seul point du ciel, exactement l'endroit où le satellite est garé, et de ne plus jamais la bouger. Alors je me suis procuré le matériel : une Discovery Dish, une petite parabole avec une source en bande L, réglée pour la bande ~1,7 GHz.

Discovery Dish

Il y avait juste un problème, et un gros.


🤓 Le coin des geeks : l'Europe de l'Ouest n'a actuellement aucun satellite météo géostationnaire non chiffré en état de fonctionner à recevoir. Le créneau qui couvre ma partie du monde, 14,5° Ouest, au-dessus de l'Atlantique, est occupé par l'ancien Elektro-L2, mais son émetteur en bande L est mort suite à une panne d'alimentation. Il est toujours là-haut, mais silencieux sur la fréquence que je peux recevoir.


Mais voici pourquoi j'ai acheté la parabole malgré ce fait frustrant :
il existe un satellite plus récent, Elektro-L5, lancé en février 2026. Depuis début août 2026, il est devenu opérationnel sur le créneau 76° Est : au-dessus de l'océan Indien, trop loin pour moi pour l'instant. Mais son arrivée est une bénédiction pour moi : elle libère le satellite qui occupait auparavant le 76°E, Elektro-L3, pour qu'il se déplace. Et la nouvelle destination assignée à L3 est le 14,5° Ouest, mon créneau 🎉. Quand L3 arrivera, l'Europe de l'Ouest récupérera sa bande L géostationnaire non chiffrée pour la première fois depuis des années, et ma parabole aura enfin quelque chose de vivant à écouter.
Alors comment un satellite censé ne jamais bouger passe-t-il d'un côté de la planète à l'autre ?


🤓 Le coin des geeks : on déplace un satellite géostationnaire en le mettant délibérément sur une mauvaise orbite, brièvement. Un satellite reste immobile par rapport au sol uniquement parce que son orbite est calée pour que sa vitesse corresponde exactement à la rotation de la Terre. Élevez-le sur une orbite légèrement plus haute, et il parcourt alors une boucle plus longue à une allure plus lente, donc il prend du retard sur la rotation de la Terre et, vu du sol, il semble dériver vers l'ouest, un peu chaque jour. Vous le laissez dériver à cette altitude plus élevée, jusqu'à ce qu'il soit au-dessus de la longitude voulue. Puis vous le rabaissez jusqu'à l'altitude géostationnaire exacte, sa vitesse se recale sur celle de la Terre, et il se verrouille sur sa nouvelle position. Vous ne le faites pas voler de côté à travers le monde. Vous le soulevez, vous laissez la planète tourner en dessous, et vous le reposez.


On sait exactement à quoi ça ressemble parce que L3 est sur le point de refaire un trajet que son frère jumeau a déjà emprunté. Quand Elektro-L1 a fait ce même trajet 76°E → 14,5°O en 2016, il avait été élevé d'environ 289 km au-dessus de l'altitude géostationnaire, ce qui l'a fait dériver vers l'ouest à 2,03° par jour. Le trajet a duré environ 45 jours, après quoi les contrôleurs l'ont progressivement rabaissé, jusqu'à ce qu'il se stabilise précisément à 14,5°O. On s'attend à ce que L3 fasse la même chose : une lente glissade délibérée, de plusieurs semaines, à travers le ciel, propulsée par rien de plus spectaculaire que le fait d'être légèrement trop haut et de laisser le monde tourner en dessous.
Au moment où j'écris ces lignes, L3 n'est pas encore parti. Je peux le voir dans mon traqueur de satellites, et il se trouve juste à côté de L5, tous deux côte à côte au-dessus de l'océan Indien. N'importe quel jour maintenant, L3 va allumer ses propulseurs, se glisser dans cette orbite légèrement trop haute, et entamer sa lente traversée vers l'ouest, vers le créneau vide au-dessus de l'Atlantique, vers moi.

Donc, à ce jour, ma parabole est pointée vers un coin de ciel vide au-dessus de l'Atlantique, en attente de L3 🛰️.


Épilogue : La suite du chemin

Chaque chapitre de cette histoire s'est terminé par un « et si » qui m'a entraîné vers le suivant, alors ce serait malhonnête de terminer l'article comme si les questions étaient épuisées. Elles ne le sont pas. Voici ce qui reste ouvert au moment où j'écris.

L'évidence : j'attends un satellite. Elektro-L3 est encore garé à côté de L5 au-dessus de l'océan Indien, et jusqu'à ce qu'il allume ses propulseurs et fasse sa traversée de six semaines vers l'ouest, ma parabole fixe un coin de ciel vide au-dessus de l'Atlantique. C'est le cliffhanger que je ne peux littéralement résoudre selon aucun autre calendrier que celui du satellite.

L'antenne de mon père a encore besoin d'un logement permanent. Le netbook doit rester au sec et à l'abri ; l'antenne doit vivre dehors avec une vue dégagée. Transformer ça en une installation étanche aux intempéries, qui ne nécessite pas d'échelle, dans un jardin en Moselle, c'est le prochain vrai chantier physique, et c'est pour ça que sa galerie est encore vide.

Et il y a une bifurcation que je n'ai pas encore choisie. Cette parabole fixe pourrait devenir quelque chose de plus ambitieux. METEOR ne diffuse pas seulement le LRPT basse résolution que je capte sur 137 MHz, il transmet aussi une image bien plus haute résolution appelée HRPT, en bande L, autour de 1700 MHz, pile dans la portée de la parabole. Le hic, c'est que METEOR bouge, donc pour recevoir son signal en bande L, il me faudrait suivre physiquement sa trajectoire dans le ciel, ce qui veut dire un rotor motorisé az/el. Il existe maintenant des options plutôt bon marché (le rotor portable AntRunner revient à environ 300 € livré).

Le but d'un projet comme celui-ci n'a jamais été de le finir. C'était de continuer à trouver la prochaine question qui valait la peine d'être poursuivie. J'ai commencé avec un bout de fil et une bande noire, et j'ai fini (je n'ai pas fini) avec une station de réception dans deux pays, un père en France, et un vaisseau spatial qui dérive lentement vers une parabole déjà pointée là où il va arriver. Si vous voulez voir comment ça se termine, les galeries se mettent à jour toutes seules, et éventuellement, cette histoire aussi.

Le ciel continue de diffuser. Je continuerai d'écouter.


Envie de construire la vôtre ?

Si tout ça vous a donné envie de capter un satellite, voici le chemin le plus court et le plus honnête, de rien du tout jusqu'à votre première image. (Les parties avancées, deux sites, automatisation et projection, se trouvent dans les chapitres ci-dessus et dans le dépôt compagnon)

  1. Achetez le matériel de départ (~60-100 €). Une clé RTL-SDR Blog V3 avec son kit dipôle télescopique, et dès que vous avez passé votre première tentative, un LNA Nooelec SAWbird+ NOAA (~50 €) à monter sur l'antenne. C'est toute la radio.
  2. Construisez bien le dipôle en V. Chaque bras à 53,4 cm, 120° entre eux, posé bien à plat/à l'horizontale. Donnez-lui l'horizon nord-sud le plus dégagé possible. Cette seule étape fait toute la différence entre une image noire et une vraie image. (Chapitre 2.)
  3. Placez le SAWbird à l'antenne, pas à la radio. Alimentez-le via le bias tee de la clé. Amplifiez avant la perte du câble, jamais après. (Chapitre 3.)
  4. Installez SatDump et prédisez un passage. Utilisez n'importe quel prédicteur de passages (N2YO, ou des applis comme Look4sat / le traqueur de SDR++) pour trouver quand METEOR-M2-3 ou M2-4 (≈137,9 MHz) traverse votre ciel prochainement.
  5. Enregistrez, puis décodez. Capturez le passage dans un fichier brut, puis lancez le pipeline METEOR LRPT de SatDump dessus :
   rtl_sdr -f 137900000 -s 2400000 -g 20 pass.raw
   # après le passage :
   satdump pipeline meteor_m2-x_lrpt baseband pass.raw ./decoded \
     --samplerate=2400000 --baseband_format=cu8 --fill_missing
  1. Attendez-vous à ce que la première soit ratée. Une image faible ou noire n'est pas un échec. Itère. Tout le loisir tient dans l'itération. Voilà, c'est tout. Tout le reste de cet article : l'automatisation, le second pays, la couleur, la projection, le timelapse, c'est juste ce qui arrive quand on n'arrive pas à s'arrêter de se demander « et si ». ## Ressources et liens
  2. SatDump : le couteau suisse du décodage/de la projection : satdump.org
  3. RTL-SDR Blog : les clés, le guide du dipôle en V, et la meilleure source d'actualité pour ce loisir : rtl-sdr.com
  4. Nooelec SAWbird+ NOAA : le LNA 137 MHz : nooelec.com
  5. KrakenRF Discovery Dish : la parabole en bande L pour le géostationnaire/HRPT : krakenrf.com
  6. N2YO : prédictions de passages et suivi en direct (METEOR-M2-3 = NORAD 57166, M2-4 = 59051) : n2yo.com
  7. Mes galeries : Barcelone : satellite.yannklein.dev · Théding : satellite.sergeklein.com
  8. Dépôt compagnon (le pipeline, les flux n8n, la config SatDump, les scripts de projection/overlay, et les notes de montage) : github.com/yannklein/satellite-images/tree/main/docs (mis à jour en parallèle de cet article)

Top comments (0)