Protocole de communication FT8 - Fonctionnement

Bonjour, Habr.

Probablement tous ceux qui étaient même un peu intéressés par les communications radio et la radio amateur, ont entendu parler du protocole de communication numérique FT8 . Ce type de connexion est apparu en 2017, et depuis lors, sa popularité n'a cessé de croître.


Source: www.qsl.net/w1dyj/FT8%20for%20web.pdf

Pour ceux qui souhaitent savoir comment cela fonctionne et pourquoi il est nécessaire, continue sous la coupe.

Récit


Pour ceux qui sont loin des radiocommunications amateurs, un bref historique.

Les premières stations de radio amateur faites maison, puis achetées, sont apparues il y a environ 100 ans. Le seul signal qu'ils pouvaient recevoir et transmettre était une tonalité simple, et la transmission utilisait le code Morse. Bien sûr, auparavant, il était nécessaire d'apprendre à prendre CW à l'oreille, étant donné que cette compétence était demandée depuis longtemps non seulement parmi les amateurs, mais aussi parmi les professionnels, la profession d'opérateur radio dans la Marine n'avait apparemment été annulée que dans les années 60. Bien sûr, il y avait une certaine romance dans la réception de signaux faibles contre le bruit de l'éther, c'est ainsi qu'un simple opérateur de radio de jambon de village de la région de Kostroma a réussi en 1928 à recevoir le signal SOS de l'équipe de dirigeable en détresse Umberto Nobile .

L'étape suivante a été la communication vocale - la transmission de la voix à l'aide d'un microphone en modulation à bande unique a rendu la communication radio plus pratique. Cette méthode est toujours utilisée.

Enfin, vers les années 90, les communications numériques ont commencé à gagner en popularité parmi les opérateurs de radio amateur. Dans ce cas, le signal (généralement RTTY ou PSK) forme l'ordinateur, l'opérateur communique avec le correspondant à l'aide d'une sorte de chat textuel.



Il faut dire que les protocoles techniquement similaires sont très simples, et les caractères tapés par l'utilisateur à partir du clavier ont été envoyés à la diffusion presque sans aucun traitement compliqué. Et curieusement, cela avait ses avantages - l'opérateur lui-même devait trouver la bonne fréquence, évaluer la qualité du signal à l'oreille, voir les caractères décodés à l'écran, taper la réponse, etc.

Mais les possibilités de traitement numérique se sont développées et, finalement, le héros de notre revue est apparu - la norme de communication FT8. Le nom FT8 se traduit par Franke et Taylor, modulation 8-FSK. Le professeur Steven Franke et l'astrophysicien et lauréat du prix Nobel Joseph Taylor ont créé un protocole vraiment intéressant et efficace pour le transfert de données.

Caractéristiques du FT8:

  • La longueur du message est de 15 s, les messages sont transmis dans des tranches de temps fixes, ce qui facilite le décodage.
  • La longueur du message est de 77 bits + 12 bits CRC.
  • Correction d'erreurs FEC LDPC (174.87).
  • Modulation de fréquence 8-FSK, la distance entre les tons 6,25 Hz.
  • Bande passante 50 Hz. Avec une bande aussi étroite, plusieurs stations peuvent fonctionner et décoder simultanément.
  • Seuil de décodage -20 dB.
  • La possibilité facultative de travailler automatiquement, d'envoyer automatiquement des réponses, etc.

En général, les auteurs ont fait un bon travail en créant un protocole de communication presque entièrement automatisé qui pourrait, d'une part, transmettre des informations plus efficacement, et d'autre part, tuer «l'esprit de la radio amateur» dans l'œuf. Il n'y a plus de romance du bruit et de la décoloration de l'éther, recevant un signal correspondant faible de l'autre côté de l'océan, il y a juste un écran PC et le reste est fait par des algorithmes et des mathématiques.

Une capture d'écran du programme WSJT-X qui prend en charge FT8 ressemble à ceci:


Source: 3fs.net.au/ft8-digital-amateur-radio

Personnellement, je ne comprends pas vraiment le plaisir des communications radio presque entièrement automatiques, mais comme FT8 est populaire, alors c'est quelqu'un nécessaire. Voyons plus en détail comment cela fonctionne.

Codage de bits


Prenons un exemple pratique - la transmission de la phrase "CQ RA1ABC KO50". Ici, CQ est le code d'appel généralement accepté (plus de détails ici ), RA1ABC est l'indicatif d'appel radio amateur, KO50 est le soi-disant localisateur de grille , qui détermine la région à partir de laquelle la radio amateur émet.

Dans la première étape, les abréviations courantes sont remplacées par des codes courts, par exemple, CQ reçoit un code de 2h. Les indicatifs radioamateurs ont un format strictement défini de lettres et de chiffres, ce qui vous permet également de les enregistrer sous une forme plus compacte.

