low power avr c gps receiver

Power requirements for our devices go up, while they should go down.
I would want to create a basic low power gps receiver that just works.

Similar projects worth following
I have worked with a few gps devices in my life so far, including a smart phone, but the bottom line was always the annoyance of running out of power.

I started out on this project not to quickly cleanly and easily be done with it, but as a
learning experience for me to code c for atmel microcontrollers. The rule for me is to learn to understand what happens.

I will not go down hardcore in building my own gps receiver, as I don't have experience in that field, I will go from a ready made receiving module.
I will try to glue a few components together with software, and try to deliver a working concept.

The device "works" for me when I have a gps device that I can take with me outdoors, that functions for days on a set of batteries.

This unit will not display maps or plot graphical data, but it works with sets of coordinates. A logging capability could be handy to display this data on a workstation.

Here I will document my progress on building a handheld, low power GPS unit using an Atmel avr, using some gps module, and some display.

Focus for this project is to build a GPS unit that is:

– fast (fast booting, fast fix, fast display)
– low power, e.g. 3 rechargeable batteries
– easy to use, e.g. with gloves on.

Emphasis should be on choosing parts that require low power for operation.
For now I have chosen an OLED display, as that was affordable for me, and got me going in the right direction for this project.
Right now I am thinking about possibly exchanging it for an e-paper display, however right now these are more costly.

The links in the descriptions of the components list are for your information, and not intended to advertise some business.
They are provided as an example.
[In the end we all have to get parts somewhere, even if you make your own parts, you need to buy something, somewhere]

Hints, tips and tricks that will make this project better are welcome :)

View all 11 components

  • Projects projects projects

    Leonard01/01/2016 at 18:46 0 comments

    I have been busy on the other 2 projects, which is holding me back on this one.
    Currently still investigating SD card reading and writing, I may go the ready made fat32 route, since then I would just need the write the driver, that's it.

    Just a little update to ensure everyone this project isn't dead. More later.

  • Back!

    Leonard09/16/2015 at 16:48 1 comment

    Back at it. Where were I?

    At reading and writing SD cards.

    For my project I'll keep it as simple. I've been reading about ChaN and Fatfs, petitFatFs but as stated before, I would like to be able to do this on my own.

    For me getting this done is a big step.
    As in any project, you (read I, me the writer of this text) need to chop things down to the most basic, and get that done, then move on, one step at a time.

    For everyone's sake I'll post a list of things I'm currently reading, so you can follow my steps.

    Best read for FAT32:

    Amongst others

    First I'll write me a human readable text/interpretation of the filesystem before moving on to code it in c.

    Etcetera. Never done this before. When you need me, I'll be here. Doing this. Wish me luck, thanks!

  • Reality

    Leonard09/04/2015 at 18:54 0 comments

    Back from holidays...

    Reality of every day work is in the way right now, but i'll resume work on this project shortly.

  • Holidays

    Leonard07/01/2015 at 17:26 3 comments

    The time for holidays has come.

    This always means that my job requires me to finish a lot of work before I go.

    Back at this project somewhere august.

  • Project update

    Leonard04/12/2015 at 16:00 8 comments

    General Update
    If you may be wondering what I'm currently working on regarding this project:
    Still trying to get a reasonably solid SD Card driver (read and write) ready and done, by myself.
    For me this is complex and I notice I really need some continuous free time to sit down and work on it.

    As my display is also a SPI device I messed up greatly with suddenly 2 SPI devices on the bus... weird things started to happen. So I had to break down my setup to just get the 2 SPI devices working individually (so that I know that they work as intended).
    I'll have to get the Chip Select right at a later stage and I'm currently working on the card initialization and that's where I am now.

    I also ended up using some great macro's in C for bit manipulation; it will make the code cleaner and easier to read and hopefully less buggy. They help a lot! I'll upload the code soon.

    Power supply

    I browsed around today trying to find a good solution for the power supply to the modules and mcu.
    I found some nice Lipo (Lithium Polymer, single cell, 3.7v, 1000mAh) batteries and a charging board for this type of battery.
    The items and links to them will soon be added to the parts list.

    Cheers, Leonard

  • Request to followers

    Leonard03/15/2015 at 15:50 5 comments

    Hey you.

    If you are following me, or my project, can you please comment on the following?

    I have doubts of implementing a real time clock into the project for the following reasons against:

    - Time is acquired the moment you get a GPS fix.
    - It isn't really needed for writing files, as that can be conjured up with magic.
    - It is an extra component, making the design more complex, more expensive.

    What say you? :)

    -would like to hear it, thanks!

  • Clock

    Leonard03/15/2015 at 15:25 0 comments

    Added 2 files to enable me to start working on displaying an analogue clock on the display.
    The files are clock.h, clock.c, they only contain some project notes for things to come.

    I'll always try to make sure that the current version of the code compiles, but be aware that a lot of work on the sd card must still be done, so that doesn't work yet.

    Follow the project if you want :)

  • Datasheets and docs

    Leonard03/15/2015 at 14:53 0 comments

    For entire completeness I have added the datasheets that are used in this project. Could be handy in the rare case when you might want to replicate (parts of) my project.

    I'll add a link for the docs to the project as well.

    There I will throw in documents as well, marked "other".
    I'm compiling a list of links that I've looked at and that were important / contributed to this project, so you can take a look at that too.

  • Update on current status

    Leonard02/21/2015 at 10:00 0 comments

    The current status of the project is still "ongoing".

    I'm currently working on:

    - Reading/writing SD cards, for this I must adjust the code for dual SPI devices, and add the Fat32 file system.
    - Reading buttons [kbd.c]

    What I've completed sofar is:

    - I2c interfacing with digital compass [i2c.c]
    - Digital compass is working [compass.c]
    - I have serial communication [uart.c]
    - I can show data on display [dpy.c]
    - I read GPS NMEA messages, but is not very polished if working at all (work in progress) [gps.c]
    - Physical vibration is done [vibrate.c]

    Then there is support code in init, util and icon.
    The display font is currently in dpy.c. Reading writing settings in EEPROM isn't done yet.

  • c code

    Leonard02/20/2015 at 22:55 0 comments

    I'll keep my code here:

