Les filtres « classiques » dans GNURadio

Dans un précédent article, nous avions vu comment générer un signal et le visualiser dans GNURadio Companion. Nous allons maintenant voir comment filtrer ce signal à l’aide de filtres passe-bas, passe-haut, passe-bande ou avec un réjecteur de bande.

Passe-bas, passe-haut… c’est quoi ?

J’ai cité 4 types de filtres, voilà à quoi ils correspondent :

  • Le filtre passe-bas : il laisse passer les fréquences inférieures à sa fréquence de coupure, et atténue voir supprime les fréquences supérieures
  • Le filtre passe-haut : il fonctionne comme le passe-bas, mais laisse passer les fréquences supérieures à sa fréquence de coupure
  • Le filtre passe-bande : il ne laisse passer que les fréquences comprises dans la bande de fréquence pour laquelle il est conçu, il va donc atténuer voir supprimer les fréquences inférieures et supérieures à sa bande de fréquence
  • Le réjecteur de bande (aussi appelé coupe-bande) : c’est l’opposé du passe-bande, il va bloquer les fréquences comprises dans sa bande de fréquence pour ne laisser passer que celles supérieures ou inférieures

Utiliser un passe-bas ou un passe-haut dans GNURadio

Pour insérer un filtre, il faut commencer par rechercher « filter » dans la liste des blocs disponibles. Vous devez obtenir une liste semblable à celle-ci :

Liste des blocs contenant le terme « filter »

On y retrouve notamment les 4 types de filtre cités plus haut. On va commencer par insérer un filtre passe-bas dans le montage réalisé dans le montage de visualisation du signal. Faites donc glisser le bloc « Low Pass Filter » sur le montage et câblez le montage pour que le filtre soit entre le bloc « Signal Source » et le bloc « WX GUI Scope Sink ».

Le filtre inséré dans le montage

Une fois le filtre inséré, on peut voir les flèches de son signal d’entrée et de sortie sont rouges : il nous faut en effet le paramétrer. Pour cela, comme à chaque fois pour configurer un bloc dans GNURadio, double-cliquez dessus et paramétrez le comme ci-dessous :

Fenêtre de configuration du filtre
  • ID : nom du filtre,
  • FIR Type : « format » du signal d’entrée et sortie,
  • Gain : Gain du filtre dans sa bande passante,
  • Cutoff Freq : fréquence de coupure du filtre,
  • Transition Width : largeur de la bande de fréquence avant laquelle le filtre bloque la totalité du signal.

Il est maintenant tant d’exécuter le montage pour voir le résultat !

Le signal de sortie lorsque la fréquence est de 50Hz, donc dans la bande passante du filtre
Le signal de sortie lorsque la fréquence est identique à la fréquence de coupure du filtre soit 100Hz
Le signal de sortie lorsque la fréquence est de 150Hz, donc bien au dessus de la bande passante du filtre

Le filtre passe haut fonctionne exactement de la même manière, la seule différence est qu’il faut insérer le bloc « High Pass Filter » à la place du bloc « Low Pass Filter ». Le signal de sortie avec le filtre passe-haut :

Signal d’une fréquence de 50Hz
Signal d’une fréquence de 100Hz
Signal d’une fréquence de 150Hz

Utiliser un filtre passe-bande

Pour faire un filtre passe-bande, il est possible de mettre à la suite un filtre pass-haut et un filtre passe-bas, ou tout simple utiliser le bloc « Band Pass Filter ». Il s’insère comme les 2 filtres vus précédemment :

Le montage avec un filtre passe-bande

Un filtre passe-bande se configure comme ci-dessous :

Configuration du filtre passe-bande
  • ID : nom du filtre,
  • FIR Type : « format » du signal d’entrée et sortie,
  • Gain : Gain du filtre dans sa bande passante,
  • Low Cutoff Freq : fréquence de coupure « basse » du filtre,
  • High Cutoff Freq : fréquence de coupure « haute » du filtre,
  • Transition Width : largeur de la bande de fréquence avant laquelle le filtre bloque la totalité du signal.

