Homemade GPS receiver
A slightly abbreviated post today – we’ve just driven 380 miles to Phoenix from LA for Intel ISEF, where Eben’s talking tomorrow, and we’re ready to drop. But I was mailed this amazing piece of work this morning, and it really deserves your attention.
Andrew Holme is a member of the Systems Group at Broadcom Cambridge. He’s friends with several of Raspberry Pi’s engineers, and he’s been working on a homemade GPS receiver in the evenings for the last few years. Recently, he’s added a Pi to create a truly portable, battery-powered receiver.
It’s a remarkable piece of work. It shouldn’t be possible to build a GPS receiver like this out off-the-shelf parts. There is no custom silicon in this build; it’s all very, very clever use of an FPGA (field-programmable gate array) to implement the digital logic sections of the pipeline. My electronics isn’t good enough to really understand much of what’s going on here: all I can really tell you is that there’s an analogue front end and 1-bit ADC (analogue to digital converter) followed by all kinds of mad-clever digital stuff. So I’m not going to summarise what Andrew has done, but fortunately for us all he’s written the project up in incredible detail, so you can have a poke around yourself. Please do visit the link; this is one of the most impressive projects we’ve ever seen attempted with the Pi.
A bit of housekeeping: please be aware that posts this week will be a bit (or, as today, a lot) later in the day that you’re used to, because I’m several thousand miles further to the left than normal. There also won’t be quite as much Twitter activity from us as usual while we’re travelling, but the official Facebook and G+ pages will be forging ahead as normal. (Thanks Lorna!)
It’s really cool but I don’t think I would call custom PCBs, “off the shelf parts”. Still awesome and nicely documented. Thanks for the post.
I don’t think cutting PCBs is necessarily a problem from that point of view – if you’re restricting yourself to only things that go on veroboard you’re not going to be able to build anything that’s a recognisably modern IC!
The fact that he still has a demon.co.uk website after all these years, tells you everything you need to know. I’m going to hazard a guess at hand-crafted HTML a ballsy trust in FTP and a ham radio handle, too. These kinds of people make Britain great.
We in ‘ham’ or amateur radio to give it its proper title don’t have ‘handles’. We have names and call signs. Handles are a throwback to CB radio. 73
Actually CBer’s “handles” may have come from a lame imitation of hams. The first time I heard the term was as a kid back before CB was around, visiting a ham shack. It wasn’t some silly made up CB nickname, it was his real name, as in, “Hi, the handle’s Bob.” — just a colorful word for “name”. Maybe this was just something people (not only hams) said in casual conversation with strangers back then. But I think it was part of the ham lingo, like OM (old man), YL (young lady), XYL (wife), CQ, and 73. Amateur radio is a great hobby and has made important contributions to technology and to the public in times of emergency.
I’d love to see the details of this design made into a movie (at least for YouTube).
I could see graphs flying development iterating and compromises competing.
Is it possible to be too much of a geek?
Building a working GPS receiver from the ground up is a real tour de force of RF and digital hardware design as well as software. Impressive all around!
Link not working to Facebook page
Sorry, there was a missing “http://” in the link. should be working now
Thanks Scone! (Sorry Si.)
That’s pretty neat.
Lucky Andrew’s in the UK. If he hasn’t coded in limitations to operations above 18000m and 515 metres/second, that receiver is classified as a munition by the US and subject to ITAR export restrictions.
Should be a boon to high-altitude balloon-launchers sick of having GPSes stop functioning at altitude.
Note that you can buy GPS units without altitude restrictions, for example http://www.adafruit.com/products/746 The ITAR limit is on BOTH altitude and velocity at the same time (although it is true many mfr. implement an either-or limit). Most balloons do not exceed 515 m/s (1854 km/h) !
The mention of the 1bit ADC is interesting, not really come across that before (at first sight 1bit ADC seems like a very odd concept).
Still, as always with the Raspberry Pi, it given me something else to read up on and learn about!
Applause! Fantastic project. Great write-up on the website too.
Anyone know if this would be cheaper to do the DIY than to buy?
If all you want is basic GPS functionality then it is almost certainly cheaper to buy a $25 USB GPS, but if you want a better performing model with an antenna then that is going to be a bit more. But that ignores the cost of acquiring the knowhow/expertise that has gone into this project, which is what makes it so brilliant.
Not half; for me, the whole point of this is the fact that it’s such a complicated, interesting project. Cost be damned.
Having said that it is a great project, its Pi-ness is somewhat limited, being a port of work already done on a PC, which I suspect is the case with many of the more impressive projects so far. Nothing wrong with that because in most cases the Pi is a more convenient host for the project (and I must admit that most of the coding that I have done to date has been reworkings of stuff already coded for PC’s and handhelds), but I look forward to seeing some all-original Pi-based projects tat will start showing up with the new camera boards.
I hope you borrowed Adam’s Radio-4-Matic for the trip!
There are only two words for this: Frakking Awesome!!
Hat’s off to Andrew for this outstanding piece of GPS ingenuity!
Anything that can listen to a constantly-changing flock of up to a dozen satellites that are each no closer than about 12,000 miles (and always seem to be going below the horizon, despite the statistics and orbital dynamics that say that’s impossible) is a pretty neat trick. Add to that figuring out the time-difference-of-arrival to establish isochrones (lines of a simultaneous arrival time), then calculate where those isochrones intersect – in three dimensions (break out the conversion table for steradians, Mr. Chekov!). At that point you’ve got a project certain to drive you completely batty as you push on a problem in one place, and another pops up over there … where you juuuust can’t quite reach!
Most EEs I grew up with have long since moved to software development full-time, but this is one of those few remaining disciplines where RF propagation, signal detection, processing, quantization, 3-D trigonometry, and good ol’ engineering approximations abound as challenges. It’s loads of “fun”, especially when you add to the mix the problem of being in an aircraft or on a ship far over the horizon from land in any direction, and no one happens to have a sextant and a copy handy of something like the six volumes of H.O. (Hydrography Office) Publication 229, aka the celestial navigation tables. I’ve done a three-celestial-body fix to within one nautical mile accuracy in under a minute, but that was a lonnnnng time ago in a galaxy far, far away!
This ranks right up there with the best of any electronic projects, let alone Pi projects, and I can’t wait to see what comes along to top this – it’s going to be a tall order, that’s for sure! Could a Pi-powered Honda ASIMO-style robot that can do forward flips while running be far off? :D
How do they fit all that into a running watch?
As Liz hinted at in the introduction, by using highly specialised (i.e. single-purpose) silicon chips.
Miniaturisation similar to the way that modern CPUs now have over a billion transistors! http://en.wikipedia.org/wiki/Transistor_count
Nice. Good PCTEL antenna too
“we’ve just driven 380 miles to Phoenix from LA …..”
Holy Moly – That is a long and boring drive !!! :O
Hats off to you Eben. :)
I’ve done that same drive myself and almost lost my mind in the process. :/
Comments are closed