Station sol SDR pour UVSQ-SAT : le software

Partie software de la station sol SDR pour UVSQ-SAT dont l’hardware a été présenté dans cet article.

Fonctionnement général

La station sol n’utilise que 2 logiciels pour fonctionner :

  • SDR4space.lite (site officiel) : téléchargement des TLE, prédiction des passages, correction Doppler, enregistrement des passages
  • GNU Radio Companion (site officiel) : décodage des trames depuis le fichier IQ, écriture des trames dans un fichier .txt, envoi des trames vers la DB de satnogs

Les 2 logiciels utilisés sont gratuits (GNU Radio est open source et gratuit, SDR4space.lite est la version gratuite de SDR4space).

Préparation de la carteSD pour le Jetson nano

La toute première étape est de flasher la carteSD pour le Jetson nano. Pour cela, il suffit de suivre la procédure expliquée sur le site de Nvidia :

Pour la version 2GB :

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit

Pour la version 4GB :

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

Téléchargement des fichiers de la station sol

Les scripts SDR4space et GNU Radio sont à télécharger depuis ce lien.

Il suffit ensuite de placer les fichiers Javascript .js, le fichier Python .py et le bash .shd dans un même dossier comme dans la capture ci-dessous.

Pensez à rendre exécutable le fichier bash launch_decode.sh avec la commande :

sudo chmod u+x /chemin/vers/launch_decode.sh

SDR4space.lite

La station sol utilise la version gratuite du logiciel SDR4.space afin de prédire les passages du satellite au dessus de la station, de compenser l’effet Doppler au cours des passes, d’enregistrer les passages et lancer le décodage.

Téléchargement

Pour télécharger SDR4space.lite, il suffit de se rendre ici et de choisir la version pour Jetson nano (ou la version classique si vous êtes sur PC).

Une fois votre exécutable téléchargé, placez le dans le répertoire que vous voulez (le même répertoire que les scripts ou autre, au choix).

Pré-requis

SoapySDR

Pour utiliser SDR4space vous devez installer SoapySDR sur le jetson nano. Pour cela, suivez les commandes suivantes (la procédure est également disponible ici) :

git clone https://github.com/pothosware/SoapySDR.git

cd SoapySDR

mkdir build

cd build

cmake ..

make -j4

sudo make install

sudo ldconfig

Vous pouvez vérifier la bonne installation avec la commande suivante :

SoapySDRUtil –info

qui doit vous retourner quelque chose comme ça (vous ne devriez pas encore avoir rtlsdr de disponible dans les Available factories) :

SoapyRTLSDR

Une fois Soapy installé, il faut lui ajouter le support de la clé RTL-SDR. Pour cela :

sudo apt-get install rtl-sdr librtlsdr-dev

git clone https://github.com/pothosware/SoapyRTLSDR.git

cd SoapyRTLSDR

mkdir build

cd build

cmake ..

make

sudo make install

Une fois SoapyRTLSDR installé, vous devriez avoir rtlsdr dans les « Available factories » avec la commande SoapySDRUtil –info.

autres prerequis

sudo apt-get install mosquitto mosquitto-client libliquid1d

Le fichier de configuration

Différentes variables sont à modifier dans le fichier config.js pour adapter le script à votre station sol :

  • gs_latitude et gs_longitude : les coordonnées GPS en degrés décimaux de la station,
  • gs_asl : l’altitude de la station,
  • tle_path : par défaut télécharge les TLE de Celestrak, mais possibilité de pointer vers un autre lien ou un fichier en local,
  • path_cmd_file : chemin absolu vers le fichier launch_decode.sh
  • rtl_gain : Gain de la clé RTL-SDR
  • print_passes et print_debug : permet d’afficher ou non dans le terminal les prochains passages et les messages de debug

Lancement

Vous pouvez ensuite lancer SDR4space.lite avec le script de la station sol avec la commande (commande pour le Jetson nano, à adapter si vous êtes sur PC) suivante :

/chemin/vers/sdr4space.light -d /chemin/vers/dossier/des/scripts

Sur PC le logiciel étant dans un .appImage vous ne devriez pas avoir d’erreur. Sur Jetson nano, vous pouvez cependant avoir des erreurs pour des packages manquants. Si c’est le cas, installez les packages indiqués dans les erreurs.

Si tout se passe bien, vous devriez avoir un résultat comme celui-ci :

Tant que cette commande est en cours d’exécution le Jetson nano fera le tracking du satellite, enregistrera les passages et décodera les trames.

GNU Radio Companion

Le décodage des trames se fait avec un script GNU Radio Companion 3.8. Pour l’installer il faut compiler ses sources sur le Jetson nano (procédure disponible ici):

git clone https://github.com/gnuradio/gnuradio.git

cd gnuradio

git checkout maint-3.8

git submodule update –init –recursive

mkdir build

cd build

cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../

make -j4

sudo make install

sudo ldconfig

Au besoin, installez les dépendances nécessaires à l’installation de GNU Radio Companion.

