Let's Make Robots!

Handsfree GPS director

Hands free! navigation from a known GPS point given a distance and bearing
Geocache.pde11.82 KB

I am looking at building a relativly 'hands free' GPS navigator for bush walking as a backup for magnetic compass work. Keeping track of distance and bearing in rough terrain can be very hard.

The concept is to take a known GPS position - "Here" and enter by thumbwheels/voice recognition/other method a distance and bearing and use the GPS as a backup for the magnetic compass. Basically if you are roughly on track then it is silent but should give an indication of when you have arrived. If going off course then a simple "bear left" / "bear right" audio prompt with an 'on course' finish. A count down of distance every 100m could also be provided. As hiking in the Australian bush requires carrying sufficient water, food and first aid gear as a minimum then I would like this to be small and light, hence the audio feed back and possibly data entry.

 While I mainly use picaxe I realise this is NOT the right micro for this job. I have an Arduino Uno but am not comfortable in C. Another option may be the parallax Propellor I would like any feedback on microprocessor and GPS modules (406?) Text to speech looks like the TTS256 and speakjet but wav files on a SD card could be an option also.

UPDATE 15 Feb 2012 I have now completed the first proof of concept prototype. Simply put, on power up it waits until the GPS has lock. Prompts for user entry for the starting point (where they are currently), the distance (Km) and bearing to walk. The position is checked every 5 seconds (probably less often on the final), speeding up as you approach the target area. Once within 5m you have arrived. This process is then repeated until the user power offs. Prototype works well but has limitations. Main one is the size of the unit. I am now considering a graphical LCD as they are more compact than the 20x2 LCD I am using at the moment. This would also allow a better style of display when being used hand help. Another option I am also considering is instead of voice just three LED's, Red for Left, Green for Right and another colour for arrived. At the moment the code takes about half of the Arduino Uno memory space up. I am now awiating a SD card holder and some other goodies. I will probably have to switch to the Mega at this point to get sufficient digital pins

UPDATE 20 Feb 2012  I realised this weekend I had used the wrong formulae.  The original formulae was for great circle navigation (shortest distance).  However I neede rhumb line navigation (constant bearing), which is different.  I have just about finished changing the formulea but also realise I am getting occaisional errors in the course (direction) error.  This is partially due I feel  to my short testing distances and the accuracy of GPS (+- 5m, WAAS is not available in Australia).  Further testing will be done.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Well it's been an interesting couple of days but I now have the GPS happily talking with the Arduino.  All outputs at the moment are via the Serial monitor.  Managed to save a track of me driving home today , initially being somewhere in the middle of China (Hi Oddbot) because I didn't bring the latitude sign over (-ve for South).  Problem sorted needless to say.  I was only taking points every 20 seconds but what there was seemed reasonable :)

Must also get a SD card shield as at the moment I am using Serial Monitor and then cutting and pasting to Notebook and then reading into Excel - what a joke :)  I have now re formatted the messages to remove a lot of that.  Must research if I can save direct to hard drive while testing.

I don’t know if this will be helpfull, but I used both the GPS and SD shield for my project
There is some code there that you might take a look at. I had to rewrite the GPS NMEA phrase as the version I used took all the Arduino RAM.
Another thing you probably know about is this site. http://www.gpsvisualizer.com/ so if you just dump all the NMEA sentences onto the SD card GPS Visualizer can plot your route onto a google map.

Thanks Geir,

I had followed that with interest when it was first posted (I used to make RC boats).  I will look at your code in further depth later (pun intended).  I was already aware of gpsvisualizer and had used this to check the PC log I had made of my drive from work to home.  It is looking as though I will also need to add a compass as the bearings from the GPS are quite inaccurate when using short distances.

Received my EM406A from Sparkfun yesterday  :)  I went to Gareths GPS Tutorial part 1 but couldn't get a ;ock until I took the GPS outside.  Once outside I started receiving the NMEA data stream quite quickly.  As soon as I returned indoors I lost the signal.  Still awaiting on the MEGA board from YourDuino but blaming Chinese New Year for the delay.

Having said that after looking at the Software Serial options I might not need it.  Time to get my UNO out and start coding over the next few days.

Well I have decided on the EM-406 GPS module and the Arduino MEGA from yourDuino.  This will give me plenty of serial options.  I will start using a serial LCD for debugging and finally add either voice or coded beeps for the audio feed back section.

Thanks Bird - I have already read those

sparkfun has a few tutorials on GPS receivers.


Hi Birdmun - Heating shouldn't be a problem (I hope).

Gareth - That link does not work for me though I have looked at http://letsmakerobots.com/node/5972 I must admit that adding a screen and geocaching was also going through my mind for a later adaptation.  However for my initial trials I would really like to be audio feed back only.  Another option would be using a method of beeps as used in the early directed flight methods in the second world war, using a different pattern of beeps to indicate wether left, right or on the correct course. The downside of audio is that the after 10 hours or so you could really get fed up of that 'beeping in the ear' (sorry Monty Python!)

It would seem that the 406 is a very popular GPS module so will probably order one soon to play with, although there are now Sirf 4 modules out now, albeit a little more expensive. 

So, it should be put in a light colored enclosure. If you put a hinged front cover on it, you could cover a keypad or a rotary dial. I agree that the prop is a very nice chip. I believe it is overkill for this application. Your arduino is a fine controller for what you want. If battery power is a concern, with some learning on your part you might be able to put the uC (microcontroller) to sleep for even a few moments at a time to save power. SD cards can be read from an SPI bus. You can even make an impromptu holder from a set of header pins with the proper bend in them, otherwise you would need a honest to goodness holder. The upside to using SD vs a memory chip is, you can go to a decent store and purchase SD cards; when was the last time you could go buy a small i2c memory chip? :)

Hi Grue,

Your reply came in while I was typing Birdmun's reply.  I didn't know that about the propeller - I will definately have to do more research into that.  I do know that it is Chris's favorite processor though :)