const char A0[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-./?";
const char A1[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char A2[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char A3[] = "0123456789";

// Check for standard callsign
int i0, i1, i2, i3, i4, i5;
if ((i0 = char_index(A1, c6[0])) >= 0 && (i1 = char_index(A2, c6[1])) >= 0 &&
    (i2 = char_index(A3, c6[2])) >= 0 && (i3 = char_index(A4, c6[3])) >= 0 &&
    (i4 = char_index(A4, c6[4])) >= 0 && (i5 = char_index(A4, c6[5])) >= 0) {
        // This is a standard callsign
        int32_t n28 = i0;
        n28 = n28 * 36 + i1;
        n28 = n28 * 10 + i2;
        n28 = n28 * 27 + i3;
        n28 = n28 * 27 + i4;
        n28 = n28 * 27 + i5;
        printf("Pack28: n28=%d (%04xh)\n", n28, n28);
        return NTOKENS + MAX22 + n28;
}

L'idée de remplacer les caractères par des index est importante ici, ce qui est efficace avec une petite taille de dictionnaire. Par conséquent, l'indicatif d'appel «RA1ABC» sera écrit comme 0BF1C2C1h - nous avons dépensé 4 octets au lieu de 6.

De même, le localisateur de grille «KO50» est écrit comme un nombre 4BFAh à 2 octets. Tout cela est nécessaire car la longueur maximale des messages est de 77 bits; Bien sûr, du texte arbitraire et même de la télémétrie peuvent être transmis, mais sous réserve de ces limitations. La longueur du message de 77 bits a été choisie comme compromis entre le temps de transmission (environ 13 secondes, ce qui n'est pas si rapide) et la capacité d'information - le message pourrait être allongé, mais il serait envoyé plus longtemps.

Par conséquent, tout notre message «CQ RA1ABC KO50» sera converti en bloc de données 00 00 00 26 28 9F D4 92 FE 88. Un CRC de 14 bits y est également ajouté.

L'étape suivante consiste à convertir le message de 91 bits en ce que l'on appelle le code LDPC (contrôle de parité à basse densité) d'une longueur de 174 bits - il ajoute une redondance utilisée pour corriger les erreurs lors de la réception. Dans cette étape, le message est converti en 00 00 00 26 28 9F D4 92 FE 8A CA 0C F3 D1 34 33 88 D0 C2 9C 3D CC.

Codage de fréquence


Tout ici est assez simple. Dans cette étape, nous transformerons le message en une séquence de tons de différentes fréquences. Comme vous le savez, nous pouvons avoir 8 tonalités (type de modulation FSK-8), après la conversion, nous obtenons une séquence de la forme 31406520 00000001 15353274 61112745 36563140 65201575 76054515 70523040 61407642 3140652 où chaque chiffre est un numéro de tonalité de 0 à 7.

L'espacement des fréquences entre les tonalités est de 6,25 Hz, la durée d'une tonalité est de 0,16 s, avec la séquence illustrée ci-dessus, vous pouvez facilement générer un fichier WAV ou contrôler directement le synthétiseur de fréquence dans le cas d'une balise autonome.

Le spectre du signal généré de notre message ressemble à ceci:



Bien sûr, il vaut mieux entendre une fois que de regarder le spectre, hélas, Habr ne permet pas de joindre un fichier wav, mais nous n'avons pas pu trouver une vidéo normale sur YouTube avec une démonstration du son FT8. Les radio-amateurs modernes n'ont plus besoin d'écouter l'émission , l'ordinateur le fait pour eux. Un exemple du processus radio peut être trouvé ici:


Conclusion


Comme vous pouvez le voir, mathématiquement FT8 est un protocole assez intéressant. Les originaux du code source WSJT-X sont écrits en Fortran, et je ne pouvais toujours pas le comprendre avec eux. Une version distincte de l'encodeur en C ++ peut être consultée sur github.com/kgoba/ft8_lib , les extraits de code ci-dessus en ont été extraits. Ceux qui le souhaitent peuvent aussi simplement télécharger la version WSJT-X , c'est gratuit, vous pouvez l'essayer sans émetteur, juste une carte son. Vous pouvez même syntoniser les fréquences FT8 en utilisant http://websdr.ewi.utwente.nl:8901 et rediriger le son via un câble audio virtuel, de sorte que vous pouvez regarder le programme en fonctionnement sans émetteur-récepteur et sans indicatif d'appel r / l.

Quant à la popularité du FT8 dans les cercles de radio amateur ... Eh bien, personnellement, ce n'est pas tout à fait clair pour moi, à mon avis il n'y a déjà pas de romance dans de tels types de communication, c'est plus proche du protocole industriel que du hobby et de la créativité. Mais la plupart semblent avoir une opinion différente, comme le montre le graphique au début de l'article. Des millions de fans de radio amateur ne peuvent pas se tromper? Eh bien, FT8 lui-même, bien sûr, est techniquement intéressant, et ici, peut-être, le processus d'étude du protocole est beaucoup plus intéressant que son utilisation. Bien, essayer le programme au moins une fois est certainement aussi intéressant.

Toutes les expériences réussies.

All Articles