GNU Radio – RX SSB / BLU Simple

Avec les radios logiciel (SDR = Software Design Radio), il est intéressant de développer son propre logiciel de réception radio basé sur ces nouvelles technologies. Ici nous allons utilisé le logiciel Open Source GNU Radio pour créer un récepteur BLU ( SSB) très simple qui permettra de comprendre quelques bases. Pour la partie matériel (Hardware) j’utilise un HackRF afin de couvrir les bandes décamétriques. Pour info, on trouve le hackRF avec son boitier autour de 100€ chez Aliexpress en chine. Pour le traitement, j’utilise un Orange Pi PC 2 H5 QUAD CORE 64 Bit acheté en chine sur Ebay.

Pour l’installation du driver du HackRF et de GNU Radio veuillez vous référer à l’article suivant.

Pour l’étude d’un récepteur plus complet voir l’article récepteur BLU distant.

Chaine de traitement

La chaîne de traitement proposée ici est la plus simple possible. Elle n’est pas optimum en performance mais permet de comprendre et maîtriser GNU Radio.

Ouvrir l’éditeur graphique GNUradio-companion qui permet d’implanter facilement des blocs de traitement du signal. Initialiser un nouveau projet (file, new) de type graphique QTGUI.

Echantillonnage

Immédiatement dans le bloc « ID:samp_rate » (bouton droit) changer la fréquence échantillonnage à 2MHz. Mettez 2e6 pour 2*10 puissance 6. C’est elle qui définira l’échantillonnage du HackRF, il est recommandé de ne pas aller en dessous.

Fréquence réception HackRF

Créer un bloc curseur (QT GUI Range), que vous trouvez dans le menu de droite de GNU Radio, définissant la fréquence centrale de réception du HackRF en MHz par pas de 100kHz. On balaye de 7 à 15MHz.

Le HackRF se connecte sur un port USB de l’Orange PI et sera piloté par le logiciel gr-osmosdr. Mettez un bloc « osmocom source » que vous trouvez dans le menu de droite de GNU Radio.

Pour l’échantillonnage, on se réfère à la variable samp_rate, pour la fréquence à la variable FrequenceMHz définie plus haut.

Il y a 3 gains à définir pour le HackRF. C’est un point délicat. On pourrait mettre 3 curseurs pour rechercher l’optimum mais dans un souci de simplification, j’ai mis les valeurs fixes 0, 30 et 30dB.

Ce module est utilisable avec différents SDR comme les RTL-SDR etc. Voir le champ documentation pour identifier les variables à définir et celles non nécessaires.

Filtrage

Imaginons que l’on cherche à écouter une station autour de 7180kHz. La fréquence centrale du HackRF sera mise sur 7100kHz. Ainsi en sortie nous aurons sur les signaux I et Q un spectre de 2 MHz de large centré autour de 7.1MHz.

Pour extraire le signal rouge qui nous intéresse, on utilise un filtre qui translate le spectre de 80kHz autour de 0 et filtre la bande sur +- 3kHz.

Créer une variable ‘filtrage_3kHz’ qui va contenir la fonction de filtrage de 3kHz avec une bande de transition de 1000Hz. Ce n’est pas très raide mais consomme moins de puissance de calcul.

Créer un deuxième bloc curseur (QT GUI Range), définissant la fréquence fine de décalage (ID:Zoom_frequence) de 0 à 100kHz par pas de 100Hz.

Créer un bloc Xlating_FIR_Filter pour assurer un décalage fin suivant le bloc curseur ‘Zoom_frequence’. Pour la sortie (Taps) definissez le filtre de 3kHz avec la ‘variable filtrage_3kHz’ et la fréquence avec la variable ‘Zoom_frequence’.

Comme la bande de fréquence de sortie est limitée à 3kHz on réduira la fréquence d’échantillonnage à 16kHz pour s’adapter à la carte audio de l’Orange PI. Pour cela on positionne le facteur de décimation à 125.(16kHz=2MHz/125).

Sorties FFT et Audio

En sortie de ce filtre, vu que l’on a perdu beaucoup d’énergie, on positionne un bloc d’amplification par 1000. Pour visualiser les signaux on connecte un bloc FFT qui permet de voir le spectre et contrôler que l’on ne dépasse pas les 0dB de saturation audio. Ce spectre est centré sur la frequence du HackRF + la fréquence fine de décalage. Tous les signaux sont traités sous forme de nombres complexes pour contrôler les amplitudes et phases. A présent pour l’audio on ne prend que la partie réel du signal complexe en mettant un bloc ‘Complex to Real’. En sortie on positionne un bloc ‘Audio Sink’ à 16kHz. Cette fréquence dépend de la carte audio. Parfois il faut prendre du 32, 40.1 ou 48kHz.

Pour écouter une station en LSB ou USB, on se positionne en fréquence au dessus ou en dessous.

On voit que ce traitement n’est pas optimum car on écoute le bruit dans 2 bandes de 3kHz autour de la fréquence centrale. Mais cela offre une chaine de traitement la plus simple à comprendre pour débuter avec GNU Radio. De même il faudrait rajouter une fonction de contrôle du gain (AGC).

Vous pouvez télécharger le fichier ( .grc) source de ce récepteur SSB de GNURadio-companion ici.

Si vous souhaitez travailler en VHF ou UHF, vous modifiez le bloc de fréquence de pilotage du HackRF. Il est possible également d’utiliser une clé RTL-SDR pour écouter les bandes hautes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *