Déterminer l'angle d'arrivée d'une onde radio : utilisation de RTL-SDR
Ce système permet de déterminer l'angle d'arrivée d'une onde radio. Il fonctionne en mesurant les différences de phase entre trois points de mesures. Les mesures sont opérées avec des RTL-SDR modifiés. Le traitement est réalisé in situ avec un orange PI ZERO 3.
Bertrand Selva
11/26/20247 min read


Il y a quelques semaines j’ai écrit un article sur la détection de l’angle d’arrivée d’une onde sonore : https://selvasystems.net/detection-sonore-un-systeme-embarque-pour-localiser-lorigine-dun-bruit.
Ce système est équipé de quatre micros et fonctionne en mesurant les trois différences de temps de vol des ondes sonore. On identifie au travers d’une fonction d’auto-corrélation les trois différences de temps de vol. Cette information est ensuite utilisée pour déterminer l’angle d’arrivée.
J’ai eu l’envie de faire pareil pour des ondes radios. Voici une vidéo de démonstration du dispositif en fonctionnement :

Principe de la mesure : mesure des différences de phase
Il y a quand même plusieurs différences notables sur la manière dont la détermination de l’angle d’arrivé est effectuée pour les ondes radios. Premièrement, je n’utilise pas la différence de temps de vol entre deux points de mesures, j’utilise la différence de phase. Pourquoi ? Car une onde sonore, c’est très lent (340 m/s). Un onde radio c’est 3e8m/s. Un million de fois plus rapide. Identifier une différence de temps de vol dans ces conditions conduit à mesurer des écarts temporels un million de fois plus petit, de l'ordre de la ns. Il est possible de le faire avec une électronique adaptée. C’est par exemple ce type de mesures qui est effectué dans les géo-radars : on mesure le temps vol de l'onde radio entre l'obstacle et l'antenne pour une marche d'onde de quelques cm. Mais c’est impossible dans mon contexte expérimental.
Des RTL-SDR pour opérer la mesure
J’utilise en effet des RTL-SDR qui sont des petits dongles USB pour la TV numérique terrestre. Ces SDR numérisent les signaux RF pour qu’ils puissent être exploités par un ordinateur.
Il existe de nombreuses librairies pour les détourner de leur usage premier : https://github.com/osmocom/rtl-sdr (Les applications possibles sont légions : analyseur de spectre, packet radio, etc).
La fréquence d’acquisition du convertisseur analogique numérique qui les équipent (le fameux RTL2832U) est de 2.4 Mhz. On pourrait alors se demander comment il est possible dans ces conditions d’utiliser ces dongles USB pour recevoir la télé ou la radio, qui utilisent des ondes UHF, de plusieurs centaines de MHz. En fait dans les SDR on mélange le signal reçu de fréquence f avec un autre signal dont la fréquence est maitrisée, de fréquence f2 et généré localement par un tuner (dans les RTL-SDR, autant le CAN est toujours le même, c'est le RTL2832U, autant il y a plusieurs tuners utilisés plus ou moins performants. Il faut faire attention au moment de l'achat. Je propose un "guide" avec les différents modèles ici : https://selvasystems.net/pourquoi-les-sdr-rtl-sont-si-cools).
C’est la fréquence intermédiaire (FI) qui entre dans le convertisseur analogique-numérique (CAN), résultant du mélange entre le signal reçu f et du signal de référence généré localement (oscillateur local générant le signal à la fréquence f2).
Ce mélange produit deux fréquences principales :
f−f2 (différence entre les fréquences du signal reçu et du signal de l'OL),
f+f2 (somme des fréquences).
Le SDR filtre numériquement ensuite pour ne garder que l'une de ces fréquences (typiquement la fréquence f−f2) avant de l'envoyer au CAN. On choisi f2 de manière à ramener la fréquence intermédiaire dans un domaine accessible à la mesure pour le RTL2832U. Si on considère le théorème de Shannon, il faut que f−f2 soit au maximum égal à la fréquence d’échantillonnage du CAN divisée par 2, soit 2.4 Mhz/2. En réalité, il faut plutôt un facteur 5 à 10 qu’un facteur 2 pour permettre une identification correcte du signal intermédiaire. La bande passante exploitable du signal reçu est directement relié à la fréquence d’échantillonnage du RTL2832U .
Qu’en est-il de la préservation de la phase au cours de cette acquisition ? Est-ce que la phase est préservée par le sous-échantillonnage de la SDR ? Pour une fréquence donnée, oui. Vous pouvez observez les résultats pour différentes phases de ré-étalonnage sur la vidéo ci-dessus.
Limitations et solutions pour les dépasser
Par contre la mesure de la différence de phase dérive au cours du temps. Et beaucoup. C'est un vrai problème pour opérer les mesures de différence de phase pour déterminer l'angle d'arrivé... (Jean-Michel Friedt de l'Univ. de Besancon a fait plusieurs papiers sur le RTL-SDR pour fabriquer un radar passif et observe le même comportement).
Partage des horloges
Plusieurs astuces ont été utilisés pour pallier ce problème. La première chose que j’ai faite est d’enlever sur deux des dongles les TCXO et d’enchâsser les trois dongles dans une structure imprimée 3D afin de pouvoir relier les deux dongles sans TCXO au TCXO du dongle central. Cela permet de partager la même horloge pour les trois RTL-SDRs. C'est une manière d'avoir trois voies synchrones. En dépit de cette astuce, la dérive associée à la mesure de la différence de phase est toujours là.


Les trois RTL SDR tenus dans une structure imprimée en PLA. Le TCXO a été enlevé sur les RTL-SDRs de gauche et de droite. Le TCXO du RTL SDR central est relié par des capacité de 20 pF aux circuits des RTL-SDRs de gauche et de droite. Les masses sont également mis en commun.
Ré-étalonnage régulier
L’autre astuce est de consacrer un pourcent du temps de fonctionnement à ré-étalonner le système. Comment cela est possible ? En fait mon dispositif embarque un générateur RF (un ADF435X piloté par le port SPI de l'orange PI ZERO 3). La sortie de ce générateur « passe » par des diviseurs de puissance RF, au nombre de trois, pour générer quatre sorties synchronisées, avec un signal de même phase, avec une impédance de 50 ohm préservée pour chacune des sorties (Une de ces sorties est non utilisée et est terminée par un bouchon 50 ohm puisque je ne dispose que de trois voies dans mon dispositif mais elle m'a permis de caractériser le signal avec un tiny SA : https://www.tinysa.org/wiki/).


Est visible sur cette photo les trois diviseurs de puissance RF permettant de préserver l’impédance du signal RF à 50 ohm. On voit les trois câbles coaxiaux qui entre dans les switchs RF. Et les trois cables coaxiaux qui relient les les switchs RF aux trois antennes de mesure du signal entrant.
Durant les phases d’étalonnage, le générateur est allumé et génère un signal à la fréquence à laquelle je veux écouter (et déterminer l’angle d’arrivée). Des switchs RF permettent de basculer l’entrée des RTL-SDRs : Soit les antennes pour l’écoute du signal à étudier, soit le signal d’étalonnage.


Ces cycles réguliers de ré-étalonnage permettent de s’affranchir de la dérive de la mesure de différence de phase. Par contre c’est au prix d’une augmentation de la complexité du dispositif : il faut un générateur RF, des diviseurs de puissance RF, trois switchs RF en plus du système réservé à l’écoute : les trois RTL-SDRs synchronisés et les trois antennes. Vous pouvez obtenir des détails sur la constitution du dispositif et le traitement du signal ici : https://selvasystems.net/innovations.
Environnement hardware : un orange PI zero 3
Ce n'est pas un microcontrôleur que j’ai utilisé mais un orange PI zero 3, la version low cost des raspberry PI car les dongles USB nécessitent des ports USB pour fonctionner. L’orange PI zero 3 en dispose justement de trois (un pour chaque voie). Par ailleurs le traitement du signal nécessite des calcul de FFT pour extraire la différence de phase entre les deux signaux : concrètement on relève la phase correspond à l'amplitude maximum pour chacun des signaux avant d'en calculer la différence. Et orange PI zero 3 offre un environnement beaucoup plus confortable pour effectuer ces calculs : pas de limitation de mémoire (4 Go de mémoire !), un processeur beaucoup plus rapide que des microcontrôleurs. Ces performances conditionnent directement la fréquence de rafraîchissement pour la détermination de l’angle d’arrivée.
Conclusion
Ça marche au prix d’une complexité accrue du dispositif pour gérer les étalonnages. Le système est quand même très sensible aux bruits et nécessiterait un PCB avec la partie RF intégrée pour limiter le bruit (avec notamment les diviseurs de puissances RF, le générateur RF, les switchs, directement placés sur le PCB). Je ne le ferai pas car les coûts de développement seraient disproportionnés pour la réalisation d’un démonstrateur. Par contre les RTL-SDRs sont supers : c'est un outil puissant, peu cher, avec des librairies très complètes permettant de faire beaucoup de choses, ce qui m'a donné envie de continuer à les utiliser. J’avais vu il y a quelques mois des articles sur l’utilisation de ces dongles pour la réalisation d’un radar passif (http://jmfriedt.free.fr/slides_ISTA2021_1.pdf). Vivant non loin d'un émetteur TV, un jour j’essaierai. Mais en utilisant un traitement in situ (comme ici) avec un orange PI ZERO 3 plutôt qu'un traitement du signal tournant sur un PC avec Octave.


Innovation
Systèmes embarqués, intelligence artificielle, deep learning, solutions sur mesure, efficacité, innovation, sécurité, fiabilité.
Contact
contact@selvasystems.net
SIREN 939271441
© 2025. All rights reserved.
© 2025. Tous droits réservés.