Realizzare un Plane Watcher con Raspberry Pi

Esaminiamo, in questo articolo, un interessante progetto realizzato con il Raspberry Pi, un piccolo display TFT da 3.5 pollici e un economico dispositivo SDR, per ricevere le informazioni di volo degli aerei, dislocati anche a centinaia di chilometri di distanza.

Il ricevitore

Il modello utilizzato nel progetto è un ricevitore SDR (software-defined radio) basato su RTL2832U (vedi figura 1). Esso, in origine, veniva utilizzato per la ricezione del DVB-T. E' possibile, tuttavia, prelevare dal dispositivo i dati grezzi per poterli gestire secondo le proprie esigenze. Il chip RTL2832U è, di solito, associato a un sintonizzatore IC e nel caso del ricevitore USB di Adafruit, esso è un R820T, che consente la ricezione dei dati in una frequenza compresa tra 24MHz e 1850MHz. Si deve osservare che con una risoluzione ADC di 8 bit l'hardware RTL-SDR non sarà in grado di competere con piattaforme SDR più costose, ma per molti usi, il rapporto qualità prezzo risulta molto elevato.

Figura 1: il ricevitore utilizzato nel progetto

Figura 1: il ricevitore utilizzato nel progetto

Il display TFT

Il software realizzato e utilizzato per questo progetto ha il compito di predisporre, tra le altre, una interfaccia Web basata su Google Map, pertanto un'unità di visualizzazione TFT non sarebbe, in realtà, d'importanza vitale. Ma l'adozione di un display da 3.5 pollici Adafruit PiTFT (vedi figura 2) migliora, senza dubbio, l'impatto grafico e la presentazione dei dati fornendo, in tal modo, una chiara sintesi di tutta l'attività aerea, in tempo reale. Il display in questione dispone di un touch screen resistivo e si può montare benissimo sugli zoccoletti del Raspberry Pi, senza creare alcuna connessione esterna con cavi  o fili elettrici. Come progetto parallelo a questo, si potrebbe anche realizzare un visualizzatore di spettro utilizzando gli stessi dispositivi (Raspberry Pi, display TFT e ricevitore SDR).

 

Figura 2: il display TFT utilizzato

Figura 2: il display TFT utilizzato

Il sistema operativo Raspian per il Raspberry Pi

Per gestire il display TFT con il Raspberry Pi, vi sono due diverse soluzioni, circa la configurazione del sistema operativo:

  1. Utilizzare "l'immagine" ufficiale e, manualmente, configurarla di conseguenza, secondo le proprie esigenze;
  2. Scaricare e installare l'immagine del S.O. da Adafruit, con il kernel già configurato e pronto per l'utilizzo dei display TFT.

Il progetto presentato in questo articolo segue la prima soluzione, anche se risulta sicuramente più lunga, tediosa e non proprio facile.

Dopo aver scritto l'immagine del Raspian sulla memoria SD, la prima operazione da effettuare è quella di cambiare l'hostname, da "raspberrypi" a "planepi", andando a modificare i due files di configurazione etc/hostname e etc/hosts.

Setup del PiTFT

La configurazione manuale del kernel per l'uso del display TFT è eseguita utilizzando alcune istruzioni e degli script forniti direttamente dalla Adafruit e presenti sull'omonimo sito. Ecco alcuni comandi per la relativa configurazione:

$sudo apt-get install -y --force-yes raspberrypi-bootloader adafruit-pitft-helper raspberrypi-kernel
$sudo adafruit-pitft-helper -t 35r

Per chi non voglia "smanettare" molto con il sistema operativo si consiglia, specialmente ai principianti e ai programmatori alle prime armi, di scaricare l'immagine del Raspian già configurata e funzionante. Se occorre ruotare la visualizzazione del display, si deve modificare il file /boot/config.txt e specificare l'angolo di rotazione desiderato.

Il software dump1090

Esistono diversi software per la ricezione e la decodifica delle trasmissioni in S-Mode. Quello esaminato nell'articolo si chiama dump1090, nome attribuito al programma per via della frequenza utilizzata. Esso ha il vantaggio di avere pochissime "dipendenze" esterne e si presta ottimamente per la decodifica dei segnali estremamente deboli. Per la sua compilazione è necessario eseguire i seguenti comandi da console:

$ sudo apt-get install libusb-1.0-0-dev librtlsdr-dev rtl-sdr

$ git clone https://github.com/DesignSparkrs/dump1090

$ cd dump1090

$ make

Dopo di ciò si deve modificare il file etc/rc.local e, subito prima della linea "exit 0", in esso contenuta, occorre aggiungere la seguente riga:

cd ~pi/dump1090; ./dump1090 --net --net-http-port 80 --interactive &

Prove e verifiche di funzionamento

Una volta approntati sia il software che l'hardware, occorre riavviare il sistema, cosicché il display TFT venga riconosciuto correttamente. Se tutto è a posto, il software dump1090 si avvierà automaticamente in background, grazie alla riga aggiunta in precedenza al file /etc/rc.local e, subito dopo, il display TFT dovrebbe iniziare a visualizzare le informazioni relative alla ricezione dei segnali degli aerei, come mostrato in figura 3.

Figura 3: la ricezione dei segnali

Figura 3: la ricezione dei segnali

Come si vede, sono mostrate le informazioni più significative del volo come, ad esempio, la sigla dell'aereo, l'altitudine, la velocità, la direzione, la posizione espressa in latitudine e longitudine e altri. Se, addirittura, si specifica al Raspberry Pi anche un browser si otterrà, in modo estremamente semplice, un'applicazione Web, basata sulle mappe di Google, con la posizione degli aerei e altri preziosi dati, come mostrato in figura 4.

Figura 4: applicazione Web per la visualizzazione del traffico aereo

Figura 4: applicazione Web per la visualizzazione del traffico aereo

Ulteriori applicazioni

Il programma dump1090 permette di ottenere anche le informazioni Mode-S in modo Raw consentendo, in questo modo, di ottenere visualizzazioni molto più sofisticate usando, ad esempio, dei software simili a PlanePlotter, come visibile in figura 5. In aggiunta, le informazioni possono essere inviate a dei servizi online che consentono l'accesso ai dati di volo come, ad esempio, OpenSky Network e FlightAware.

Figura 5: ulteriori utilizzi dei dati per visualizzazioni più sofisticate

Figura 5: ulteriori utilizzi dei dati per visualizzazioni più sofisticate

Conclusioni

Come si vede, disponendo di un buon dispositivo embedded (Raspberry Pi con sistema operativo Linux), un economico ma affidabile ricevitore SDR e un'unità di visualizzazione, assieme ai software adatti, è abbastanza semplice realizzare un progetto molto sofisticato che abbia una funzionalità davvero notevole, che è quella di ricevere tutti i dati degli aerei in volo, in tempo reale, e di rappresentarli in forma testuale e in forma grafica agli utilizzatori dell'applicazione.

Links

Ecco, di seguito, qualche link utile per l'eventuale realizzazione del progetto presentato in questo articolo:

 

Scrivi un commento

EOS-Academy