realisations:rtl-sdr

📡 Radio logicielle

J'ai joué avec la radio logicielle, ou plus communément appelée Software Defined Radio à l'aide d'une clé USB à base de chipset RTL2832.

Ce dongle, permettant initialement de recevoir la TV TNT, peut être réglé sur différentes fréquences radios afin d'analyser et d'écouter le signal reçu. C'est le frontend SDR le moins cher du marché : 15 € environ.

Le dongle, de la famille rtl-sdr, est très populaire et plusieurs sites lui sont dédiés et notamment www.rtl-sdr.com où de nombreux projets sont décrits.

Dongle RTL2832 USB avec une antenne
Agrandir
Dongle RTL2832 USB avec une antenne

Le concept clé derrière la SDR est de numériser le plus tôt possible le signal issu de l'antenne. Dans un récepteur analogique, la démodulation du signal est effectuée afin de produire un signal audible sur un haut-parleur. Avec un récepteur SDR, un ampli est positionné juste à la sortie de l'antenne puis le signal est numérisé. Charge au logiciel d'effectuer la démodulation du signal à l'aide de transformées de Fourier par exemple.

Récepteur analogique vs SDR
Agrandir
Récepteur analogique vs SDR

Cette technique est utilisée depuis de nombreuses années notamment pour la téléphonie mobile depuis la norme GPRS (2G); lors du passage à la norme EDGE (2.5G), une simple mise à jour logicielle permettait de bénéficier des améliorations du service. La TNT repose également sur un principe similaire où la dé/modulation du signal met en œuvre des nombres complexes (rappel : $i^2= -1$).

Avec le logiciel libre Gnu Radio, il est possible de prototyper des récepteurs radio évolués en assemblant des briques logicielles déjà prêtes ou d'en créer des nouvelles. Exemples : récepteur DVB-T2, récepteur Galileo (GPS européen) ou simplement écouter les télécommandes de porte de garage =).

L'utilisation de ce type de clé USB pour faire de la SDR a été “découverte” par un développeur effectuant du reverse engineering du driver Windows pour faire fonctionner le module de réception DVB-T sous linux. Il s'est rendu compte qu'il pouvait le configurer pour recevoir le signal brut numérisé, c'est-à-dire sans démodulation, pour l'exploiter de manière logicielle (histoire complète).

Mon objectif est d'apprendre les concepts autour de la SDR et de décoder différentes fréquences : radio FM, balise de positionnement des avions de ligne, images des satellites météo…

Prompt
Première étape : installer les drivers sur Raspberry Pi en compilant les sources Osmocom puis faire quelques manipulations. Une fois prêt, une première écoute de la radio FM en ligne de commande est possible avec rtl_fm :music:.

Description complète par ici ↬
Analyseur de spectre
Ensuite, l'un des premiers joujoux avec lequel s'amuser est un analyseur de spectre : cet outil affiche la force du signal sur une plage de fréquences et son évolution dans le temps sous forme de “chute d'eau”. J'utilise principalement SDRPlusPlus sous macOS et Gqrx sous Linux, ce dernier permettant également de décoder les messages RDS des stations FM.

Suite →
ADS-B
Cette clé USB permet de recevoir aisément les avions de ligne ✈️ dotés d'un émetteur ADS-B transmettant leur position, vitesse, cap et altitude sur 1090 MHz pour les afficher sur une carte OpenStreetMap avec un historique des trajectoires. J'ai également fabriqué une antenne maison dont la portée atteint 110 km.

Projet complet ↬
Réception NOAA
J'ai expérimenté la réception d'images météo des satellites 🛰️ NOAA 18 et 19. Une antenne V-dipôle de 53 cm par brin, un Raspberry Pi installé dans le jardin et quelques scripts shell suffisent à transformer le signal radio en images colorisées (infrarouge, thermique, précipitations).

Suite →
ADS-B
Les clés USB SDR bon marché souffrent d'une dérive de fréquence. Voici 2 manières d'obtenir le facteur de correction PPM : avec rtl_test qui utilise un mécanisme interne à la clé, ou avec kal en se calant sur un émetteur externe stable. Ce facteur est ensuite injecté dans tous les programmes SDR.

Suite →

Bibliographie