A Simple And Inexpensive GPS Navigation Device

There are plenty of GPS navigation units on the market today, but it’s always fun to build something yourself. That’s what [middelbeek] did with his $25 GPS device. He managed to find a few good deals on electronics components online, including and Arduino Uno, a GPS module, and a TFT display.

In order to get the map images on the device, [middelbeek] has to go through a manual process. First he has to download a GEOTIFF of the area he wants mapped. A GEOTIFF is a metadata standard that allows georeferencing information to be embedded into a TIFF image file.  [middelbeek] then has to convert the GEOTIFF into an 8-bit BMP image file. The BMP images get stored on an SD card along with a .dat file that describes the boundaries of each BMP. The .dat file was also manually created.

The Arduino loads this data and displays the correct map onto the 320×240 TFT display. [middelbeek] explains on his github page that he is currently unable to display data from two map files at once, which can lead to problems when the position moves to the edge of the map. We suspect that with some more work and tuning this system could be improved and made easier to use, of course for under $25 you can’t expect too much.

18 thoughts on “A Simple And Inexpensive GPS Navigation Device

  1. Well done. I tried to design a GPS “breadcrumb” device – something that you could use to remember a spot (like a parked car) and give you range and direction so you could find your way back – but it wound up being double what this one costs, and was kind of big and clunky. And then I discovered hundreds of them on Amazon and just gave up.

  2. I love arduinos. I do lots of gps things (mostly for time-setting). but arduinos do not have fast cpus, fast i/o (for bit blitting) or ANY memory to speak of. they are absolutely the wrong thing for this.

    go with a pi (of course) but trying to do any gfx work with an 8bit controller is really work better spent on a more capable platform.

    (I’d really like to know how you plan to scroll any kind of display with an arduino driving it. and if the display won’t scroll, well, what’s the point?)

    again, I do tons of arduino things; but not every problem can be tackled by such low-end controllers. a text-only thing, sure; but once you put gfx into the picture, the arduino-like controllers are not the thing to drive that.

    good effort, though.

    1. I am pretty sure the goal of the project was to learn. If he had used a Pi, it wouldn’t have been much more than installing software since plenty of GPS apps exist.

      Obviously this is impractical. Pretty sure it was not meant to be.

      1. Exactly, that was my purpose, to learn! Don’t expect me to walk around with this contraption, I just wanted to do some more complex programming than switchin on and off an LED. AND it did not look obvious to use a system as simple as an Arduino to do the job, I wanted to see the possibilities!
        Next to that it is always fun to do something not yet tried out by othe hackers!

    2. I don’t see any reason why scrolling couldn’t be done here. It’s just a little bit more managing of the pixels in the image. It won’t be smooth scrolling on an UNO but it can certainly be done. Switching to a Teensy 3.1 or similar higher speed Arduino platform would be a logical next step that would make it totally usable.

      It is a little more leg work to develop with an Arduino but I think for a situation like this where battery is king a Pi would be the wrong thing to use.

  3. I don’t see any reason why scrolling couldn’t be done here. It’s just a little bit more managing of the pixels in the image. It won’t be smooth scrolling on an UNO but it can certainly be done. Switching to a Teensy 3.1 or similar higher speed Arduino platform would be a logical next step that would make it totally usable.

    It is a little more leg work to develop with an Arduino but I think for a situation like this where battery is king a Pi would be the wrong thing to use.

    1. if the display has native support AND ram for buffering, great. but eventually, you cannot avoid the fact that images have to go thru the cpu to get to the display and arduinos have NO DMA and no way to setup a bulk transfer. its just futile. controllers were not meant for this.

      color video is memory intensive. arduinos have no bus, no expansion fast-ram and onboard ram is measured in kilobytes.

      get serious. this is just not the platform. I ‘get’ the learning part, but you can ‘learn’ and still not waste your time. its not an either/or! ;)

      1. I agree. When it comes to color video and high speed graphics, Arduino isn’t usually the answer. However, in a project like this I’m just saying you don’t need all that capability. Especially when that capability brings huge battery requirements and bootup times. A low power CPU like this actually makes a whole lot of sense. Have you seen the Teensy 3.1? It’s arduino compatible, has DMA and a decent amount of RAM to boot, it’d be perfect for an application such as this. Power requirements will be a fraction of a Pi too.

        I don’t see this as a waste of time at all, Yeah, it’s not as easy or as powerful as writing python or the like but it lets you learn how a bitmap is laid out and how to display it on a screen pixel by pixel instead of just handing it off to a library that somebody else has coded. I’ll bet he gained some valuable understanding into how some of those lower level things work that will benefit him more than a lot of higher language stuff will.

    1. when I do gps, I use the neo-6 thru 8 modules (ebay has them for $15 from a ‘ny platform’ named place). so far, those have been great for time keeping (they have a led for PPS use, which is key). pretty reasonable simple NMEA, has binary mode for those that like that kind of thing and the gps resolution I get (bay area) is within 8feet. not bad for a $15-$20 module.

      not sure how truly different the neo6 is from the higher number versions, but simple nmea is the same between them all.

  4. I say do this on something like an STM32F4, the learning experience would be just as good as the Arduino, but you get the power to actually do some graphics and the ability to add enough RAM to handle all your needs.

  5. I’ve always wanted to see gps with google street veiw. Maybe when moors law catches up we might be able to use that hyper dimensional video, (that was posted a while back) in real time.
    Still I guess it should be possible to create a street view version something akin to Riven. Although downloading a local copy of street veiw might be a little large.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s