Cet article permet d »installer le nécessaire pour utiliser les clé rtlsdr avec GNU Radio Companion. Pour installer GNU Radio, voir cet article.
Pour utiliser une clé rtlsdr, la « librairie » nécessaire est la librairie gr-osmosdr. La procédure d »installation est également disponible ici.
git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr/
git checkout gr3.8
mkdir build
cd build/
cmake ../
make
sudo make install
sudo ldconfig
La commande « git checkout gr3.8 » permet de « charger » la version de gr-osmosdr pour GNU Radio 3.8. Si vous avez GNU Radio 3.9, pas besoin de l’exécuter. Si vous avez GNU Radio 3.7, remplacer gr3.8 par gr3.7.
Une fois l »installation terminée, en lançant GNU Radio vous devriez voir dans la liste des modules une rubrique OsmoSDR :
Il est maintenant temps de temps l »installation. Créez un programme simple de test comme celui ci-dessous :
Programme affichant le spectre de la clé SDR à 100 MHz
Si tout se passe bien, le spectre doit s »afficher :
Si GNURadio vous indique « No module named osmosdr », il y a 2 solutions :
Avant d »exécuter gnuradio-companion dans le terminal, tapez la commande suivante : export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3/dist-packages
Ou si vous ne voulez pas tapez cette commande à chaque fois, mettez la à la fin du fichier .profile en l »ouvrant avec nano :
Avec GNURadio Companion il est possible de tout faire, à commencer par recevoir et décoder l »APRS. C »est assez simple à mettre en place vu qu »une librairie existe, il suffit juste de l »adapter au PlutoSDR.
Ces explications concernent Linux.
Installer gr-aprs
Pour installer la librairie gr-aprs, il suffit de suivre la procédure expliquée ici : https://github.com/handiko/gr-APRS. Il faut donc taper les commandes suivantes :
git clone https://github.com/handiko/gr-APRS.git
cd gr-APRS/HierBlock/
Une fois dans le dossier du clone GitHub, il faut lancer un 1er programme GNURadio :
gnuradio-companion AFSK_Demod.grc
Exécutez le programme ouvert, puis une fois l »exécution terminée fermez GNURadio.
Faites la même opération avec le 2nd programme :
gnuradio-companion APRS_Rx.grc
Après avoir relancé GNURadio une fois l »opération réalisée avec le 2nd programme, vous devriez trouver des blocks APRS dans la liste des modules disponibles :
Enfin, il faut copier les fichiers installés vers le répertoire python :
Si vous regardez le contenu du dossiercloné depuis Git, vus trouverez un dossier Example. Ce dossier contient plusieurs exemples :
Nous allons nous intéresser à l »exemple de réception via une clé SDR. Ouvrez donc le fichier APRS_RX_RTL.grc dans GNURadio.
Le programme une fois ouvert
Nous avons 2 choses à modifier dans cet exemple pour que nous puissions recevoir l »aprs avec le PlutoSDR : la fréquence (en France elle est de 144.8MHz) et la source.
Pour la fréquence, il suffit de la remplacer dans la définition de la variable freq :
Définition de la variable freq
Pour remplacer la source par le PlutoSDR, il faut supprimer le bloc osmocom Source et mettre à sa place le bloc PlutoSDR Source.
Configuration du bloc PlutoSDR Source
Le programme ressemble désormais à ça :
Décodage
Maintenant il est temps de recevoir quelques trames. Pour cela, lancer le programme. La fenêtre suivante devrait s »ouvrir avec les différents spectres radio et audio :
Pour voir les trames décodées, il faut écouter le port 52001 depuis un terminal :
telnet localhost 52001
Les différentes trames reçues
Et voilà, vous pouvez maintenant décoder l"APRS avec GNURadio et le PlutoSDR.
Cet article est réalisé en utilisant le PlutoSDR, mais en remplaçant le bloc source par le bloc adapté aux clés SDR « classiques » le programme fonctionnera avec les clés SDR comme les R820T.
Avant de suivre cet article, il est nécessaire d »avoir GNU radio installé sur son ordinateur (voir article dédié à l »installation sous Linux ici). Si vous souhaitez utiliser le PlutoSDR il faut également l »avoir configuré (voir ici).
Configurations générales
Lorsqu »un nouveau programme est créé sous GNU Radio, 2 blocs sont déjà présents : un bloc options et un bloc Variable.
GNU Radio lors de la création d »un nouveau programme.
Commençons par le bloc Options. C »est le bloc qui va définir plusieurs paramètres comme le nom de la fenêtre qui va s »ouvrir au lancement de l »application, son titre, son auteur, sa description, le type d »interface…
Vous pouvez la laisse telle quelle, de mon côté j »ai choisi de la personnaliser un peu :
Mon paramétrage du bloc Options
Le bloc variable est un bloc qui permet tout simplement de déclarer une variable. Dans le bloc présent à la création du programme il s »agit de la variable sample_rate. Elles est initialisée à 32k mais nous nous allons la passer à 2M (2 000 000 ou 2e6).
Fenêtre de configuration de la variable sample_rate
Le bloc Source
Maintenant que les 2 blocs présents par défaut sont configurés, on peut commencer à ajouter des blocs pour construire le récepteur. Le premier de ces blocs est le bloc de « source », en l »occurence ici le bloc PlutoSDR Source dans lequel nous allons paramétrer le PlutoSDR. Ce bloc se trouve en tapant « PlutoSDR Source » dans la zone de recherche de bloc.
Le bloc PlutoSDR Source ajouté au programme mais pas encore configuré.
Il n »y a pas grand chose à modifier dans le bloc : il faut juste lui indiquer l »emplacement du Pluto et utiliser une variable frequence comme fréquence d »écoute.
La configuration du bloc PlutoSDR Source
Après avoir saisi la variable frequence dans le champ LO Frequency, ce dernier devient rouge. C »est tout à fait normal que nous n »avons pas définit cette variable. Pour la définir, vous avez 2 options : soit vous utilisez un bloc Variable, soit vous utiliser le bloc QT GUI Range.
Dans le cas du bloc Variable, vous définirez la fréquence à la création du programme et vous ne pourrez pas la changer pendant son exécution, alors qu »avec le QT GUI Range la fenêtre d »exécution du programme affichera un curseur qui permettra de changer la valeur de la fréquence. C »est ce bloc que nous allons utiliser dans cet article.
Le bloc QT GUI Range inséré mais non configuré
Une fois le bloc inséré, nous pouvons l »utiliser pour définir la variable frequence. Cette variable sera comprise entre 88MHz et 108MHz (la bande FM), on se déplacera sur cette bande avec un pas de 100KHz et on utilisera 90.2MHz (France Bleu de mon département) comme fréquence écoutée au lancement, comme fréquence « par défaut ». Le champ Label permet également de donner un nom « d »affichage » à la variable, comme le contenu de ce champ ne sert uniquement qu »à l »affichage il est donc possible d »utiliser des accents et autres caractères spéciaux.
Le bloc QT GUI Range configuré pour la fréquence
IMPORTANT : il faut penser à changer le Type en int, car les fréquences doivent être des entiers et non des flottants.
Le filtre passe-bas
Maintenant que la source est correctement configurée, il faut définir la large de bande écoutée. Pour cela, nous utiliserons un filtre passe-bas ayant une fréquence de coupure de 100kHZ. Ce bloc se trouve en tapant « Low Pass Filter » dans la liste des blocs.
Le filtre passe bas configuré
Le champ Decimation vaut 4 pour passer d »un taux d »échantillonnage en entrée de 2e6 à un taux d »échantillonnage en sortie à 500k.
Un affichage du spectre de fréquences
Afin de voir la force du signal de la fréquence écoutée, nous allons mettre sur la fenêtre du programme un affichage du spectre de fréquences. Pour cela, ajoutez le bloc QT GUI Frequency Sink. Pour le configurer c »est très simple : il suffit de lui donner comme fréquence centrale (Center Frequency) la variable frequence. Le spectre se centrera alors automatiquement sur la fréquence écoutée.
Le bloc QT GUI Frequency Sink configuré
On peut commencer à relier le bloc de source avec le filtre passe-bas et le bloc d »affichage de la fréquence.
Le bloc source, le filtre passe-bas et l »affichage de la fréquence reliés entre eux
Le bloc démodulateur
L »étape suivante consiste à démoduler le signal, pour passer d »un signal complexe fournit par le PlutoSDR à un signal de type float qui sera notre signal audio. Pour cela, il existe un bloc tout fait sur GNU Radio : WBFM Receive (il faut bien prendre le WBFM qui correspond à une large bande et le non le NBFM qui lui correspond à une bande étroite).
Là encore la configuration est assez simple : il suffit de lui indiquer qu »en entrée on lui injecte un signal échantillonné à 500k et que l »on ne veut pas modifier le signal.
Le bloc WBFM Receive configuré
Ce bloc vient se connecter à la suite du filtre passe-bas.
Adaptation du taux d’échantillonnage
En sortie du démodulateur le signal a un taux d’échantillonnage à 500k, ce qui est élevé pour de l »audio. Nous allons le ramener à 48k avec le bloc Rational Resampler qui va diviser le taux par 500 et le multiplier par 48.
Le bloc Rational Resampler configuré
Il faut bien penser à changer le Type en float car en sortie du démodulateur nous travaillons avec des nombres flottants. Ce bloc vient donc se connecter à la suite du bloc WBFM Receive.
Le volume
Pour gérer le volume, il suffit de multiplier le signal par une constante entre 0 et 1, 0 correspondant à pas de volume et 1 correspondant à la totalité de l »amplitude du signal. La multiplication se fait avec le bloc Multiply Const. Ce bloc vient multiplier le signal par la variable volume que nous pourrons faire varier avec un curseur sur le même principe que la fréquence.
Le bloc Multiply Const configuré
Le bloc de définition du volume configuré
Ecouter le signal audio
Maintenant il ne reste plus qu »un bloc à ajouter : le bloc Audio Sink qui va nous permettre d »écouter le signal audio. Pour le configurer il suffit de choisir un taux d »échantillonnage de 48k.
Le bloc Audio Sink configuré
Place à l »écoute…
Une fois le programme terminé, il ne reste plus qu »à cliquer sur la flèche d »exécution du programme. La fenêtre de réception doit alors s »ouvrir et vous devriez entendre la fréquence choisie.
Le PlutoSDR est un émetteur / récepteur SDR couvrant de 325 Mhz à 3.8Ghz (de 60Mhz à 6Ghz en mettant à jour le firmware). Il est possible d »utiliser le pluto comme un simple récepteur SDR, mais il est plus intéressant de pouvoir développer des applications autour de lui, avec GNU Radio Companion par exemple. Nous allons donc voir dans cet article comment faire communiquer le PlutoSDR et GNU Radio.
Après avoir installé le nécessaire, il ne reste plus qu »à faire un programme de test pour vérifier que tout s »est bien déroulé. Pour cela, ouvrez GNU Radio Companion en super utilisateur :
Ce montage ne contient pas beaucoup de blocs, il ne permettra de tester la bonne installation du pluto en affichant la chute d »eau des fréquences comprises en 88.5MHz et 91.5MHz (autrement dis une chute d »eau centrée sur 90MHz avec 3MHz de bande passante). Le montage à réaliser est le suivant :
Une fois le programme éxécuté, la chute d »eau de la fréquence s »affiche (on voit bien la station radio FM sur 90.2MHz) :
Et voilà, si la chute d"eau s"affiche c"est que votre PlutoSDR est bien installé sur votre ordinateur, il vous est maintenant possible de créer des applications autour de cet émetteur / récepteur SDR.
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,
LowCutoff 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.
Nous allons réaliser un montage dans lequel nous allons générer un signal sinusoïdal et le visualiser.
ATTENTION : dans les dernières version de GNU Radio, les modules WX ont été supprimés, le montage tel quel ne fonctionne donc qu »avec d »anciennes versions du logiciel.
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
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
Dans cet mise à jour de l’article nous allons voir comment installer GNU Radio Companion en ajoutant le PPA. Vous pouvez la retrouver sur le wiki de gnuradio.
Pour installer la dernière version « stable » de GNU Radio, tapez la commande suivante :
Une fois que vous avez le PPA de la version que vous voulez (stable ou en développement), il ne vous reste plus qu’à mettre à jour vous dépôts et à lancer l »installation :
sudo apt-get update
sudo apt install gnuradio
« Ancienne » version de l’article :
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.
Voilà, Gnuradio Companion est maintenant installé avec le block SDR. Il ne suffit plus qu"à prendre en main le logiciel, et ça ne semble pas être chose facile... on verra bien