JY1SAT

Décodage SSDV de JY1SAT

Traduction de la publication de Daniel Estévez du

JY1SAT est un cubesat amateur jordanien 1U qui transporte une charge utile FUNcube par AMSAT-UK . Comme d’habitude, la charge utile FUNcube embarquée JY1SAT possède un transpondeur linéaire avec liaison montante dans la bande 435 MHz et liaison descendante dans la bande 145 MHz, et un émetteur de télémétrie BPSK 1k2 dans la bande 145 MHz. La nouveauté par rapport aux satellites FUNcube âgées est que l’émetteur BPSK est également utilisé pour envoyer SSDV images et Codec2 données vocales numériques.

Ici, je montre comment décoder les images SSDV en utilisant des satellites gr .

Les images SSDV peuvent être décodées avec le logiciel de tableau de bord FUNcube , mais ce logiciel est de source fermée et il n’y a pas de description publique sur le format dans lequel les images sont envoyées. Scott Chapman K4KDR et moi avons échangé des e-mails avec des personnes de l’équipe FUNcube pour obtenir des détails sur le format. Grâce à ces informations, j’ai pu comprendre comment les données SSDV sont intégrées dans la télémétrie. Cependant, je serais toujours reconnaissant pour une description complète de la télémétrie. En particulier, je ne sais pas quel est le format de la télémétrie en temps réel pour JY1SAT ou comment les enregistrements vocaux numériques Codec2 sont envoyés.

Les trames JY1SAT, comme dans le cas de tout autre satellite FUNcube, ont une longueur de 256 octets. Cette taille est déterminée par le protocole FEC AO-40 qu’ils utilisent. Comme nous pouvons le voir dans la description de la télémétrie dans gr-satellites , une trame est composée d’un en-tête de 2 octets, qui code le type de satellite et de trame, 54 octets de données en temps réel et 200 octets de charge utile. Normalement, la charge utile est utilisée pour envoyer des données de télémétrie en orbite entière ou à haute résolution, ou des messages d’ajustement .

Dans le cas des trames SSDV JY1SAT, les 200 octets de charge utile sont utilisés pour incorporer une trame SSDV, avec un en-tête personnalisé, de manière à économiser de l’espace.

Pour tester mon décodeur, j’ai utilisé cet enregistrement réalisé par Scott. Les trames SSDV dans cet enregistrement ont un en-tête indiquant SatID = étendu, FrameType = 32 ou 33 et extheader = 0x10. Je ne sais pas pourquoi les données SSDV sont envoyées dans deux types de trames différents. Une description complète de la télémétrie clarifierait cela. Certaines autres données (peut-être des données Codec2) sont également définies avec les mêmes types de trame et en-tête étendu que SSDV.

Un en-tête ad hoc est utilisé pour la trame SSDV contenue dans la charge utile de 200 octets. Les différences entre la trame SSDV JY1SAT et le format de trame habituel sont les suivantes:

  • Le champ indicatif est omis
  • Les données utiles ne font que 189 octets
  • Les champs checksum et FEC sont omis

Avec ces détails à l’esprit, j’ai adapté le décodeur SSDV pour prendre en charge ce format ad-hoc. Le décodeur SSDV adapté se trouve dans mon fork ssdv . Ce décodeur prend désormais en charge le format DSLWP-B SSDV , le format JY1SAT et le format standard.

Pour décoder les données SSDV à l’aide de gr-satellites, les instructions sont les suivantes. Vous pouvez utiliser l’ enregistrement de Scott pour tester le décodeur. Notez que vous devez utiliser un paramètre BFO de 2000 Hz dans le décodeur gr-satellites avec cet enregistrement, plutôt que la valeur par défaut de 1500 Hz. Vous pouvez modifier cette valeur dans le diagramme de flux GNU Radio. Vous devez également avoir installé ma branche ssdv .

Le décodeur JY1SAT des gr-satellites enregistre toutes les trames reçues dans un fichier appelé jy1sat_frames.bin dans le répertoire courant. Vous pouvez changer le chemin de ce fichier en éditant le diagramme de flux GNU Radio du décodeur. Ce fichier est ajouté à l’exécution du décodeur, car une image peut être complétée en utilisant les données de plusieurs passes. Vous pouvez télécharger un exemple de fichier jy1sat_frames.bin dans ce Gist . Cet exemple de fichier est extrait de l’enregistrement de Scott.

Le script jy1sat_ssdv.py dans le dossier gr-satellites apps doit être exécuté sur jy1sat_frames.bin pour détecter les différentes images, classer et trier les trames SSDV correspondant à chaque image et appeler le décodeur SSDV pour chaque image. Il peut être exécuté comme

jy1sat_ssdv.py jy1sat_frames.bin jy1sat_output

Cela produira des fichiers jy1sat_output_n.ssdv et jy1sat_output_n.jpg pour chacune des images, où n est le numéro de l’image. En exécutant ce script sur l’exemple de fichier jy1sat_frames.bin donné ci-dessus, nous obtenons l’image partielle suivante.

Image SSDV partielle JY1SAT décodée à partir de l’enregistrement de Scott