mardi 23 février 2021

Attirail du geek, partie 10: la framboise volante

Attirail du geek, partie 10: la framboise volante  

Encore une combinaison de mes hobbies 'geek':

  • informatique (beaucoup)
  • électronique (un peu)
  • aviation (un peu)

Le but: suivre les avions (position, vitesse) via télémétrie et radio pour moins de 100 EUR et sans installer un radar à la maison!

Comment: via un micro-computer de 50 EUR, une radio programmable (en anglais "Software Defined Radio" -- SDR), une petite antenne (idéalement de 68,5 mm de long), et des logiciels en open source. 

Les avions ont pour la plupart un transpondeur en mode-S qui transmet sur 1090 MHz leur code transpondeur sur 24 bits (4 chiffres de 0 à 7 donc 4 chiffres exprimés sur 3 bits) et leur altitude que tout le monde peut recevoir via une bonne antenne en vue directe (donc sans obstacles entre l'antenne et l'avion). Les avions commerciaux (compagnies aériennes notamment) ont en plus un système ADS-B out qui transmet sur la même fréquence leurs positions. Rien n'est chiffré, donc, tout le monde peut décoder les messages.

Le matériel

Un simple micro-computer de type Raspberry Pi 3 B+: format carte de crédit, avec 1 GByte de mémoire vive, sans clavier ni écran mais avec Wi-Fi, un port Ethernet, 4 portes USB et une porte HDMI. Le tout alimenté par micro-USB comme tous les appareils nomades. Le mémoire de masse est une micro-carte flash; ce qui permet d'initialiser facilement le système de fichier via Linux, Mac OS, ou Windows.

Ajoutons-y un petit boîtier en plastique et un chargeur micro-USB et cela devient un vrai ordi!

Rester à ajouter une clé USB bleue pour la radio SDR (40 EUR) et connecter la petite antenne à la clé USB et le tour est joué au niveau matériel.




Notes sur l'antenne

Dans un premier temps, 1090 MHz cela correspond à une longueur d'onde dans l'air de 275 mm (il faut diviser la vitesse


de la lumière par la fréquence), ça je comprends. Puis, c'est la partie qui m'a toujours un peu échappée lors de mes études d'ingénieurs... qui dit que l'antenne doit exactement faire le quart de la longueur d'onde, dans ce cas-ci 68,5 mm hélas celle que j'ai reçue fait 80 mm donc le rendement ne sera pas exceptionnel... en plus, je l'ai placée collée à l'intérieur sur une vitre et pas sur un mat extérieur. Quelques jours après, je place cette antenne à l'extérieur (de l'autre côté de la vitre) et je suis ébahi: la portée passe de 40 nm (+/- 70 km) à plus de 150 nm (+/- 270 km) et donc le nombre d'avions reçus passe de 10 en pointe à plus de 20 au minimum !

Le logiciel

Tout ordinateur doit avoir son système opératoire (OS) ainsi que ses applications. Dans mon cas:

  • Système opératoire: Raspberry Pi OS, une variante de Linux Debian pour le processeur ARM qui équipe le micro-ordinateur
  • Applications: le pilote de la radio et diverses applications analysant la sortie de la radio pour envoyer à plusieurs sites d'agrégation ('feeder' en anglais) de ces données (car nous sommes des milliers à faire ce 'truc') par exemple pour https://flightaware.com

Pour l'OS, il suffit de télécharger une image brute depuis le site de Raspberry, de la copier sur la micro-flash, et d'insérer la micro-flash dans le Raspberry Pi. L'absence d'écran et de clavier (sauf si connexion par les ports USB et HDMI évidemment) complique un peu les choses (le mot de passe par défaut est 'raspberry' que j'ai évidemment immédiatement changé!).

Le pilote de la radio

Le pilote de la radio, 'dump1090', se connecte au port USB de la radio, effectue le décodage des messages et les offre à plusieurs clients/consommateurs via une connexion TCP/IP. Ce qui est assez élégant car via une seule radio, il est possible d'envoyer les données sur plusieurs applications locales ou distantes via la porte TCP 30005.

En fait, il y a plusieurs version de ce pilote qui ont hérité l'une de l'autre en ajoutant des fonctionnalités:
  1. antirez (version de départ plus maintenue en dehors d'un patch mineur en février 2020)
  2. MalcomRobb sur base d'antirez (aucune mise à jour depuis octobre 2014)
  3. mutability sur base de MalcomRobb (aucune mise à jour depuis 2019)
  4. flightaware sur base de mutability (encore mis à jour en  octobre 2020, avec une belle interface web et surtout le support d'IPv6)

Comme il ne peut y avoir qu'un seul pilote pour la radio, autant installer la dernière version via la commande Linux 'apt-get install dump1090-fa' (après avoir mis à jour les sources apt voir le point 2 de ce lien). Ce qui est fait rapidement et inutile de redémarrer évidemment même si la doc dit le contraire!

Cela fonctionne immédiatement et une connexion sur la porte TCP 8080 genre http://[2001:db8::1]:8080/ (remplacer par l'adresse IPv6 voire IPv4 du Raspberry) et donne immédiatement une vue très sympa des avions dans le coin! Le coin dans le cas de ma simple antenne est tout de même plus de 100 km !

Les autres applications

Par la suite, il est possible d'installer d'autres applications qui vont partager les données sur les quelques avions que le système reçoit avec des sites d'agrégation de ces milliers de systèmes. En général, il y a une incentive qui donne un contrat 'gold' ou 'business' gratuitement sur ces sites; donc, parfois un grand historique ou un accès à une interface de programmation (API). Pour avoir ces bénéfices, il faut évidemment créer sur chaque site un compte et lier son Raspberry à ce compte (soit via l'adresse IP soit via un code à copier/coller).

Voici la liste des applications que j'ai installées et qui fonctionnent donc toutes en même temps (charge CPU très très légère un Raspberry PI Zero devrait suffire):

Tout cela est bien sympa, mais pour l'instant ne fonctionne que pour ADS-B donc pas pour les petits avions belges dont ceux de mon club...

Explications demain ou un autre jour ;-)