Considérations matérielles

Contenu

  • Introduction
  • Prérequis
  • De quoi aurai-je besoin?
  • Utilisation de blocs UHD
  • Construire un récepteur radio FM
    • Création d’un analyseur de spectre radio logiciel
    • Utilisation de votre logiciel Radio Spectrum Analyzer
    • Construire un récepteur FM de diffusion
    • Un récepteur FM de diffusion radio de logiciel fonctionnel

Introduction

L’une des grandes forces de GNU Radio est la facilité avec laquelle il est possible de passer de la simulation au fonctionnement réel. Dans ce didacticiel, nous nous appuierons sur ce que vous avez appris jusqu’à présent et créerons un récepteur radio FM complet que vous pourrez utiliser pour écouter vos stations de radio FM locales. En cours de route, nous aborderons un certain nombre de considérations qui entrent en jeu lorsque vous travaillez avec du matériel radio du monde réel.

Conditions préalables

De quoi aurai-je besoin?

Si vous n’avez pas de radio avec laquelle travailler, ce tutoriel est toujours utile. Vous pouvez simplement utiliser un enregistrement d’une radio réelle, sans rien faire pour les données. Nous avons fourni un enregistrement, que vous pouvez trouver dans le référentiel gr-tutorials . Vous pouvez l’utiliser dans votre organigramme pour simuler le matériel en passant vos échantillons.

Ce tutoriel sera cependant très utile si vous disposez d’un matériel radio que vous pouvez utiliser avec GNU Radio. Il existe un nombre important et croissant de fournisseurs qui fournissent du matériel avec des pilotes GNU Radio, et ils vont de récepteurs très bon marché de 20 $ à des systèmes très performants de plusieurs dizaines de milliers de dollars. Ce tutoriel est possible si vous avez une radio qui ne peut que recevoir, en supposant qu’elle puisse syntoniser les bandes FM. La plupart des pays attribuent entre ~ 87 MHz et ~ 108 MHz à la radio FM, avec quelques légères variations sur le plancher et le plafond de la gamme.

Utilisation de blocs UHD

L’auteur utilise un Ettus Research USRP B200 , qui utilise le pilote matériel USRP (UHD) . Ainsi, les sources et récepteurs matériels utilisés dans ce didacticiel seront des blocs gr-uhd .

Si vous utilisez un autre matériel, vous devez utiliser les blocs suggérés par votre fournisseur de matériel. Un autre ensemble de blocs HW populaires, par exemple, est gr-osmosdr .

Pour utiliser des blocs UHD, vous devez avoir installé UHD. Il existe plusieurs façons d’installer UHD, que vous pouvez lire ici . Si vous avez construit GNU Radio à partir de la source, vous devriez avoir vu gr-uhd dans la liste des composants en cours de construction dans la sortie CMake. Si GNU Radio a réussi à trouver votre installation UHD, vous devriez voir un groupe de blocs UHD dans le GNU Radio Companion:

Grc uhd blocks.png

Construire un récepteur de radio FM

Dans cette section, nous allons construire un récepteur radio FM fonctionnel que vous pouvez utiliser pour écouter vos stations de diffusion FM locales. Ce contenu est basé sur la série de diapositives du didacticiel préparée par Balint Seeber, disponible ici: files.ettus.com/tutorials

Création d’un analyseur de spectre radio logiciel

L’une des choses les plus élémentaires (mais aussi incroyablement utiles) que vous pouvez faire dans GNU Radio avec un récepteur est simplement de tracer une FFT en temps réel de ce que voit votre récepteur. C’est un analyseur de spectre radio logiciel. C’est également une excellente première étape, car elle permettra de vérifier que votre matériel fonctionne correctement et nous pouvons l’utiliser pour identifier les stations de diffusion dans votre région que nous réglerons plus tard.

Créez un nouveau diagramme de flux. Déposez un ‘UHD: USRP Source’ et ‘QT GUI Sink’ dans le canevas. Dans la section précédente, nous avons utilisé des variables statiques pour la fréquence et le gain. Ici, rendons-les modifiables à la volée. Trouvez la «gamme d’interface graphique QT» et ajoutez-en deux à votre organigramme. Ouvrez chacun d’eux et remplissez les champs suivants en fonction de votre matériel. Les miennes sont remplies, ci-dessous, pour correspondre aux capacités de l’USRP B200:

