di Andrew Back
Questo progetto utilizza un Raspberry Pi con un hardware SDR (Software-Defined Radio) a bassissimo costo per ricevere i dati di tracciamento dai transponder in modalità S degli aerei anche a centinaia di km di distanza, con l’aggiunta di un comodo display TFT da 3,5″ per fornire un utile riepilogo delle attività nello spazio aereo.
Hardware
Il minuscolo ricevitore SDR basato su RTL2832U (124-5461) è stato progettato e originariamente commercializzato per la ricezione DVB-T. Tuttavia, grazie agli sforzi di un hacker del kernel Linux circa cinque anni fa, è ora possibile ottenere campioni grezzi dal dispositivo invece del solo segnale DVB demodulato. Ciò significa che i sistemi wireless possono essere implementati nel software, per offrire una flessibilità immensa. Il chip RTL2832U è generalmente accoppiato con un sintonizzatore IC e, nel caso di un ricevitore USB di Adafruit, si tratta di un R820T che permette la ricezione da 24 Ghz a 1850 Ghz. Va notato che la risoluzione ADC a 8 bit e un effettivo numero di bit (ENOB) approssimativamente a 7 bit, l’hardware RTL-SDR non è un candidato ideale in termini di gamma dinamica rispetto alle più costose piattaforme SDR, ma per molti impieghi è più che sufficiente e offre un rapporto qualità-prezzo eccellente.
Il software utilizzato per ricevere e decodificare i segnali in modalità S fornisce un’interfaccia Web basata su Google Maps e un display locale che non è strettamente necessario. Tuttavia, l’aggiunta di un display PiTFT da 3,5″ Adafruit (124-5487) fornisce un comodo riepilogo a cui dare un’occhiata delle attività nello spazio aereo. Inoltre, la combinazione di Raspberry Pi, ricevitore SDR e display TFT può essere configurata alternativamente come scanner indipendente con visualizzazione dello spettro. Il display TFT si inserisce semplicemente sul connettore P1 del Pi, mentre il ricevitore SDR viene inserito in una delle porte USB.
Raspbian
Esistono due opzioni per installare Raspbian: il download di un’immagine da Adafruit con il supporto kernel per il display TFT già configurato o trascrivere una nuova immagine Raspbian e quindi configurarla come necessario. Ho scelto quest’ultima opzione, perché in genere preferisco utilizzare l’immagine di installazione di un sistema operativo ufficiale e quindi personalizzarla in base alle necessità. Tuttavia, la prima opzione prevede meno passaggi ed è meno soggetta agli errori. Adafruit fornisce le istruzioni per entrambi i metodi.
Dopo aver trascritto la scheda microSD con “dd”, ho modificato il nome host predefinito da “raspberrypi” a “planepi”, per renderlo più facile da individuare sulla rete, modificando il file:
etc/hostname
etc/hosts
Da notare la barra trasversale mancante all’inizio, poiché non vogliamo modificare i file in /etc sul computer utilizzato per scrivere sulla scheda SD. Quindi, sarà necessario aggiungere il percorso nel quale il computer ha montato il file system root sulla scheda SD. Se si preferisce configurare il sistema tramite una tastiera, un monitor e un mouse collegati, non sarà necessario abilitare SSH. Tuttavia, se come me si preferisce eseguire la configurazione tramite una connessione SSH:
$ sudo touch boot/ssh
Sostituendo “boot” con il percorso completo di avvio del file system sulla scheda SD.
Se il Pi sarà collegato a una rete cablata, è possibile rimuovere la scheda microSD, inserirla nel Pi e avviare. Tuttavia, se si utilizza una connessione di rete wireless, è necessario modificare:
etc/wpa_supplicant/wpa_supplicant.conf
Di nuovo, questo non è il file di configurazione in /etc/wpa_supplicant sul computer utilizzato per scrivere sulla scheda SD, ma invece il file nella directory etc/wpa_supplicant del file system root della scheda SD.
Per ulteriori dettagli sulla configurazione manuale del wireless, consultare la documentazione di Raspberry Pi.
Configurazione del PiTFT
Poiché ho utilizzato un’immagine nuova di Raspbian e ho dovuto configurarla con il supporto kernel per il display TFT, ho seguito le istruzioni dello script di installazione fai da te perl’installazione facilitata fornite da Adafruit. Tuttavia, la riga “sudo apt-get install” ha dato luogo al messaggio di errore mostrato sopra a causa del fatto che l’immagine nuova aveva le versioni più recenti del software. Quindi è stato necessario forzare un downgrade con:
$ sudo apt-get install -y –force-yes raspberrypi-bootloader adafruit-pitft-helper raspberrypi-kernel
Quindi abbiamo eseguito lo script helper per installare il PiTFT resistivo da 3,5″.
$ sudo adafruit-pitft-helper -t 35r
È generalmente consigliabile utilizzare l’immagine Raspbian preconfigurata fornita da Adafruit. Tuttavia, le informazioni riportate sopra possono essere utili a chiunque desideri partire da un Raspbian nuovo e, ad esempio, aggiungere queste funzionalità a un sistema esistente che esegue altre app.
Infine, con il Pi orientato come mostrato nell’immagine all’inizio del post, dove il cavo di alimentazione è rivolto verso il basso, sarà necessario aggiornare la configurazione per ruotare il display di 180°. Ciò viene fatto modificando il file
/boot/config.txt e sostituendo rotate=270 con rotate=90.
dump1090
Esistono diversi software disponibili per la ricezione e la decodifica di trasmissioni in modalità S e 5 anni fa ho scritto dell’applicazione gr-air-modes basata su GNU Radio. Tuttavia, questa volta utilizzeremo il software denominato dump1090, chiamato così dalla frequenza utilizzata dalla modalità S, 1090 Ghz.
A differenza di GNU Radio, dump1090 ha il vantaggio di avere un numero minimo di dipendenze esterne. È anche notevolmente robusto e decodifica in modo ottimale i segnali deboli. Quando è utilizzato in modalità interattiva, consente di visualizzare un riepilogo delle attività sulla console e la forcella condivisa su GitHub è stata leggermente modificata in modo tale da adattarsi al display TFT da 3,5″.
Per la compilazione abbiamo bisogno di:
$ sudo apt-get install libusb-1.0-0-dev librtlsdr-dev rtl-sdr
$ git clone https://github.com/DesignSparkrs/dump1090
$ cd dump1090
$ make
Quindi, sarà necessario modificare il file /etc/rc.local e prima di “exit 0” aggiungere la riga:
cd ~pi/dump1090; ./dump1090 –net –net-http-port 80 –interactive &
In Funzione
A questo punto è necessario riavviare in modo che il kernel sia configurato per il display TFT e senza il supporto del sintonizzatore TV predefinito caricato per l’hardware RTL-DSP (che sarebbe di intralcio). Se tutto va bene, dump1090 sarà avviato tramite la riga appena aggiunta al file /etc/rc.local e quindi il display TFT dovrebbe iniziare a mostrare i segnali ricevuti.
Quindi, se un browser è puntato sul Raspberry Pi otterremo una semplice applicazione Web basata su Google Maps che riporterà i dati di posizione, altitudine ecc. degli aerei.
L’antenna fornita con il ricevitore SDR non è ottimale per 1090 Ghz, ma nella maggior parte delle aree dovrebbe essere possibile rilevare almeno qualche aereo utilizzandola. Basta assicurarsi che sia messa accanto a una finestra o all’esterno. Se non si ottengono risultati, sono disponibili online progetti per semplici antenne fai da te sintonizzate su 1090 Ghz e con un guadagno molto maggiore.
Software e servizi aggiuntivi
dump1090 rende inoltre i messaggi grezzi in modalità S disponibili in rete che possono essere utilizzati con un software come PlanePlotter per fornire una visualizzazione più sofisticata. Inoltre, i dati possono essere inviati dal ricevitore ai servizi online che forniscono accesso a dati di volo ottenuti con il crowdsourcing, ad esempioThe OpenSky Network e FlightAware.
Nessun commento su "Costruiamo un “Plane Watcher” con Raspberry PI"