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.
I would mention a PIC and maybe a PICKit2 to program it. I would write the code in JALv2. I would stay away from speech input for now to keep costs down and store audio files in the chip, if I had the space, or, on an SD card if I didn’t. A small memory chip with i2c might also be a possibility. Input could be as simple as buttons or a rotary switch.
I would mention that the Parallax Propeller has onboard video and sound outputs including text to speach objects that are sofware that you can freely download and then just feed it words to say.
All feed back is appreciated. I have shied away from buttons as it would be all to easy to knock them with the device in a pocket/backpack Another issue could also be battery power. I am often out for 10 hours or more, but then again I have plenty of lipo’s from my model flying days so this shouldn’t be too much of a hassle.
My mind isn’t as agile as it used to be so picking up ANY new language is always a hassle (I’m in my 50’s). I like the idea of the memory chip however for the sound clips.
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
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 Birdmun - Heating shouldn’t be a problem (I hope).
Gareth - That link does not work for me though I have looked at https://www.robotshop.com/letsmakerobots/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.
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.
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 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 https://www.robotshop.com/letsmakerobots/node/21098 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.
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.