QT GUI Range 1:

  • ID: freq
  • Étiquette: freq
  • Valeur par défaut: 1e9
  • Début: 70e6
  • Arrêt: 6e9
  • Étape: 10e6

QT GUI Range 2:

  • ID: gain
  • Label: gain
  • Valeur par défaut: 0
  • Début: 0
  • Arrêt: 74
  • Étape: 1

Modifiez la valeur de votre bloc variable ‘samp_rate’ en quelque chose d’intéressant. J’ai mis le mien à 32 MSps. Maintenant, ouvrez les propriétés de ‘UHD: USRP Source’. Tout comme nous avons utilisé nos blocs variables dans la section précédente pour nos paramètres radio, nous ferons de même ici. Utilisez les «ID des« blocs de plage »ci-dessus pour définir les paramètres« Source UHD »:

  • Samp Rate (Sps): samp_rate
  • Ch0: fréquence centrale (Hz): fréquence
  • Ch0: Gain (dB): gain
  • Ch0: Antenne: «TX / RX»
  • Ch0: Bande passante (Hz): samp_rate

Lorsque vous avez terminé, votre organigramme devrait ressembler à ceci:

Spécifications simples an.png

Vous pouvez également télécharger ce diagramme si vous souhaitez le fichier de référence .

Vous devriez être prêt!

Utilisation de votre logiciel Radio Spectrum Analyzer

Allez-y et exécutez votre organigramme. Vous devriez voir votre spectre reçu en temps réel. Jouez avec les curseurs et les valeurs, et vous devriez également voir tout se mettre à jour en temps réel. Le récepteur par défaut GNU Radio QT FFT possède un certain nombre de fonctionnalités utiles, telles que la moyenne et le maintien de crête. Prenez le temps de vous familiariser avec eux maintenant.

Construire un récepteur FM de diffusion

Maintenant que vous disposez d’une application de réception de base fonctionnant avec un affichage en temps réel de vos données reçues, créons une application utile! Laissez votre organigramme actuel en place. Nous allons simplement ajouter plus de fonctionnalités dans le diagramme plutôt que de remplacer ce qui existe déjà.

Tout d’abord, comme vous l’avez peut-être deviné, nous devrons ajouter quelques blocs supplémentaires au diagramme. Recherchez et ajoutez les blocs suivants:

  • 1x rééchantillonneur rationnel
  • 1x récepteur WBFM
  • 1x récepteur audio
  • 2x Variable

Notre flux de données sera la source USRP -> Rational Resampler -> WBFM Receiver -> Audio Sink. Allez-y et connectez les blocs ensemble dans cet ordre. GNU Radio mettra probablement en évidence de nombreux champs en rouge, indiquant des erreurs. Nous allons maintenant passer en revue et configurer les paramètres, qui les résoudront.

Tout d’abord, configurons ces deux nouveaux blocs variables que vous avez ajoutés. Créez avec eux les deux variables suivantes:

Variable:

  • ID: audio_interp
  • Valeur: 4

Variable:

  • ID: audio_rate
  • Valeur: 48e3

Revenons également en arrière et accordons notre variable de taux d’échantillonnage, que nous avions précédemment. Remplacez cette variable par 250e3 (250 kHz).

Variable: samp_rate

  • ID: samp_rate
  • Valeur: 250e3

Maintenant, configurons vos trois autres nouveaux blocs.

Récepteur audio
Ce bloc est assez simple. Il prend un flux d’échantillons et les lit via vos haut-parleurs. Ce bloc est installé avec la bibliothèque gr-audio , qui fait partie de la distribution principale de GNU Radio. Il existe quelques taux communs / par défaut que les cartes son utilisent – l’un des plus courants est 48 kHz, c’est ce que nous utiliserons ici (d’où votre configuration de la variable ‘audio_rate’ ci-dessus).

Ouvrez les paramètres du récepteur audio. Apportez les modifications suivantes:

  • Taux d’échantillonnage: audio_rate
  • OK pour bloquer: «Non»

Maintenant, nous avons juste besoin de transformer les échantillons de votre matériel en quelque chose que vous pouvez jouer via vos haut-parleurs! Allons deux blocs remonter la chaîne, ensuite.

