f0fyf

f0fyf

samedi 23 août 2014

Récepteur FM avec GnuRadio

Je commence tout doucement à comprendre le fabuleux Gnu-Radio et toutes ses capacités à pouvoir créer toutes sortes de choses tournant autour de la radio à condition d'avoir un petit dongle style RTL2832. Je vais essayer, à travers ce post, de vous montrer comment crée un petit récepteur de radio FM tout simple pour bien comprendre les rouages de ce logiciel.
Un récepteur mono-fréquence est généralement constitué :

  • d'une source de signal ( ici, le rtl-sdr )
  • d'un démodulateur WBFM ( la gamme 88-108 utilise le mode WFM dit FM large avec un signal modulé sur +/- 75 Khz alors qu'en FM, ce signal est modulé sur +/-5Khz. Pour la NFM, dite FM étroite, ce sera +/- 2,5Khz )
  • Un filtrte passe-bas afin de "couper" tout ce qui est au-dessous d'une certaine fréquence
  • Une sortie audio ( pour nous, la carte son )
Il faudra également d'autres accessoires en fonction du taux d'échantillon mais Gnu-radio regroupe tout cela dans des modules  facilement configurable.
Commençons par la source qui sera notre RTL-SDR :



Le taux d'échantillonnage sera réglé à 2 Mhz ( !! sous gnu, pour choisir 2Mhz, il faudra saisir 2e6 ). La fréquence en Hz sera réglée sur une de vos stations favorites ( ici 102.1 Mhz). Pensez également à mettre la calibration de votre clé ( différence de la fréquence reçue par rapport à la fréquence affichée ). Pour moi, il faut que le rtl soit sur 101.64 afin de bien recevoir le 102.1 d'où une différence de - 460 Khz. Le gain sera laissé en automatique afin de simplifier les choses.


Le démodulateur WFM :


On règle te taux de quadrature à 500Khz avec l'audio decimation à 10

Le filtre passe-bas


Il faut ici filtrer les fréquences autres que celle que nous voulons. Nous mettrons une fréquence de coupure à 100 Khz ( largeur de bande standard ) alors que la fréquence de transition sera de 1 Mhz. la valeur de la décimation sera calculée en fonction du taux d'échantillonnage de la carte son ( ici 2 Mhz ) par rapport à la valeur de la quadrature. Cette valeur de taux d'échantillonnage sera placé dans un module de variable : 


Enfin, la sortie audio



On règle le taux d'échantillonnage de la carte son à 48 khz

Le tour est fait des principaux organes de notre récepteur. Il va falloir maintenant, raccorder tout cela. Nous allons avoir besoin d'adapter la sortie audio à la régulation du volume. Il nous faudra pour cela utiliser trois blocs : WX GUI SLIDER ( qui servira à créer une fenêtre avec un curseur pour le volume ) et Rational Resampler ( qui va adapter le taux de sortie du démodulateur à celui de la carte son tout en pouvant régler le volume ) et Multiply Const 



Le signal de sortie du démodulateur est traité et sera dorénavant réglable via le petit widget de volume lié à la carte son. 


Optionnel mais pour que tout fonctionne mieux, on pourra rajouter un bloc Rational Resampler à la sortie de la source afin de faire en sorte que le signal de la source reste bien adaptable au démodulateur WBFM. 



Rajoutons quelques variables ( le copier/coller fonctionne ). Bien faire correspondre les ID à celles des blocs placés précédemment, à la majuscule près. Dans RTL_Source, nous avions la valeur freq qui correspond ici à notre variable. En changeant la valeur de cette variable, vous changerez toutes les valeurs freq de l'organigramme .. c'est un peu comme les variables dans de la programmation en C++ ...


Au final, après avoir fait les jonctions IN/OUT, vous devriez avoir un bel organigramme comme cela : 

Vérifiez bien, en haut de l'écran de ne pas avoir de croix rouge ( cela serait le fait d'une mauvaise variable ou d'un mauvais paramétrage ). Cliquez sur la petite fusée pour lancer l'exécution du graph. Vous devriez avoir une petite fenêtre qui s'affiche avec le volume et un curseur pour le régler et la radio qui se lancera.


Pour ceux qui aiment le travail tout fait, voici mes premiers essais qui fonctionnent bien : 
Libre à vous de modifier à votre guise, de tester, de faire évoluer ce petit flowgraph .. GnuRadio recèle de tellement de possibilités que pleins de petits projets germent en tête. Surtout qu'une fois votre flowgraph terminé, vous pouvez en faire un fichier python capable d'être lancé depuis une fenêtre terminal ... 


Amusez-vous bien !






1 commentaire:

  1. Merci pour ce tuto très bien expliqué !
    Vy 73 Jean-Yves HB9FOU

    RépondreSupprimer