Positionner les avions de ligne

10/2017 : avec un dongle rtl-sdr, la réception des données transmises par les transpondeurs des avions de ligne est à la porte de tous. Ceux ci émettent en permanence leurs informations de vol tels que position, vitesse, cap, altitude sur la fréquence 1090 MHz.

C'est par ce biais que les sites tels que flightradar24 positionnent les avions en temsp réel sur une carte interactive.

Plusieurs articles décrivent différents modes d'installation comme sur sur le site de framboise314 ou ici.

Raspberry Pi + rtl-sdr + antenne

La norme ADS-B impose d'ici 2020 aux avions de transmettre leurs données de vols à l'aide des appareils de mesure à bord tel que GPS et baromètre afin que les bases au sol puissent les situer très précisement. Ce dispositif améliore le positionnement par rapport aux radars qui ne permettent qu'un positionnement sur un plan 2D avec une latence liée à la rotation de l'antenne.

Ainsi, en recevant ces transmissions radios, les contrôleurs aérien et les avions partagent la même vision de l'espace aérien. Cela permettra à terme de diminuer la distance espaçant les avions autour des aéroports pour avoir une densité plus importante dans le ciel et de diminuer le temps d'attente pour les atterissages ou décollage. A la clé, des économies de carburant. Mais cela n'est possible que si tous les avions sont équipés de transmetteurs ADS-B. La norme impose qu'en 2020 tous les avions en soient équipés. Aujourd'hui, 80% des avions européens en seraient équipés contre 60% aux états unis, pays d'origine de la norme…

ADS-B est l'acronyme :

  • Automatic : toujours en fonctionnement
  • Dependent : utilise le GPS
  • Surveillance : position, altitude, cap, vitesse, id…
  • Broadcast : émission multi-directionnelle

Mais pourquoi faire cela ? Parcequ'on peut :)

J'ai testé plusieurs logiciels et ma préférence va pour adsb-receiver. Il offre à la fois une carte avec la position des avions reçu dessus mais également des métriques sur la qualité de réception au cours du temps, le nombre d'avions reçus ainsi que la distance max etc… De plus, il enregistre dans une base hsqldb tous les avions vus afin de revoir leurs trajectoires à posteriori.

dump1090-mutability décode les paquets reçus via la clé USB TNT. Il affiche en console les avions capturés sous forme de tableau les métriques transmises : n° de vol, vitesse, altitude, cap, position GPS. Ce dernier se met à jour au grés des passages des aéronefs.

dump1090-mutability

De nombreuses options sont disponibles et notamment un mode réseau où il expose sur un port les informations décodées. Le front de adsb-receiver utilise cette fonctionnalité.

Installation des dépendances nécessaires :

sudo apt-get install git cmake build-essential

Récupération des sources :

git clone https://github.com/jprochazka/adsb-receiver.git

L'installation s'effectue par l'intermediaire d'un script qui déroule toute les étapes d'installation/configuration des autres composants :

cd adsb-receiver/ && sudo ./install.sh

Une fois terminé, ouvrir un naviguateur et aller à l'adresse http://<ip du pi>, une carte s'affiche avec les premiers avions reçus !

Par défaut, 3 cercles concentriques sont dessinés autour du point central de réception à des distances de 100, 150 et 200 km. Pour changer ces distances, editer le fichier /usr/share/dump1090-mutability/html/config.js en changeant les valeurs du tableau SiteCirclesDistances.

/usr/share/dump1090-mutability/html/config.js
SiteCirclesDistances = new Array(50,100,150);

La page principale de l'application affiche une carte OpenStreetMap avec la position des avions. La liste des avions captés est affichée sur la droite de l'écran sous forme de tableau avec notamment l'ICAO (équivalent de l'adresse mac des cartes réseau), le numéro de vol, altitude, vitesses etc…

Carte avec les avions

De nombreuses métriques sont collectées dans une base RRD telles que :

  • Nombre de messages reçus par secondes
  • Nombre d'avions détectés
  • Force du signal
  • Distance maximale des avions détectés
  • CPU / Ram / utilisation de l'eth0