Une fois le filtre configuré et le programme exécuté, le signal de sortie ressemble à ça :

Signal d’une fréquence de 20Hz
Signal d’une fréquence de 75Hz
Signal d’une fréquence de 120Hz

Utiliser un filtre réjecteur de bande

Le filtre réjecteur de bande s’insère comme les filtres précédents. La configuration est également la même que celle du filtre passe-bande, simplement au lieu de laisser passer le signal entre ses 2 fréquences de coupure il va le bloquer.

Configuration du filtre réjecteur de bande

Les paramètres sont les mêmes que pour le filtre passe-bande. Une fois configuré, le signal est filtré de la manière suivante :

Signal d’une fréquence de 20Hz
Signal d’une fréquence de 75Hz
Signal d’une fréquence de 130Hz
Vous pouvez maintenant utiliser ces 4 types de filtres pour traiter votre signal.

Un premier montage sur GNU Radio

Après avoir installé GNU Radio (voir ici pour Linux, ici pour Windows), il est temps de l’utiliser !

Nous allons réaliser un montage dans lequel nous allons générer un signal sinusoïdal et le visualiser.

Le générateur de signal

La première étape est d’insérer le générateur de signal. Vous le trouverez en recherchant Signal Source dans les composants. Faites un double clic pour l’insérer.

Insertion du générateur de signal

La configuration du générateur est assez simple et se fait à l’aide de la fenêtre suivante (elle s’ouvre grâce à un double clic sur le composant) :

Pour régler le signal de sortie, voilà les paramètres à modifier :

La fenêtre de configuration du générateur de signal
  • Waveform : permet de changer la forme du signal (cosinus, sinus, constant, carré, triangulaire…),
  • Frequency : fréquence du signal (50e6 pour 50 Mhz, 1e3 pour 1 Khz…),
  • Amplitude : amplitude du signal,
  • Offset : décalage du signal.
L’oscilloscope

Une fois le générateur intégré, il faut insérer l’oscilloscope qui permettra la visualisation du signal. Pour cela, il faut rechercher WX GUI Scope Sink. Faites ensuite un glisser-déposer pour l’insérer. En double cliquant sur le module vous obtiendrez une fenêtre de configuration à modifier avec les paramètres suivants :

La fenêtre de configuration de l’oscilloscope
Limiter la vitesse d’execution

Avant de relier les bloc entre eux, il est nécessaire d’ajouter un cloc qui va limiter la vitesse d’exécution du montage. En effet, si on ne la limite pas, la vitesse d’exécution sera la vitesse maximale de votre processeur, ce qui peut faire planter votre ordinateur.

Ce bloc se trouve en recherchant Throttle. Paramétrez le ensuite en Type Float.

La version finale du montage

Une fois tous les blocs ajoutés, il est temps de les câbler. Pour cela, il suffit de cliquer sur la sortie d’un bloc puis sur l’entrée d’un autre pour les relier. Relier les différents bloc de notre montage comme ci-dessous :

Le montage câblé

Avant d’exécuter il reste une dernière manipulation à effectuer, double cliquez sur le bloc Options et dans la case Generate Options sélectionnez WX GUI.

Vous pouvez ensuite exécuter le montage. Pour cela, cliquez sur le bouton d’exécution dans la barre d’outil :

Le bouton d’exécution

Vous devriez voir s’ouvrir la fenêtre de l’oscilloscope.

La fenêtre de visualisation du signal

Vous pouvez modifier les paramètre d’affichage grâce aux différents paramètres situés dans la colonne à droite du graph :

  • Secs/Div : réglage de l’axe des abscisses,
  • Counts/div : réglage de l’axe des ordonnées,
  • Y offset : décalage de la courbe sur la courbe des ordonnées,
  • T offset : décalage de la courbe sur l’axe des abscisses.
Ajout d’un curseur pour changer facilement la fréquence

