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.