Difference between revisions of "ECE497 Project: Local Air Traffic Radio"

From eLinux.org
Jump to: navigation, search
m (corrected format error)
(updated theory of operation)
Line 4: Line 4:
  
 
== Executive Summary ==
 
== Executive Summary ==
RTL-SDR radios can monitor local air traffic via ADS-B signals. These signals operate in two different frequency bands, 1090MHz and 978MHz. The goal of this project is to combine and display both frequency ranges using 2 SDRs, one set to each frequency range.
+
RTL-SDR radios can monitor local air traffic via ADS-B signals. These signals include much information about the flight, including latitude, longitude, height and other flight charactertics.
  
Currently the utilities dump1090 and dump978 can separately output plane data to a html page. This page shows the direction and location of each plane in sensor range, but only those of the selected frequency band.
+
Currently the utility dump1090 can output plane data to a html page. This page shows the direction and location of each plane in sensor range, but is only accessible in the local network.
  
The plan is to create a new utility that combines the two, showing both types of plane on one html map. The frequency range should be easily identifiable, coded by color or otherwise apparent.
+
The goal of this project is to create a device that will track the local air traffic and alert the user whenever a plane comes close enough to look out the window and see
  
This tool will have many different applications. The overall goal is to  be able to set up the BeagleBone with the 2 SDRs and have it give alerts whenever a plane is close enough see. These planes will be drawn from both bands thanks to the utility designed in this project.
+
This tool will have many different applications. The overall goal is to  be able to set up the BeagleBone with the 2 SDRs and have it give alerts whenever a plane is close enough to see. These planes will be found using the dump1090 utility and the system will alert the user via both a buzzer and by tweeting the plane's information
 +
== Packaging ==
 +
Components used are listed below:
  
== Packaging ==
 
 
BeagleBone Blue:
 
BeagleBone Blue:
 
 
https://beagleboard.org/blue
 
https://beagleboard.org/blue
  
Currently using these SDRs:
+
Software Defined Radio:
 
 
 
https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/
 
https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/
  
http://www.nooelec.com/store/sdr/nesdr-smart-xtr.html
+
Electronic Buzzer:
 +
https://www.adafruit.com/product/1536
  
 +
== Installation Instructions ==
  
