As a bit of a side project, we’ve been working on an ADS-B tracking site called plane.watch. This build log will step through the hardware we’ve designed/built for this project.
What is ADS-B?
ADS-B is a system in which electronic equipment onboard an aircraft automatically broadcasts the precise location of the aircraft a digital stream @ 1090MHz.
The data can be used by other aircraft and air traffic control to show the aircraft’s position and altitude on display screens without the need for radar.
The system involves an aircraft with ADS-B determining its position using GPS. A suitable transmitter then broadcasts that position at rapid intervals, along with identity, altitude, velocity and other data. Dedicated ADS-B ground stations receive the broadcasts and relay the information to air traffic control for precise tracking of the aircraft.
Because this data stream isn’t encrypted, you can tune to 1090MHz and receive the frames from nearby aircraft. Specialist hardware exists for tuning into and receiving these frames (Kinetic SBS-1, Mode-S Beast), but they are often costly to purchase. However, with the advent of cheap Software Defined Radio (SDR) receivers such as the RTL2832U (http://bit.ly/1tKGJUz), the barrier to entry has lowered substantially.
When coupled with a small low powered computer such as the Raspberry Pi, or BeagleBone Black, it’s possible to build an ADS-B receiver for less than half what a comparable commercial one would cost!
What Do I Need?
To do this, you’ll need some basic Linux knowledge and some basic soldering skills. If you don’t think you’re up for it, let one of us know and we can build one for you.
Build Of Materials
1x Beaglebone Black ~$65
1x uBlox NEO-6M GPS ~$15
1x Adafruit Beaglbone Proto Shield ~USD$10
1x 12/24V -> 5V@5A DC regulator ~$10
1x PoE splitter ~<$10
1x NooElec NESDR Mini SDR (RTL R820T Tuner) ~$15USD
1x MCX -> N Type Bulkhead pigtail <$10USD
1x uFL -> N Type Bulkhead pigtail <$10USD
1x N-Type -> SMA Adapter ~$10USD
1x RF Elements StationBox-ALU aluminium box ~$50
Prepare the GPS module
First of all you’ll need to wire up the PPS pin on your GPS, as most GPS boards don’t break it out to a header.
What is PPS?
PPS Stands for Pulse Per Second, which is a really accurate pulse your GPS unit puts out at the start of every second. This will allow the clock on your ADS-B Cape to be as accurate as within 2 microseconds!
To begin, solder a wire to the 3rd pin from the left, on the bottom side of the board, like so:
Once the wire is in place, put something like a dob of hot glue to ensure it doesn’t come loose.
Once you’ve done that turn your attention to the top of the board, where you’ll see four empty holes (VCC, TX, RX, GND). These are the pins for power and data input/output. Because there isn’t a suitable hole for the PPS pin, we’ll need to add one. You’ll need to drill a small hole using a 1.5mm drill bit, 2.54 mm to the LEFT of the VCC pin. Once you’ve done that, feed your 5x1 header into the holes and solder it in, with the long end of the pins facing the bottom of the board.
You may want to put some flux on the PPS pin to help the solder stick. Once you’ve done that, you can solder the other end of the PPS wire to that header, like so:
(this one’s a little messy because it was my test GPS, it’s had those holes desoldered a few times. :))
You can then trim the headers with a pair of side cutters, if you prefer.
Attach and wire up the GPS module
Next, solder the GPS unit to your protocape. I’ve placed mine one row down from the common power rail on the right hand side of the board:
Once it’s soldered into place you’ll need to join the GPS pins up to the appropriate pins on the beagleboard.
The TX and RX pins will be wired up to the UART4 header on the beaglebone (Pins 11/13 on the P9 connector).
- Wire the VCC pin to the 3.3V supply on the cape, and the GND pin to GND on the cape.
- Wire the TX pin of the GPS to Pin 11 and the RX pin of the GPS to pin 13.
- Wire PPS pin on the GPS to pin 8 on the P8 header (the other side of the board)
Once that’s complete you should have something looking a little bit like this (but hopefully cleaner, again-- test board )
Attaching the Cape
Once that’s complete, you can attach your protocape to your Beagleboard, ensuring that Pin 1/2 of the P8 connector is next to the power/reset switch, and the cutout for the ethernet header lines up with the ethernet port, like so:
TODO: [Installing Linux]