Changement Fréquence du SDR Pluto

Dans cet article nous allons aborder le problème du changement de fréquence ou du gain du SDR Adalm-Pluto en temps réel dans une application GNU Radio. En effet, le Pluto est perturbé pendant une petite seconde à chaque changement d’un de ses paramètres. Dans le waterfall ci-dessous, on effectue une mise à jour de la fréquence de l’oscillateur local toute les 5s. Cela se traduit en sortie du Pluto par de belles barres horizontales.

C’est un phénomène que l’on observe avec le Pluto mais pas avec un RTL-SDR ou un HackRF One.

Chaine de réception

Le bloc PlutoSDR Source à chaque changement de fréquence ferait d’après mes recherches un reset de l’ensemble des paramètres qui se traduit par une perturbation du traitement en cours très gênante.

La solution réside en l’utilisation des blocs ‘IIO Attribute Sink’ et ‘IIO Attribute Updater’ qui permettent de ne toucher que le paramètre choisi sans perturber le traitement en cours.

La programmation est délicate car il faut trouver:
– le device: ad9361-phy
– le sens: input ou output
– le channel: alvoltage0 ou voltage0
– l’attribut: frequency ou harwaregain
dans une documentation en ligne très réduite.

En se connectant au pluto il est possible d’extraire des informations.
En mode terminal entrez: iio_info -u ip:192.168.2.1

iio:device1: ad9361-phy
                9 channels found:
                        altvoltage0: RX_LO (output)
                        8 channel-specific attributes found:
                                attr  0: external value: 0
                                attr  1: fastlock_load value: 0
                                ......
                                attr  5: frequency value: 144999998
                                attr  6: frequency_available value: [70000000 1 6000000000]
                                attr  7: powerdown value: 0
                        altvoltage1: TX_LO (output)
                        8 channel-specific attributes found:
                                attr  0: external value: 0
                                ......
                                attr  5: frequency value: 144941178
                                attr  6: frequency_available value: [46875001 1 6000000000]
                               .....
                        voltage0:  (output)
                        10 channel-specific attributes found:
                                attr  0: filter_fir_en value: 1
                                attr  1: hardwaregain value: 0.000000 dB
                                attr  2: hardwaregain_available value: [-89.750000 0.250000 0.000000]
                                .....
                        voltage0:  (input)
                        15 channel-specific attributes found:
                                attr  0: bb_dc_offset_tracking_en value: 1
                                ......
                                attr  4: hardwaregain value: 36.000000 dB
                                attr  5: hardwaregain_available value: [-1 1 73]

Attention pour le gain les valeurs s’étalent entre 0 et 72 . Au-delà le système plante.

Pour vous faciliter la programmation j’ai regroupé ces blocs dans une petite application GNU Radio Companion qui utilise des curseurs pour modifier la fréquence de réception et le gain de l’Adalm-Pluto.
pluto_freq_gain.zip

Chaine d’émission

On retrouve les mêmes difficultés sur la chaine d’émission. Il faut noter que lors d’un changement de paramètre dans la chaine d’émission, si l’on agit directement sur le bloc PlutoSDR Sink, la chaine de réception est perturbée.

Rafraichissement fréquence et atténuation.

Dans l’exemple proposé pour résoudre cette difficulté, la fréquence d’échantillonnage est à 1.2 MHz. Il faut en pratique utiliser la même que dans la chaine de réception si elle fonctionne. Nous modifions:

  • la fréquence
    • channel: altvoltage1
    • output
    • attribut: frequency
  • l’atténuation
    • channel: voltage 0
    • output
    • harwaregain

Attention pour l’atténuation/ harwaregain les valeurs sont négatives entre 0 et -89 par pas de 0.25. Contrairement au bloc PlutoSDR sink ou l’on parle d’atténuation en mettant des valeurs positives.

Autre point délicat, il ne faut pas un intervalle de rafraîchissement de l’IIO Attribute Update inférieur à 1000 ms. Cela ne passe pas.

De même pour la chaine d’émission, j’ai regroupé ces blocs dans une petite application GNU Radio Companion qui utilise des curseurs pour modifier la fréquence d’émission et l’attenuation de l’Adalm-Pluto.
pluto_TX_freq_gain_update.zip

Bilan

La modification proposée répond au problème à la seule condition d’être bien centré en fréquence. Il n’y a plus d’impact visuel sur un waterfall comme vu avec Remote SDR. Néanmoins, sur la voie audio en NBFM à chaque rafraîchissement de la valeur de la fréquence du SDR, toutes les secondes, un petit click se fait entendre si l’on est à plus de 100Hz à côté de la porteuse. Le Pluto n’étant pas précis sur sa fréquence de travail, il faut compenser l’erreur en fréquence, avec la correction manuelle dans Remote SDR. Une fois bien centré, le click disparait.

Articles sur Adalm-Pluto

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...