Activité aéroportuaire, ce jeudi 16 avril 2020, entre 04h13 et 05h13 captée avec un stick RTL-SDR (NewGen/RTL2832SDR alu TCXO .5 ppm) et dump1090 de la Citadelle de Liège... De la Citadelle de Liège, on capte l'ADS-B jusque Nancy.
Affichage des articles dont le libellé est ads-b. Afficher tous les articles
Affichage des articles dont le libellé est ads-b. Afficher tous les articles
vendredi 17 avril 2020
samedi 27 avril 2019
ADS-B avec cantenna
Ayant trouvé un bidon d'huile d'olive de 10 litres, j'envisage d'en faire une 'cantenna' pour l'ADS-B... À l'image des 'antennes Ricoré' pour le WiFi.
Le bidon fait environ 15x24 cm² avec 30 cm de profondeur. L'ADS-B, à 1090 MHz, a une longueur d'onde d'environ 27.5 cm. Le bidon n'est pas très loin d'avoir une hauteur de lambda/2 et en mettant un bout de fil de cuivre de lambda/4 (~7cm) à lambda/4 du fond, ça devrait être bon. Aussitôt dit, aussitôt fait.
Je pars faire des tests dans un endroit relativement élevé, un terril au dessus de Liège. Et j'en registre les avions avec dump1090 sur un OrangePiZero alimenté par un powerbank. Trois fois pendant une demi-heure dans des directions différentes en comparant avec une antenne 'PCB' trouvée sur eBay pendant une autre demi-heure.
Le résultat est assez bon. La cantenna capte les avions beaucoup plus loin que l'antenne PCB (mais dans une direction privilégiée). J'ignore si c'est l'amplification du signal par l'antenne ou si c'est parce que la réception est moins dérangée par d'autres émissions proches venant d'autres directions. Il faudrait mesurer le nombre de messages par seconde pour voir s'il y a beaucoup de collisions. On se rapproche de l'horizon radar théorique (D_miles = 2.2 * sqrt(altitude_m)).
De Liège, je capte des avions au delà de Paris et presque jusque Londres.
lundi 28 avril 2014
ADS-B sur piles
Liège-Bastogne-Liège 2014, le jour idéal pour tester dump1090 sur un Rasberry Pi (avec touchscreen) sur piles sur les hauteurs de Liège... Le but est de capter les messages ADS-B envoyés par les hélicoptères de la courses. L'équipement est simple : un pack de 6 piles rechargeables NiMH (ALDI/Top Craft), un petit convertisseur DC-DC pour ramener la tension à 5 volts, un Raspberry Pi, son touchscreen Tontec (MZTX-PI-EXT) et une petite clé USB TNT équipé du chip Realtek RTL2832U permettant le RTL-SDR avec son antenne d'origine (ou une de ses sœurs.
Dump1090 fonctionne dès le départ sur le Raspberry Pi. Le problème était de rendre celui-ci portable pour aller capter les avions sur les hauteurs... Pour cela, deux aspects : l'alimentation et le contrôle. Pour le contrôle, l'idéal est un touchscreen. Il y en avait un pas cher mais il n'était pas sûr que cela fonctionne. Si l'affichage semblait ne poser aucun problème grâce à un article de ce blog , la partie 'touch' a nécessité quelques recherches et développements... Mais, donc, cela a fini par fonctionner. Pour l'alimentation, le pack de six piles et le convertisseur DC-DC offre la solution idéale pour peu que l'on se contente d'une autonomie de quelques heures; le RPi et le touchscreen consomment 0.5A sous 5 volts (sans le dongle TNT). Le convertisseur permet 2 A et les piles ont une capacité de 2.3 Ah.
Restait juste à développer une petite application graphique pour lancer l'acquisition, la stopper et éteindre le Pi... Le plus simple est d'écrire quelques lignes en Tcl/Tk faisant appel à des scripts shell.
Bien sûr, ce serait mieux d'avoir une interface montrant les avions, etc... Mais pour l'acquisition, c'est le plus facile. Avec une Raspbian, il suffit d'ajouter une ligne à /etc/xdg/lxsession/LXDE/autostart du genre '@wish /home/pi/menu.tcl'. Un script de quelques lignes :
Où l'on peut voir les coordonnées envoyées par les aéronefs : en abscisse, la longitude, en ordonnée, la latitude. Pour donner une idée, Maline est en 51/4.5, Cologne 54/7, Orléans 48/2 et Bâle 47.5/7.6. La captation était en 50.6/5.6 avec une bonne vue vers le sud (et moins bonne vers le nord où l'hôpital de la Citadelle masque la vue).
Si on trace la distance à l'aéronef (projeté au sol) calculée à partir des coordonnées géographiques contenues dans certains messages (grâce à la formule trouvée ici), cela donne le graphique suivant :
Les ruptures sont dues au fait qu'il s'agit d'un assemblage de plusieurs captations mais on voit clairement les avions s'approcher puis s'éloigner. En général, plus les traces sont proches, plus elles sont continues mais certaines traces étonnamment lointaines sont aussi visibles.
Si on s'intéresse à l'altitude des aéronefs, on obtient le graphique suivant :
On observe de nombreux vols à altitude constantes mais aussi des montées et des descentes. Le plus haut, à 44925 pieds est un jet privé, M-JANP, parti de Londres vers la Turquie, les plus bas sont les hélicoptères de la courses. À nouveau, il y a des coupures dues à l'assemblage.
Pour la petite histoire, les hélicoptères captés étaient OO-HCZ, OO-HCW et OO-HCP. Mais j'ai aussi capté OO-SEX, le Cessna des parachutistes de Spa; OO-URS et OO-VPD, un petit bi-moteur et près de 300 avions de lignes. Sur un peu plus d'une heure, entre 14h30 et 16h30, le système a capté 726 713 messages (! peut-être à vérifier, cela fait 200 messages à la seconde !).
Je peux isoler un profil de vol particulier. Par exemple, pour OO-SEX, cela donne :
Il semble larguer les parachutistes à 2800 pieds (et comme le terrain est à un peu plus de 400 mètres d'altitude, cela fait environ 500 mètres au dessus du sol (?)). Le cafouillage vers la fin provient probablement d'une perte de communication due à une altitude trop basse et on reprend avec la montée de la rotation suivante (?). En fait, les mesures ont été prises sans repères temporels (le dump1090 original ne donne pas le temps de la captation du message et le Raspberry Pi n'a pas d'horloge temps-réel à la base; ceci peut être réglé avec un module RTC i2c avec un composant DS1307 (howto (.pdf)) mais il n'était pas branché (et donc, pas lu...)).
Identifications captées : AAF515, AAR501, ABW715, ADH818, AEE601, AEE624, AEE625, AFL2455, AFL2458, AFL2463, AFR1053, AFR112, AFR1147, AFR1211, AFR128, AFR146F, AFR1535, AFR1607, AFR1623, AFR1645, AFR1822, AFR1844, AFR1851, AFR1889, AFR1953, AFR253, AFR389E, AFR508, AFR562, AFR936F, ASR342, AUF171, AUI128, AWE711, AZA88Z, AZA97U, BAF610, BAH7, BAW147, BAW2676, BAW277, BAW347, BAW35, BAW45T, BAW53ZG, BAW547, BAW563, BAW632, BAW64G, BAW679, BAW703, BAW905U, BAW910N, BAW952M, BCS723, BEL2GP, BEL3PR, BEL5HR, BEL5VC, BEL716, BEL7PC, BEL7TX, BER2860, BER527N, BER797Q, BMR16GB, BMR45JR, BMR46CN, BMS123, BOX413, BRU866, CFE41G, CFG8TD, CTN4456, CYP347, DAL245, DAL475, DKGSA, DLH25E, DLH2CH, DLH2F, DLH2MF, DLH2NL, DLH2RX, DLH37E, DLH53T, DLH66A, DLH7TP, DLH8WH, DLH96E, EIN358, EIN359, EIN44T, EIN55N, ETD021, ETH3717, EXS92WX, EZS13EY, EZS82FX, EZS93FY, EZY11JX, EZY1972, EZY1975, EZY2085, EZY2134, EZY263F, EZY31RU, EZY46MN, EZY49VU, EZY5116, EZY51KE, EZY57EV, EZY58UH, EZY62WU, EZY64KC, EZY65XL, EZY67LT, EZY74GK, EZY75HC, EZY83EB, EZY85JM, EZY8832, EZY88PX, EZY8909, FALCN01, FBR14DI, FGVLD, FHY7884, FPO191X, GBYNE, GMI1142, GWI55M, GWI65B, GWI73E, HKY91, HOP3575, HVN16, IBS3731, ICV518, IRL258V, ISF60EU, JAF12Y, JAF29V, JAF3YG, JAF83W, JAF9BJ, JEF11, KAY56, KLM13T, KLM1415, KLM1602, KLM1987, KLM19P, KLM67Z, KLM79K, LAN704, LCO1505, LGL4603, LGL742, LGL7WD, LGL95E, LNX83GP, MJANP, MON1376, MON486G, MON5409, MON812, MON908, MSR725, MSR784, MSX521, MTINK, N3BR, N900HG, NAX2497, NAX5181, NAX92Y, NJE6MA, OMA134, OOHCP, OOHCW, OOHCZ, OOSEX, OOURS, OOVPD, OYMMM, PAL720, PGT502, PGT521, PGT522, PHAML, PHEDM, PRI244, PRI2704, QTR004, QTR040, QTR194, RJA111, ROT383, ROT384, ROT392, RRR2305, RYR10DL, RYR10UB, RYR16NB, RYR18DR, RYR1939, RYR26KZ, RYR30XE, RYR36VT, RYR39RT, RYR4014, RYR40JB, RYR40MX, RYR44BZ, RYR46QZ, RYR54HG, RYR582, RYR70JU, RYR70NW, RYR70SN, RYR754, RYR755, RYR793, RYR87BT, RYR87RK, RYR88QC, RYR973, RYR98EG, SAS559, SNM572, SUS9152, SWR319, SWR31N, SWR324, SWR35T, SWR64, TAP561, TAP686, TAP757W, TAP787B, TCW7922, TCW814E, TCX1588, TCX1628, TCX2549, TCX3425, TFL523, THA931, THY1819, THY1939, THY1966, THY7LT, TOM053, TOM23C, TOM393, TOM3FC, TOM435, TOM4JG, TOM843, TRA1739, TRA347T, TRA512N, TRA6348, TRA653P, TUI6PC, TVS13J, TWI583, UAE205, UAL964, VIR652W, VJS617, VLG1265, VLG1876, VLG6206, VLG8355, VPBDB, VPBZL, VPCYY, VQBFN, VQBHO, WZZ3TF, WZZ7UG, WZZ959.
Dump1090 fonctionne dès le départ sur le Raspberry Pi. Le problème était de rendre celui-ci portable pour aller capter les avions sur les hauteurs... Pour cela, deux aspects : l'alimentation et le contrôle. Pour le contrôle, l'idéal est un touchscreen. Il y en avait un pas cher mais il n'était pas sûr que cela fonctionne. Si l'affichage semblait ne poser aucun problème grâce à un article de ce blog , la partie 'touch' a nécessité quelques recherches et développements... Mais, donc, cela a fini par fonctionner. Pour l'alimentation, le pack de six piles et le convertisseur DC-DC offre la solution idéale pour peu que l'on se contente d'une autonomie de quelques heures; le RPi et le touchscreen consomment 0.5A sous 5 volts (sans le dongle TNT). Le convertisseur permet 2 A et les piles ont une capacité de 2.3 Ah.
Restait juste à développer une petite application graphique pour lancer l'acquisition, la stopper et éteindre le Pi... Le plus simple est d'écrire quelques lignes en Tcl/Tk faisant appel à des scripts shell.
Bien sûr, ce serait mieux d'avoir une interface montrant les avions, etc... Mais pour l'acquisition, c'est le plus facile. Avec une Raspbian, il suffit d'ajouter une ligne à /etc/xdg/lxsession/LXDE/autostart du genre '@wish /home/pi/menu.tcl'. Un script de quelques lignes :
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" ${1+"$@"}
button .quit -text "Quit!" -command { exit }
button .rec -text "Record" -command { exec /home/pi/rec.sh & }
button .stop -text "Stop" -command { exec /home/pi/stop.sh & }
button .shutdown -text "Shutdown" -command { exec /home/pi/shutdown.sh & }
pack .rec .stop .quit .shutdown
Et le tour est joué. Les scripts contiennent des lignes comme : '/home/pi/bin/dump1090 > dump1090.`/usr/local/bin/now`' (now est 'date "+%g%m%d.%H%M%S"' et permet de suffixer le fichier avec le jour et l'heure); 'pkill dump1090' et 'sudo shutdown -h now'.
La captation d'environ une heure entre 14 et 16h30 donne le résultat suivant :Si on trace la distance à l'aéronef (projeté au sol) calculée à partir des coordonnées géographiques contenues dans certains messages (grâce à la formule trouvée ici), cela donne le graphique suivant :
Les ruptures sont dues au fait qu'il s'agit d'un assemblage de plusieurs captations mais on voit clairement les avions s'approcher puis s'éloigner. En général, plus les traces sont proches, plus elles sont continues mais certaines traces étonnamment lointaines sont aussi visibles.
Si on s'intéresse à l'altitude des aéronefs, on obtient le graphique suivant :
On observe de nombreux vols à altitude constantes mais aussi des montées et des descentes. Le plus haut, à 44925 pieds est un jet privé, M-JANP, parti de Londres vers la Turquie, les plus bas sont les hélicoptères de la courses. À nouveau, il y a des coupures dues à l'assemblage.
Pour la petite histoire, les hélicoptères captés étaient OO-HCZ, OO-HCW et OO-HCP. Mais j'ai aussi capté OO-SEX, le Cessna des parachutistes de Spa; OO-URS et OO-VPD, un petit bi-moteur et près de 300 avions de lignes. Sur un peu plus d'une heure, entre 14h30 et 16h30, le système a capté 726 713 messages (! peut-être à vérifier, cela fait 200 messages à la seconde !).
Je peux isoler un profil de vol particulier. Par exemple, pour OO-SEX, cela donne :
Il semble larguer les parachutistes à 2800 pieds (et comme le terrain est à un peu plus de 400 mètres d'altitude, cela fait environ 500 mètres au dessus du sol (?)). Le cafouillage vers la fin provient probablement d'une perte de communication due à une altitude trop basse et on reprend avec la montée de la rotation suivante (?). En fait, les mesures ont été prises sans repères temporels (le dump1090 original ne donne pas le temps de la captation du message et le Raspberry Pi n'a pas d'horloge temps-réel à la base; ceci peut être réglé avec un module RTC i2c avec un composant DS1307 (howto (.pdf)) mais il n'était pas branché (et donc, pas lu...)).
Identifications captées : AAF515, AAR501, ABW715, ADH818, AEE601, AEE624, AEE625, AFL2455, AFL2458, AFL2463, AFR1053, AFR112, AFR1147, AFR1211, AFR128, AFR146F, AFR1535, AFR1607, AFR1623, AFR1645, AFR1822, AFR1844, AFR1851, AFR1889, AFR1953, AFR253, AFR389E, AFR508, AFR562, AFR936F, ASR342, AUF171, AUI128, AWE711, AZA88Z, AZA97U, BAF610, BAH7, BAW147, BAW2676, BAW277, BAW347, BAW35, BAW45T, BAW53ZG, BAW547, BAW563, BAW632, BAW64G, BAW679, BAW703, BAW905U, BAW910N, BAW952M, BCS723, BEL2GP, BEL3PR, BEL5HR, BEL5VC, BEL716, BEL7PC, BEL7TX, BER2860, BER527N, BER797Q, BMR16GB, BMR45JR, BMR46CN, BMS123, BOX413, BRU866, CFE41G, CFG8TD, CTN4456, CYP347, DAL245, DAL475, DKGSA, DLH25E, DLH2CH, DLH2F, DLH2MF, DLH2NL, DLH2RX, DLH37E, DLH53T, DLH66A, DLH7TP, DLH8WH, DLH96E, EIN358, EIN359, EIN44T, EIN55N, ETD021, ETH3717, EXS92WX, EZS13EY, EZS82FX, EZS93FY, EZY11JX, EZY1972, EZY1975, EZY2085, EZY2134, EZY263F, EZY31RU, EZY46MN, EZY49VU, EZY5116, EZY51KE, EZY57EV, EZY58UH, EZY62WU, EZY64KC, EZY65XL, EZY67LT, EZY74GK, EZY75HC, EZY83EB, EZY85JM, EZY8832, EZY88PX, EZY8909, FALCN01, FBR14DI, FGVLD, FHY7884, FPO191X, GBYNE, GMI1142, GWI55M, GWI65B, GWI73E, HKY91, HOP3575, HVN16, IBS3731, ICV518, IRL258V, ISF60EU, JAF12Y, JAF29V, JAF3YG, JAF83W, JAF9BJ, JEF11, KAY56, KLM13T, KLM1415, KLM1602, KLM1987, KLM19P, KLM67Z, KLM79K, LAN704, LCO1505, LGL4603, LGL742, LGL7WD, LGL95E, LNX83GP, MJANP, MON1376, MON486G, MON5409, MON812, MON908, MSR725, MSR784, MSX521, MTINK, N3BR, N900HG, NAX2497, NAX5181, NAX92Y, NJE6MA, OMA134, OOHCP, OOHCW, OOHCZ, OOSEX, OOURS, OOVPD, OYMMM, PAL720, PGT502, PGT521, PGT522, PHAML, PHEDM, PRI244, PRI2704, QTR004, QTR040, QTR194, RJA111, ROT383, ROT384, ROT392, RRR2305, RYR10DL, RYR10UB, RYR16NB, RYR18DR, RYR1939, RYR26KZ, RYR30XE, RYR36VT, RYR39RT, RYR4014, RYR40JB, RYR40MX, RYR44BZ, RYR46QZ, RYR54HG, RYR582, RYR70JU, RYR70NW, RYR70SN, RYR754, RYR755, RYR793, RYR87BT, RYR87RK, RYR88QC, RYR973, RYR98EG, SAS559, SNM572, SUS9152, SWR319, SWR31N, SWR324, SWR35T, SWR64, TAP561, TAP686, TAP757W, TAP787B, TCW7922, TCW814E, TCX1588, TCX1628, TCX2549, TCX3425, TFL523, THA931, THY1819, THY1939, THY1966, THY7LT, TOM053, TOM23C, TOM393, TOM3FC, TOM435, TOM4JG, TOM843, TRA1739, TRA347T, TRA512N, TRA6348, TRA653P, TUI6PC, TVS13J, TWI583, UAE205, UAL964, VIR652W, VJS617, VLG1265, VLG1876, VLG6206, VLG8355, VPBDB, VPBZL, VPCYY, VQBFN, VQBHO, WZZ3TF, WZZ7UG, WZZ959.
Voir aussi
Libellés :
ads-b,
dump1090,
rapsberry pi,
rtl-sdr
Pays/territoire :
Liège, Belgique
Inscription à :
Articles (Atom)










