Automatic Dependent Surveillance–Broadcast (ADS-B) is a precise satellite-based surveillance system. ADS-B Out uses GPS technology to determine an aircraft's location, airspeed and other data, and broadcasts that information to a network of ground stations via ADS-B out, which relays the data to air traffic control displays and to nearby aircraft equipped to receive the data via ADS-B In.
Operators of aircraft equipped with ADS-B In can receive weather and traffic position information delivered directly to the cockpit.ADS-B Out periodically broadcasts information about each aircraft, such as identification, current position, altitude, and velocity, through an onboard transmitter. ADS-B Out provides air traffic controllers with real-time position information that is, in most cases, more accurate than the information available with current radar-based systems. With more accurate information, ATC will be able to position and separate aircraft with improved precision and timing. There are several types of certified ADS-B data links, but the most common ones operate at 1090 MHz.
In this project, we are going to build a device that can essentially intercept these ADS-B out signals using an RTL-SDR and then decode it using Intel Edison's processing capabilities to obtain data on flights in the vicinity. The data thus obtained would be displayed on a LCD display.
This project is supported by BAL-IoTLAB (www.iotlab.in)
Step 1: Components Being Used in This Project
- Intel Edison running Yocto 3.0
( https://software.intel.com/en-us/iot/hardware/edis... )
NooElec NESDR Mini 2 SDR & DVB-T USB Stick (RTL2832 + R820T2) with Antenna
Sainsmart LCD keypad shield
Arduino Breakout Board for Intel Edison
Portable 12V Lead Acid Battery
Step 2: Getting Started With the SDR
What is Software Defined Radio?
Radio components such as modulators, demodulators and amplifiers are traditionally implemented in hardware components. The advent of modern computing allows most of these traditionally hardware based components to be implemented into software instead. Hence, the software defined radio. This enables easy signal processing and thus cheap wide band scanner radios to be produced.
What is RTL-SDR?
RTL-SDR is a very cheap software defined radio that uses a DVB-T TV tuner dongle based on the RTL2832U chipset. With the combined efforts of Antti Palosaari, Eric Fry and Osmocom it was found that the signal I/Q data could be accessed directly, which allowed the DVB-T TV tuner to be converted into a wideband software defined radio via a new software driver. Essentially, this means that a cheap TV tuner USB dongle with the RTL2832U chip can be used as a computer based radio scanner. This sort of scanner capability would have cost hundreds or even thousands of dollars just a few years ago. The RTL-SDR is also often referred to as RTL2832U, DVB-T SDR or RTL dongle.
The NooElec Mini 2 SDR that we are using in this device is a RX only SDR. It uses the R820T2 made by Rafael Micro, to provide increased sensitivity and improved SNR. They have a frequency capability of approximately 25MHz-1750MHz.
Step 3: Connecting the SDR to Intel Edison
Since it uses an USB interface it can be directly interfaced with Edison that offers out of the box USB capabilities. Once we connect it to the Edison we will have to configure it to run as a device that can decode ADS-B data by installing the appropriate drivers
- Connect the SDR to the Intel Edison through the USB port
- Ensure that the microswitch is towards the USB port as this is the mode that allows to power the USB device connected to the interface
- Connect the USB cable between the PC and Edison to the outermost micro USB port. We will use this to establish the serial connection needed for programming.
- Also, the Edison would need to be powered with a 12V adapter to meet the power requirements of the SDR.
- Setup a terminal session using Putty with the appropriate Serial Line and 115200 baud rate
- Connect to Wi-Fi using
$ configure_edison --wifi
- In order to configure the RTLSDR as a Mode S decoder for flight tracking we will need to make use of these repositories that translate the intercepted data by analyzing packets and comparing them with standard format to display the flight data.
- Create a folder under /home on your Intel Edison to contain the scripts needed for this project
- In order to simplify the configuration process, this script will install git and the needed repositories to configure your Edison and SDR
Run the script after copying it to the flight_project folder using $sh config.sh
You could either obtain the script after extracting the zip and copying it to the Edison via SSH or from the given github link
- The above script also install librtlsdr and other files required for configuring the SDR
In order to copy files to and from Edison using WinSCP
http://edison.local – To get the IP address once connected to WiFi and serially connected to PC
Setup ssh over Intel Edison
Get the IP from the above address and use it in WinSCP to access Edison files
Step 4: Parsing the Intercepted ADS-B Data on the Intel Edison
The parsing of the RX ADS-B signals is beind done on the Edison. Dump 1090 is a Mode S decoder specifically designed for RTLSDR devices.
We use this to decode the received signal and extract the unique Hex ID of the flight , Speed , Latitude , Longitude, Aviation transponder interrogation mode, Flight number and other parameters. The decoder uses the Mode S aviation transponder interrogation mode format.
In order to start intercepting flight data, copy the following script and python file into your project folder
The script runs the Malcolm's decoder which supports different modes such as interactive, raw etc to log the dumped ADS-B data. The python file is used to display the logged data on the LCD Module which we will get to in a while. The different modes to display the logged data can be modified by going through the script file.
Step 5: Displaying the Parsed Data on the LCD Module
The sequence of operation being followed here is that we first log the data using the decoder script into a txt file using the raw mode, we then use the python file to perform sub string and keyword detection of essential parameters to be displayed and also display it on the LCD module.
https://github.com/rajesh-s/Edison_flight_tracker/... (Or use the attached zip)
So upon running the script.sh file it not only causes the dump1090 decoder to generate the real time log file but also parses the text in the log txt file periodically and displays it on the LCD.
Step 6: Making the Device Robust
In order to make the device robust we can write a script to invoke the decoder script discussed in the previous step and put it in the init.d folder so that these scripts run automatically at run time and every time the Edison is booted up.
Due to the constraints of the small LCD panel, for debugging or observing elaborate details about the intercepted flights just run the command
#or any other mode as required.
Make sure you keep the Edison plugged into a portable 12V power supply if you intend to carry it around and track flights.
Step 7: Wrapping Up
There you have it, your very own inexpensive flight interceptor. You can now know everything about the flight that you just spotted in the sky, everything from where it's heading to, where it started and what speed it's going at. This device can now be used to track and display flight data anytime , anywhere even without a PC.