banner
Maison / Nouvelles / Premiers pas avec GNU Radio
Nouvelles

Premiers pas avec GNU Radio

May 26, 2023May 26, 2023

La radio définie par logiciel (SDR) – la capacité de traiter les signaux radio à l’aide d’un logiciel plutôt que de l’électronique – est indéniablement fascinante. Cependant, il existe un grand écart entre la possibilité d'utiliser un logiciel SDR disponible dans le commerce et d'écrire le vôtre. Après tout, les SDR nécessitent beaucoup de traitement du signal numérique (DSP) à grande vitesse.

Peu de gens pourraient construire un PC moderne à partir de zéro, mais presque tout le monde peut se procurer une carte mère, des cartes d'E/S, une alimentation et un boîtier et assembler un système personnalisé. C'est l'idée derrière GNU Radio et SDR. GNU Radio fournit une multitude de fonctions Python que vous pouvez utiliser pour créer une application SDR sophistiquée (ou, en fait, n'importe quelle application DSP).

Si Python ne vous convient toujours pas (ou même si c'est le cas), il existe un moyen encore plus simple d'utiliser GNU Radio : le GNU Radio Companion (GRC). Il s'agit d'une approche principalement graphique, vous permettant d'assembler graphiquement des modules et de créer des interfaces graphiques simples pour contrôler votre nouvelle radio.

Même si vous considérez généralement GRC comme une affaire de radios, il s'agit en fait d'un bon cadre pour créer tout type d'application DSP, et c'est ce que je vais vous montrer dans la vidéo ci-dessous. GRC dispose d'un bloc générateur de signal et d'interfaces avec votre carte son. Il a même la capacité de lire et d'écrire des données sur le système de fichiers, vous pouvez donc l'utiliser pour réaliser de nombreuses applications ou simulations DSP sans matériel supplémentaire.

MISE À JOUR:Ne manquez pas l'article de suivi qui utilise SDRPlay pour créer un récepteur basé sur GNU Radio.

Il existe plusieurs éléments de base clés qui se combinent pour rendre le SDR possible. Le premier est un périphérique d'entrée (une source) qui est échantillonné à une certaine fréquence d'échantillonnage. Pour un périphérique audio, les échantillons seront des nombres réels. Cependant, les appareils radio fourniront plus probablement des nombres complexes avec une composante I et Q.

Si vous n'êtes pas familier avec l'expression de signaux sous forme de composants I et Q (parfois appelés données en quadrature), c'est un sujet important (avec une excellente explication 3D, une de Tektronix et une autre de National Instruments). Cependant, vous n'avez pas besoin de comprendre directement la théorie derrière les signaux en quadrature pour démarrer avec GRC. Sachez simplement que les signaux I et Q peuvent se combiner pour exprimer n’importe quelle forme d’onde et, à l’inverse, n’importe quelle forme d’onde peut se diviser en une série de valeurs I et Q. Avec GRC, cependant, il n'est pas si important (dans la plupart des cas) de comprendre cela, tout comme vous pouvez utiliser une carte vidéo sans savoir exactement quels signaux se trouvent sur le bus PCI express.

Vous pouvez trouver un projet de démarrage simple dans la vidéo ci-dessous. GRC utilise un diagramme fonctionnel (un graphique de flux) pour représenter votre projet. Lorsque vous créez un nouveau graphique de flux, vous verrez deux blocs déjà présents : un pour les options et une variable nommée samp_rate. La partie la plus importante du bloc d'options définit la boîte à outils graphique que vous souhaitez utiliser (widgets graphiques WX ou widgets QT). Pour notre propos, cela n'a pas vraiment d'importance, mais dans la vidéo, je vais sélectionner Qt. La fréquence d'échantillonnage fait tellement partie intégrante de votre conception qu'il existe une variable spéciale pour elle. La plupart des autres blocs récupéreront la valeur de cette variable et l'utiliseront pour leur fréquence d'échantillonnage. Cependant, ce n’est pas toujours ce que vous souhaitez, mais c’est un bon point de départ. Pour cet exemple, je vais éventuellement obtenir une entrée d'une carte son, je voulais donc une fréquence d'échantillonnage que la plupart des cartes son prendront en charge (48 kHz). Pour commencer, j’ai gardé l’exemple très simple, comme vous pouvez le voir dans le diagramme ci-dessus.

Pour commencer, vous placerez une source de signal qui génère des données IQ (sous forme de nombres complexes) sur le graphique de flux. Le bloc générateur de signaux peut en fait générer trop de données et ralentir le processeur. Puisque la fréquence d'échantillonnage est de 48 kHz, cela n'a pas de sens de générer plus de 48 000 échantillons par seconde. Pour vous assurer que cela se produit, vous ajouterez un bloc papillon et le connecterez au générateur.

La connexion de ports ayant la même couleur (et donc le même type de données) est simple. Cliquez simplement sur un port, puis cliquez sur l'autre. L'ordre n'a pas d'importance et vous pouvez connecter plusieurs entrées à une seule sortie. Si le type de données du port ne correspond pas, vous devrez utiliser un convertisseur de type (et l'exemple de vidéo le montrera plus tard).