Rééchantillonneur rationnel
La source USRP diffuse à un taux de «samp_rate», que nous venons de définir à 250e3. Le récepteur audio est configuré pour un taux d’échantillonnage (consommation) de «débit audio», qui est de 48e3. Mais, nous avons un problème: notre taux d’échantillonnage source n’est pas un multiple entier du taux audio: 250000/48000 = 5.208. Pour résoudre ce problème, nous allons «rééchantillonner» le flux. Pensez au rééchantillonnage ici comme à l’adaptation d’impédance. Nous devons convertir le débit du flux d’entrée en débit du flux de sortie.

Le bloc de rééchantillonnage rationnel vous permet d’ajuster le débit d’un flux de données. Il le fait en interpolant ou en décimant pour atteindre un taux d’échantillonnage souhaité. Ouvrez les propriétés de ce bloc et ajustons les paramètres.

Réglez le ‘Type’ sur ‘Complex-> Complex’, indiquant ainsi au bloc d’utiliser des taps complexes. Maintenant, nous devons ajuster les taux réels. Il y a une certaine intelligence intégrée dans ce bloc – si nous lui donnons les différents taux d’échantillonnage non divisibles, le code calculera le GCD et fera en sorte que tout fonctionne pour nous. Nous savons que le débit entrant est de 250 kSps, alors entrons cela dans «Décimation». Mais, ce paramètre doit être un entier, et notre «samp_rate» est un flottant. Ainsi, nous devons utiliser la fonction Python ‘int ()’ pour la convertir.

Maintenant, nous devons définir le taux «d’interpolation». Il y a un «  piège  » ici, car le bloc WBFM plus bas dans notre chaîne effectuera en fait une décimation supplémentaire de quatre, nous devons donc réellement dire à ce bloc de produire un taux quatre fois supérieur à ce que nous voulons. Nous savons que ce que nous voulons réellement est «audio_rate», alors utilisez votre variable «audio_interp» pour définir le taux réel.

À ce stade, vous devriez avoir défini ces paramètres:

  • Type: Complexe-> Complexe (Robinets complexes)
  • Interpolation: audio_rate * audio_interp
  • Décimation: int (samp_rate)

En laissant le paramètre ‘Taps’ vide, nous indiquons au bloc que nous voulons qu’il calcule automatiquement les taps. Le paramètre «Fractional BW» affecte la forme du filtre passe-bas qui est généré lorsqu’aucune prise de filtre n’est fournie. En laissant cet ensemble à zéro, nous utiliserons simplement une valeur par défaut raisonnable.

Remarque: Selon la précision des références d’horloge dans votre matériel, vous devrez peut-être régler le champ d’ interpolation ci-dessus. Il s’agit de l’une des nombreuses déficiences matérielles auxquelles vous devrez peut-être faire face. Lorsque j’ai exécuté ce diagramme pour la première fois, j’ai entendu beaucoup de bruit. J’ai ensuite réglé ce taux d’ interpolation , et il s’est nettoyé. Mes derniers chiffres étaient:

  • Interpolation: int (1.05 * (audio_rate * audio_interp))
  • Décimation: int (samp_rate)

Maintenant, configurons notre dernier bloc!

Récepteur WBFM
À ce stade, la configuration de notre dernier bloc est assez simple. Ouvrez les paramètres du bloc. Il n’y a que deux paramètres à définir: le taux d’échantillons entrants et le taux de décimation. Eh bien, nous connaissons les deux. Nous venons de configurer le taux de sortie du rééchantillonneur rationnel, et nous savons que le taux divisé par quatre est égal à notre ‘audio_rate’. Vous souhaitez donc:

  • Taux de quadrature: audio_rate * audio_interp
  • Audio Decimation: audio_interp

Un récepteur FM de diffusion radio de logiciel de travail

Et ça devrait être ça! Vous ne devriez plus voir de rouge dans votre organigramme et vous devriez pouvoir créer votre organigramme sans erreur. Le résultat final devrait ressembler à ceci:

Broadcast fm rx flowgraph.png

Vous pouvez également télécharger ce diagramme pour référence .

L’exécution de votre organigramme devrait faire apparaître une interface graphique qui ressemble à ce que vous voyez ci-dessous. La modification de la fréquence et le réglage d’une station FM de diffusion locale devraient diffuser la radio démodulée via les haut-parleurs de votre ordinateur.

Broadcast fm running.png