(consider [http://cpprojects.blogspot.com/2013/07/small-build-big-execuition.html Small Build, Big Execuition] for ideas on the final packaging)
+
https://github.com/AdamBretsch/SDRFlights
 
+
See README.md in github directory.
== Installation Instructions ==
 
  
 
Current sources:
 
Current sources:
Line 51: Line 51:
 
== Theory of Operation ==
 
== Theory of Operation ==
  
Dump1090 and dump978 are seperate programs that us a RTL-SDR usb dongle to look at a band of air traffic radio. The software will combine the outputs of these two radios into a new utility that combines both and identifies them. This display will show the different bands as different colors.
+
The utility dump1090 calibrates and begins the SDR's collection of data. The script begindump.sh starts this process and starts dump1090 with the option to deposit all data gathered into a .json file  ./dump1090/public_html/data/aircraft.json. Using the script ./HTMLserver.sh, a basic python html server is started on port 8090 that views that data in an html form.
 +
 
 +
For my project, the same aircraft.json file that serves the html page is queried and used to compile data on the local flights. The program ./listPlanes.py gathers this data and filters out the planes that don't have a strong enough signal to give specific aircraft information such as flight number or speed. If this information is present, each plane and its values are recorded, and the distance to each plane from the local position (currently assume to be Rose-Hulman in Terre Haute, IN) is calculated using geopy's vincety distance between two points in the form (latitude, longitude). This program was the first step in processing the information used in the project, and can currently be used to check the distance to each fully visible plane.
  
Whenever a plane is detected close enough to the radios, a buzzer or alarm will go of as an alert. This is so you can find the planes in the sky, or identify planes from a nearby air traffic.
+
In ./tweetPlanes.py, ./listPlanes.py has been expanded to include the functionality to tweet and activate a buzzer to inform the user whenever a plane is close enough to be locally seen. The distance is set to 20 miles by default, and whenever a plane is detected within this distance, a tweet including its flight number, distance, speed, altitude, and a link to a third party flight-tracker is included in the tweet. The twitter feed operates through use of the utility tweepy, which integrates with a custom-made application on apps.twitter.com, communicating via public and private keys to the twitter account.
  
 
== Work Breakdown ==
 
== Work Breakdown ==

Revision as of 04:43, 14 November 2017


Team members: Adam Bretsch

Executive Summary

RTL-SDR radios can monitor local air traffic via ADS-B signals. These signals include much information about the flight, including latitude, longitude, height and other flight charactertics.

Currently the utility dump1090 can output plane data to a html page. This page shows the direction and location of each plane in sensor range, but is only accessible in the local network.

The goal of this project is to create a device that will track the local air traffic and alert the user whenever a plane comes close enough to look out the window and see

This tool will have many different applications. The overall goal is to be able to set up the BeagleBone with the 2 SDRs and have it give alerts whenever a plane is close enough to see. These planes will be found using the dump1090 utility and the system will alert the user via both a buzzer and by tweeting the plane's information

Packaging

Components used are listed below:

BeagleBone Blue: https://beagleboard.org/blue

Software Defined Radio: https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/

Electronic Buzzer: https://www.adafruit.com/product/1536

Installation Instructions

https://github.com/AdamBretsch/SDRFlights See README.md in github directory.

Current sources:

https://randomkeystrokes.com/2016/07/02/installing-dump1090-adsb-decoder-tool-on-ubuntu-16-04-lts/ https://github.com/antirez/dump1090

(* Include your github path as a link like this to the read-only git site: https://github.com/MarkAYoder/gitLearn.

  • Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
  • Include a Makefile for you code.
  • Include any additional packages installed via apt.
  • Include kernel mods.
  • If there is extra hardware needed, include links to where it can be obtained.)

User Instructions

(Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.)

Highlights

(Here is where you brag about what your project can do. Include a YouTube demo.)

Theory of Operation

The utility dump1090 calibrates and begins the SDR's collection of data. The script begindump.sh starts this process and starts dump1090 with the option to deposit all data gathered into a .json file ./dump1090/public_html/data/aircraft.json. Using the script ./HTMLserver.sh, a basic python html server is started on port 8090 that views that data in an html form.

For my project, the same aircraft.json file that serves the html page is queried and used to compile data on the local flights. The program ./listPlanes.py gathers this data and filters out the planes that don't have a strong enough signal to give specific aircraft information such as flight number or speed. If this information is present, each plane and its values are recorded, and the distance to each plane from the local position (currently assume to be Rose-Hulman in Terre Haute, IN) is calculated using geopy's vincety distance between two points in the form (latitude, longitude). This program was the first step in processing the information used in the project, and can currently be used to check the distance to each fully visible plane.

In ./tweetPlanes.py, ./listPlanes.py has been expanded to include the functionality to tweet and activate a buzzer to inform the user whenever a plane is close enough to be locally seen. The distance is set to 20 miles by default, and whenever a plane is detected within this distance, a tweet including its flight number, distance, speed, altitude, and a link to a third party flight-tracker is included in the tweet. The twitter feed operates through use of the utility tweepy, which integrates with a custom-made application on apps.twitter.com, communicating via public and private keys to the twitter account.

Work Breakdown

Done: Installed dump1090 - 10/22/17 Tested dump1090 -10/22/17 Installed dump978 - 10/29/17 Tested dump978 - 10/29/17

To be done: Analyze dump1090 source - 11/2/17 Analyze dump978 source - 11/2/17 Combine code dump 1090 and dump978 - 11/7/17 Combine display outputs - 11/3/17

Future Work

Could add twitter interface to send alerts over the Internet.

Conclusions

Grading

0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: 
Score:  /100

(Inline Comment)