Thoughts of a (mad) computer scientist

Monthly Archives: February 2016

I built an airplane tracker. You might call me a nerd, I’d say I’m just curious about what’s going on around me.

I live in Chicago, home of O’Hare International Airport (ORD). While Hartsfield-Jackson in Atlanta is the champion of the world in terms of passenger volume, O’Hare is perpetually fighting for the #1 spot in terms of “aircraft movements” – basically the total of arrivals and departures over the course of the year.

Regarding my location: I live close to Lake Michigan, but almost on an exact line with the O’Hare flight path coming off the lake. If you live in this neighborhood and you don’t notice all of the planes flying around, you must be blind or deaf.

Since the runway layout at O’Hare was reconfigured a couple of years ago, air traffic controllers run planes in and out of the airport according to east or west flow. 70% of the time, planes land and take off westward, leading them directly over my building at a pretty low altitude. The other 30% of the time, planes come and go facing east. Finally, a very small percentage of the time, wind and weather force ATC to use O’Hare’s diagonal runways. Here’s a picture that shows the difference between east and west flow:

Long story short, a friend passed this link on to me, detailing someone’s Raspberry Pi-powered airplane tracker in operation near LaGuardia Airport in New York.

The documentation at the original link is pretty decent, and after ordering the parts and putting everything together, I have a working airplane tracker!

Here are a few of the details you’ll need besides the instructions linked in the original blog post:

Soldering skills: you need these to put together the Adafruit LED screen. Turns out I am terrible at soldering, but somehow just barely good enough to do this project. I had only one row of lights on the display that did not function on the first try – re-soldering one of the pins did the trick. It’s probably worth it to practice first and then try your hand on the LED display afterward.

Python dependencies: Jeremy’s original code references a few Python dependencies (requests>=2.7.0, geojson>=1.3.1, shapely>=1.5.13) that I did not have installed on my instance of Raspbian. You’ll need to use apt-get or pip to pull them down. I also had to change #!/usr/bin/python3 to #!/usr/bin/python in one of the code files, as I don’t have Python 3 installed on my Pi.

Location: within the code you’ll need to program in your home airports (KORD and KMDW in my case) and coordinates where you want the software to look for airplanes – I used http://geojson.io/ to do this.

LED screen driver: follow the Adafruit instructions closely, especially how to install the library that makes the LED screen function (you need to run the “install” function or nothing will happen).

Kernel module fun: to use the RTL2832U software defined radio on my Pi, I had to run the command sudo rmmod dvb_usb_rtl28xxu before I was able to get it to operate.

The code currently doesn’t display international arrivals, and will always display the closest plane to your location. I’ve noticed that the screen sometimes jumps between arrival flights as they land in parallel at O’Hare and both take turns closer/farther from my building.

All in all, fun & cheap project to learn a little more about what’s going on in the skies just above. Special thanks to Garreth for the soldering assistance.