View all 11 project logs

Enjoy this project?



silvio biasiol wrote 04/14/2016 at 21:51 point

I'm very interested in this project! I'm building an autonomous sailboat ( and this is a crucial topic to me! Hope to see some new info soon! Bravo! 

  Are you sure? yes | no

Leonard wrote 03/16/2015 at 12:03 point

I may already have made up my mind :) thanks though, just wondering to see how people would respond if at all :)

  Are you sure? yes | no

frankstripod wrote 03/16/2015 at 13:22 point

Looking back now, I should have said "go with magic!" but I like the clock idea also. I like your philosophy here, that tech should get smarter, not fatter and power hungry. I felt under qualified to talk about GPS. I was hoping to take a ride with your project, and maybe catch up a little. So in my ignorance; wouldn't the power consumption the same?

  Are you sure? yes | no

Leonard wrote 03/22/2015 at 18:22 point

I still have to look up the power requirements for the gps device, and find the modes for this particular module that are efficient (meaning: power down, but keep gps map of the satellites in cache, etc.), the atmel has a well documented power down mode, but doesn't use a lot of power anyway. The display ofcourse can be turned off at regular intervals, which I will make into a setting. 

Those are the idea's and I would like to keep it simple. A push of a button should activate everything so that it is ready for use in no time.

Perhaps a different GPS module will function better in this project when it comes to power usage, but first: I want to make it work, then I want to make it fancy :)

  Are you sure? yes | no

frankstripod wrote 03/16/2015 at 02:44 point

Have you tried your real time clock request on stack yet? Not that everyone gets a response there, but I would like to think this is the type of question that does.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates