Homebrew GPS gets ±1 meter resolution with a Raspberry Pi

GPS

We’ve been following the work of [Andrew Holme] and his homebrew GPS receiver for a while now. A few years ago, [Andrew] built a four-channel GPS receiver from scratch, but apparently that wasn’t enough for him. He expanded his build last year to track up to eight satellites, and this month added a Raspberry Pi for a 12-channel, battery-powered homebrew GPS receiver that has an accuracy of about 3 feet.

The Raspi is attached to an FPGA board that handles the local oscillator, real-time events, and tracks satellites automatically. The Pi handles the difficult but not time-critical math through an SPI interface. Because the Pi is attached to the FPGA through an SPI interface, it can also load up the FPGA with even more custom code, potentially turning this 12-channel receiver into a 16- or 18-channel one.

An LCD display attached to the FPGA board shows the current latitude, longitude, and other miscellaneous data like the number of satellites received. With a large Li-ion battery, the entire system can be powered for about 5 hours; an impressively portable GPS system that rivals the best commercial options out there.

This GPS logger is so small…

small-gps-logger

How small is it? Two things should give you a good sense of scale, the SD card slot on the lower right, and the slide switch on the upper left. This minuscule module is an all-in-one GPS logger which [J3tstream] built.

Main system control is provided by a Teens 2.0 board. If you look really closely you’ll see the SD card slot is actually a breakout board which mounts on top of the Teensy’s pinheaders. Also on the board is a PA6B GPS module with a few passive components to support it. The back side of the board hosts a Lithium Ion battery from an old phone. Note the mangled pin header which works as connectors for the battery. [J3tstream] even built a charger into the project. He’s using an LTC4054 chip to handle the charging. We were a bit confused at first because we didn’t see a way to connect external power. But he goes on to explain that the USB port on the Teensy board is used for charging. Just plug in USB and press the button to get things started.

FAA GPS data formatted for your use

faa-gps-data-formatted-with-vb

[Michael] posted up-to-date GPS data sets in the GPX format.  These data sets are an alternative to paid updates. Since GPX is a published standard which uses an XML style formatting for location data [Michael's] time was spent getting the original sets and finding a way to translate them for his Garmin EXTREX GPS.

The original data comes from — hang on, this is a mouthful — the US Federal Aviation Administration’s Facility Aeronautical Data Distribution System (FADDS). He had to apply for permission to download it and to use it in producing a custom GPS build. He grabbed the Airport waypoints and navaid sets, then studied accompanying files detailing the data structure before writing his own Visual Basic 2010 program to spit out the GPX files. He says he wanted to make them available in the spirit of the Open Hardware/Software movement. This may be most interesting for pilots (the kind that put Nooks on the dashboard, not the kind who watch the aircraft from the ground), but we’re sure there’s a myriad of uses for non-pilots alike.

Brute forcing a GPS PIN

pin

[JJ] picked up a Garmin Nuvi 780 GPS from an auction recently. One of the more frustrating features [JJ] ran into is it’s PIN code; this GPS can’t be unlocked unless a four-digit code is entered, or it’s taken to a ‘safe location’. Not wanting to let his auction windfall go to waste, [JJ] rigged up an automated brute force cracking robot to unlock this GPS.

The robot is built around an old HP scanner and a DVD drive sled to move the GPS in the X and Y axes. A clever little device made out of an eraser tip and a servo taps out every code from 0000 to 9999 and waits a bit to see if the device unlocks. It takes around 8 seconds for [JJ]‘s robot to enter a single code, so entering all 10,000 PINs will take about a day and a half.

Fortunately, the people who enter these codes don’t care too much about the security of their GPS devices. The code used to unlock [JJ]‘s GPS was 0248. It only took a couple of hours for the robot to enter the right code; we’d call that time well spent.

You can check out the brute force robot in action after the break.

[Read more...]

UPDATE: Roll your own GPS can now track twice as many satellites

diy-gps-module

[Andrew Holme] wrote in to tell us about some work he’s done to improve his scratch-built GPS receiver. He figured out a way to use the same hardware but double the number of satellites it can track to a total of eight. When we looked at the original hardware about a year ago it was limited to monitoring just four satellites. That’s the bare minimum for calculating position data. This will not only help increase the accuracy, but remove the problems that would have been cause if just one satellite was dropped because of an obstruction or other issue.

His solution is based entirely on using the FPGA in a different way. He had taken up almost all of the gates available in the Xilinx Spartan 3 chip. Now he’s implemented a CPU on the chip and is able take some of the work off of the hardware gate design by running code on it. He also found and squashed a bug in how the data was processed. He says his original work wasn’t taking into account the rotation of the earth when determining position. All of these improvements put his accuracy at +/- five meters even when he’s not tracking all eight satellites!

Reverse geocache based on STM32 and GPS wristwatch

reverse_geocache

[Renaud Schleck] somehow got lucky enough to find a GPS wristwatch in the trash. It had a broken LCD screen so its wouldn’t be of much use on that next hiking trip, but he knew it still had potential. He used the GPS module and a few other parts to build this reverse geocache box.

Reverse geocache is a container that is locked, opening only in a pre-defined geographic location. We’ve seen plenty of these projects around here, like this one that talks, or this one which was given as a Christmas gift. They’re popular projects both because of the unique method of getting at the prize inside, and because it doesn’t take a whole lot of hardware to build one. Once [Renaud] had the GPS module he simply need a user interface, locking mechanism, and a microcontroller to pull it all together.

The interface uses a screen from an old cellphone and one push button. The latching system is a tiny geared motor salvaged from a Laptop optical drive. These, along with the GPS watch board are all monitored by the STM32 microcontroller which he programmed using OpenOCD and the Bus Pirate.

[via Reddit]

Stacking GPS, GSM, and an SD card into an Arduino shield

A few years ago, [Phang Moh] and his compatriots were asked by a client if they could make a vehicle tracking device for oil tankers all around Indonesia. The request of putting thousands of trackers on tanks of explosives was a little beyond [Phang Moh]‘s capability, but he did start tinkering around with GPS and GSM on an Arduino.

Now that tinkering has finally come to fruition with [Phang]‘s TraLog shield, a single Arduino shield that combines GPS tracking with a GSM and GPRS transceiver. There’s also an SD card thrown in for good measure, making this one of the best tracking and data logging shields for the Arduino.

The shield can be configured to send GPS and sensor data from devices attached to an I2C bus to remote servers, or a really cool COSM server. [Phang] is selling his TraLog for $150, a fairly good deal if you consider what this thing can do.

Seems like the perfect piece of kit for just about any tracking project, whether you want to know the location of thousands of oil tankers or just a single high altitude balloon.

Tip ‘o the hat to [Brett] for finding this one.