Vous pouvez ensuite vérifier la bonne installation de GNU Radio avec la commande suivante :

gnuradio-companion –help

qui doit vous retourner quelques chose comme ça :

GR-satellite

Le décodage des trames du satellite nécessite la librairie gr-satellites. Pour l’installer :

git clone https://github.com/daniestevez/gr-satellites.git

cd gr-satellites

git checkout maint-3.8

mkdir build

cd build

cmake ..

make

sudo make install

sudo ldconfig

Le script GNURADIO

Le script de décodage pour GNU Radio est le fichier .py (au besoin le .grc est également disponible). Quelques modifications sont à apporter dans le fichier nogui_decoder_UVSQSAT_IQ.py pour l’adapter à la station:

  • Ligne 40 : un fichier start_time.ini sera généré par SDR4space dans le fichier des scripts. Il faut donc saisir le chemin absolu jusqu’au dossier des scripts pour que GNU Radio trouve par la suite le fichier start_time.ini
  • Ligne 50 : vous devez saisir votre indicatif pour SatNOG ainsi que les coordonnées GPS de la station en degrés décimaux.
La station sol va maintenant enregistrer les passages du satellite et les décoder avec le GNU Radio. A chaque fois, le fichier grc_out.txt sera écrasé, si vous voulez conserver les données en local sur votre Jetson il vous faut donc faire un script qui renomme ce fichier texte.
Seul l'envoi vers Satnogs est actif pour le moment, mais vous pouvez envoyer les données vers d'autres serveurs SIDS en éditant le .grc et en le recompilant avec GNU Radio.

Station sol SDR pour UVSQ-SAT : l’hardware

La station sol décrite ci-dessous permet la réception du nanosatellite 1U conçu par le LATMOS : UVSQ-SAT. L’antenne permettant la réception est réalisable à partir de l’article en ligne ici.

Les informations concernant la partie logicielle de la station sont disponibles ici.

Vue de l’intérieur de la station sol

Présentation rapide

La station est articulée autour d’un GPU et est utilisable directement avec une prise 230V et un câble RJ45. Grâce à une clé RTL-SDR, elle va numériser le spectre radio pour enregistrer les différents passages du satellites et décoder ses données.

Un envoi des données vers des serveurs comme SatNOGS est possible.

La station est autonome pour le calcul des passages ainsi que pour le tracking, il suffit donc de la déployer puis de l’oublier.

Liste du matériel

TypeDescriptionLienPrix
GPUNVIDIA Jetson Nano 2GB / 4GBVersion 2GB : https://fr.rs-online.com/web/p/modules-de-developpement-pour-processeurs/2049968/

Version 4GB : https://fr.rs-online.com/web/p/modules-de-developpement-pour-processeurs/1999831/
Version 2GB : ~65€ TTC
Version 4GB : ~110€ TTC
Carte SDCarte SD 32Gohttps://fr.rs-online.com/web/p/cartes-micro-sd/1873617/~25€
BoitierBoitier métallique 221mm x 221mm, hauteur 88mmhttps://fr.rs-online.com/web/p/boitier-a-montage-sur-rack/8104270~30€
Alimentation à découpageAlimentation découpage 5V 7Ahttps://fr.rs-online.com/web/p/alimentations-a-decoupage/1065822/~15€
Connecteur IECConnecteur IEC, montage panneau (prévoir un fusible 250V 1A)https://fr.rs-online.com/web/p/connecteurs-iec/3521803/~15€
Connecteur RJ45Connecteur RJ45, montage panneauNDND
Connecteur N femelle vers SMA maleConnecteur N femelle vers SMA male, montage panneauhttps://www.passion-radio.fr/sma/sma-n-femelle-79.html~9€ (en 15cm)
Clé rtl-SDRClé RTL-SDRhttps://www.passion-radio.fr/cles-rtl-sdr/rtlsdr-tcxo-472.html~35€
LNAAmplificateur faible bruithttps://www.passion-radio.fr/accessoires-sdr/lna-rtlsdr-764.html26€
Filtre passe-bandeFiltre passe-bande 430-440 MHzFiltre en cours de tests, plus d'informations à venirND
Coaxial avec connecteurs SMA/SMACoaxial avec connecteurs SMA/SMAhttps://www.passion-radio.fr/sma/sma-sma-male-81.html#/215-longueur-30cm6€ (en 30cm)
TOTAL (en version 4GB) :265€ (sans le filtre, les fils électriques, le connecteur RJ45, les entretoises, les vis et le câble RJ45)

Montage de la station sol