Différentes échelles de temps de visualisation sont disponibles : heure / 6 heures / jour / semaine / mois / année. Très utile pour faire des comparaisons.

Métriques collectées

Les trajectoires des avions sont également stockées dans une base hsqldb pour les retrouver par numéro de vol :

Affichage des trajectoires enregistrées

L'antenne TNT fournit avec la clé USB mesure 12 cm environ et offre une portée de 70 km environ. Pour quelques euros, il est possible de fabriquer une antenne dont la portée de réception passe à 150 km (!!).

La qualité d'une antenne dépend de sa taille et de sa forme, La littérature autour des antennes est très riche : la forme, la taille influent sur la qualité de réception. La dimension d'une antenne peut se calculer en fonction de la longueur d'onde notée $\lambda$.

Cette dernière s'exprime très simplement : $\lambda=\frac {c}{f}$

  • $c$ est la vitesse de la lumière dans le vide;
  • $f$ est la fréquence de l'onde.

Ici, $f = 1 090 000\,kHz$ et $c = 299 792\,km/s$ ce qui donne $\lambda = 0,275\,m$. La taille doit être un multiple de cette valeur.

J'ai choisi de fabriquer une variante de l'antenne "doublet demi onde" :

  • l'alimentation de l'antenne s'effectue par le milieu
  • la longueur totale est $\lambda / 2$, chaque brin mesure donc la moitiée, soit 68 mm
  • 4 fils composent le plan de sol, ils sont répartis suivant les diagonales d'un carré et sont inclinés de 45°.

J'ai utilisé du fil de cuivres dont la section est de de 2.5 mm2 (fils électriques des prises de courant d'une maison) soudés sur un support de cable d'antenne.

Plan de l'antenne
Antenne ADSB doublet demi onde

J'ai ensuite soudé un fil d'antenne avec un connecteur MCX pour relier l'antenne à la clé USB de réception radio. Le cable d'antenne est le plus court possible pour réduire les interférences.

Raspberry Pi avec son antenne

J'ai mesuré l'influence de la taille de l'antenne sur la qualité de réception en comparant 3 antennes :

  • antenne TNT fournit avec la clé USB; elle mesure 12 cm
  • même antenne TNT que précédement coupée à 6,8 cm
  • antenne doublet demi onde décrite juste au dessus

Chaque antenne est branchée une journée, la mesure totale s'étale donc sur 3 jours : la journée du 3 novembre la grande antenne est utilisée, le 4, la petite antenne, le 5, l'antenne doublet demi onde.

Ci dessous, le graphique montre le nombre d'avions détéctés : j'ai été surpris de constaté qu'avec une antenne dont les dimensions ne sont pas en adéquation avec la longueur d'onde, la réception est mauvaise par rapport à la plus petite. Avec l'antenne faite maison, la réception est sensiblement meilleure

Nombre d'avions détéctés

Le constat précédent se retrouve également sur la portée maximale : 65 km avec la grande, 80 km avec la petite, 110 km avec la doublet demi onde.

Portée maximale

Au final l'antenne quadripod est la meilleure, cela me conforte dans l'effort de fabrication ! 8-)

Les données sont transmisent sous forme de paquet de 112 octets dont 56 de payload à une fréquence de 1 Hz environ.

Voici un exemple de contenu : 8 | D | 4840D6 | 202CC371C32CE0 | 576098

  1. 8D : Type du message : plusieurs natures sont définies, ici, il s'agit d'un message d’identification
  2. 4840D6 : ICAO : identifiant unique de l'avion, équivalent de l'adresse mac des cartes réseaux
  3. 202CC371C32CE0 : données utiles : vol commercial = KLM1023_
  4. 576098 : somme de contrôle, l'algorithme utilisé date de de 1984

Voici la documentation complète.

  • realisations/rtl-sdr/adsb.txt
  • Dernière modification: 2024/02/13 22:06
  • par 192.168.0.50