Dans le montage actuel, pour modifier la fréquence du signal, il faut modifier les paramètres du bloc Signal Source. Pour simplifier le changement de fréquence, nous allons ajouter un curseur sur la fenêtre de visualisation du signal.

La première étape consiste à ajouter un bloc WX GUI Slider. Paramétrez ensuite le bloc comme ci-dessous :

Configuration du curseur
  • ID : nom du curseur, son identifiant,
  • Default Value : valeur par défaut du curseur, c’est la valeur qui sera prise à l’exécution, avant que l’utilisateur ne la modifie,
  • Minimum : valeur minimum que peut prendre le curseur,
  • Maximum : valeur maximum que peut prendre le curseur,
  • Num Steps : nombre de pas du curseur,
  • Style : choix du sens du curseur (horizontal ou vertical).

Le curseur est maintenant créé, il faut donc dire au générateur de signal qu’il doit utiliser la valeur du curseur pour définir la fréquence. Pour cela, modifiez les paramètres du bloc Signal Source, et à la case Frequency mettez l’identifiant du curseur (dans mon cas ça sera frequence). Si vous exécutez de nouveau le montage, vous devriez voir apparaitre dans la fenêtre de visualisation du signal un curseur, et si vous le déplacez la fréquence doit varier.

Visualisation du signal avec le curseur de la fréquence réglé à 165 Hz

Installation du logiciel GNU Radio Companion sous Windows

Cet article traite l’installation de GNU Radio Companion sous Windows. Pour l’installer sous Linux, voir cet article.

La version pour Windows de GNU Radio est disponible sur cette page. Il vous suffit de sélectionner la version que vous voulez et de télécharger le fichier exécutable. Une fois le fichier télécharger, il suffit de l’exécuter.

Une fois l’installation terminée, vous pouvez lancer GNU Radio.

Capture d’écran de GNU Radio une fois l’installation effectuée

Installation du logiciel Gnu Radio Companion sous Linux

Dans cet article, nous allons voir comment installer le logiciel Gnuradio Companion sous le système d’exploitation Linux Mint (voir cet article pour l’installer sous Windows). Il s’agit d’un logiciel gratuit, vous trouverez plus d’informations sur le logiciel sur le site gnuradio.org.

Ce logiciel est modulable, on peut y ajouter des « blocks », qui contiennent des fonctions supplémentaires.

Installation du logiciel de « base »

Voyons comment installer le logiciel de « base », c’est-à-dire sans blocks additionnels.

Pour lancer l’installation, il suffit d’une simple commande dans le terminal (avant de l’exécuter, il faut bien entendu avoir fait la commande avec « update ») :

sudo apt-get install gnuradio

Après avoir laissé travailler l’ordinateur pendant quelques minutes, Gnu Radio Companion est installé.

Pour le lancer, vous pouvez soit utiliser son icône présent dans le menu Démarrer, rubrique « Programmation », soit taper la commande :

gnuradio-companion

Si l’installation s’est bien déroulée, vous devriez avoir la fenêtre suivante :

Gnuradio Companion au lancement.

Ajout de blocks supplémentaires

Comme expliqué plus haut, vous pouvez ajouter des fonctions à Gnuradio Companion avec des blocks. Pour mon utilisation, j’ai choisis d’ajouter les blocks pour la clé SDR et pour le RDS.

Pour le block SDR :

L’ajout du block SDR se fait par une simple commande, il suffit en effet de taper dans un terminal :

sudo apt-get install gr-osmosdr

Si vous relancez Gnuradio Companion, vous devriez maintenant trouver « RTL-SDR Source » dans le menu des sources, à droite.

La source RTL-SDR.

Pour le block RDS :

Pour ajouter le block RDS, la démarche est la même, seule commande change, il faut taper dans un terminal :

sudo apt-get install gr-rds

Voilà, Gnuradio Companion est maintenant installé, avec les blocks SDR et RDS. Il ne suffit plus qu'à prendre en main le logiciel, et ça ne semble pas être chose facile... on verra bien