Le montage est assez simple, mais voici un résumé des différentes opérations :

  • Percer les trous pour la prise IEC, le connecteur RJ45 et le connecteur N sur un des côté du boitier,
  • Percer les trous pour la fixation de l’alimentation et du Jetson nano sur le fond du boitier (penser à insérer la SD flashée dans le Jetson avant de le fixer),
  • Placer la prise IEC, le connecteur RJ45 et le connecteur N dans leurs emplacements respectifs,
  • Fixer l’alimentation et le Jetson sur le fond du boitier avec des vis et entretoises,
  • Câbler le 5V entre la sortie de l’alimentation à découpage et l’alimentation du Jetson (ATTENTION : l’alimentation de la version 4GB du Jetson nano peut se faire via un jack 5,5 x 2,5mm ou via un connecteur Micro-USB alors que pour la version 2GB elle se fait forcément via un connecteur USB-C)
  • Connecter le SMA male du connecteur N -> SMA sur le RF IN du LNA,
  • Relier le RF OUT du LNA au filtre via le SMA femelle – femelle fournit avec le LNA,
  • relier le filtre à la clé SDR via le câble SMA-SMA de 30cm,
  • câble l’alimentation du LNA sur la sortie 5V de l’alimentation à découpage en pensant à désactiver le Bias-T grâce au jumper sur le PCB,
  • Connecter le jetson nano en RJ45 (ou wifi si vous voulez utiliser le wifi),
  • câble l’entrée 230V de l’alimentation à découpage en passant par le fusible du connecteur IEC.

La station est assez simple au niveau du matériel et est peu onéreuse étant donné qu'il est possible de la mettre en place avec un budget d'environ 250€ dans sa version 4GB de RAM, antenne comprise.

Antenne QFH pour UVSQ-SAT

Fabrication d’une antenne QFH pour la réception du satellite UVSQ-SAT (437.020 MHz). L’antenne a été conçue avec Clément DIAS du LATMOS.

L’antenne QFH une fois terminée

Le matériel nécessaire

L’antenne se fabrique à partir d’éléments faciles à sourcer dans des magasins de bricolage et sur internet :

  • Les 4 pièces à imprimer,
  • Du fil électrique de diamètre 1,5mm² (il est possible d’utiliser un autre diamètre de fil, mais les pièces imprimées risquent de ne plus être adaptées et il faudra porter plus d’attention à la taille de l’antenne),
  • Du tube IRO de diamètre 25mm,
  • Une embase type N femelle,
  • Un bout de coaxial de type RG-58.

Les 4 pièces à imprimer sont disponibles ici :

La fabrication

La structure plastique

La première étape consiste à coller les pièces imprimées sur le tube IRO. Les pièces doivent être collées (dans un 1er temps ne pas les coller, pour pouvoir les bouger légèrement en surveillant avec un VNA) de manière à obtenir les espacements suivants :

L’antenne avec la structure plastique seule a cette apparence :

Les boucles de conducteur

La QFH est constituée de 2 boucles de conducteur. La boucle la plus courte mesure 705mm, la boucle la plus longue mesure elle 741mm.

Pour la fabrication de l’antenne, je vous conseille de couper les boucles en plusieurs morceaux : les traversées du bas (en bleu sur la photo), les spirales (en vert) et les traversées du haut (en rouge).

Les différentes sous parties de la QFH

Le montage est à faire comme suit :

  • Passer les 4 morceaux de fils pour former les 4 morceaux de spirale (en vert sur la photo ci-dessus),
  • Passer les 2 morceaux de fils pour former les 2 traversées du bas (en bleu sur la photo ci-dessus),
  • Braser les jonctions entre les traversées du bas et les spirales,
  • Passer les 2 morceaux de fils pour former les 2 traversées du haut (en rouge sur la photo ci-dessus),
  • Braser les jonctions entre les traversées du haut et les sprirales.

Une fois toutes les brasures effectuées, il suffit de couper les traversées du haut pour pouvoir connecter le câble coaxial comme sur la photo ci-dessous :

Connexion des 2 brins au coaxial

Vous pouvez ensuite mettre l’embase N au pied du tube IRO (je n’ai pas publié de pièce 3D dédiée à l’embase car il existe de nombreux modèles différents).

Tailler l’antenne au VNA

En théorie l’antenne doit être un peu trop basse en fréquence. Dans ce cas, recouper les brins au niveau des brasures sur le coaxial pour faire remonter la fréquence de résonance de l’antenne.

Au besoin, vous pouvez également jouer sur l »espacement entre les pièces supérieure et inférieure de la structure.

Dans mon cas, après une première coupe rapide, voici le résultat obtenu :

Le ROS de l’antenne au NanoVNA entre 400 et 460 MHz.
Le return loss au NanoVNA entre 400 et 460 MHz.

Avec un ROS d’environ 1.6, un return loss de -13dB et un pic aux environs de 440.5 MHz, mon antenne est légèrement trop haute en fréquence. Il me faut donc jouer un petit peu sur l’espacement entre les pièces de la structure et/ou sur les brasures de connexion au coaxial pour la rebaisser sur 437MHz. En fonction de la réception obtenue avec, je prendrai ou non le temps de le faire.

Cette antenne a pour but d"aider à la réception d'UVSQ-SAT, le cubesat du LATMOS. Elle a donc été développée avec les équipes du LATMOS. Le reste de la chaine de réception est disponible ici.