Low power GPS with maps for hiking
tcornall last edited by
I'm interested in using e-ink display in conjunction with a GPS module and low-power microcontroller with an independent RTC (real-time clock) that can be used to implement an efficient (in terms of battery life) handheld GPS and map display for hiking. It looks like the M5Paper might be just what I'm looking for...
I've played around with OSM (Open Street Maps) in the xml format and I am confident that I can pre-translate them to a format (maybe a btree database, which is supported by MicroPython) suitable for use with the EPS32 and extract what I need from them to present a map on an e-ink display of map and current location in a low-computational manner.
I'm hoping to do it in such a manner that not having color is not an issue, using a combination of shading, grayscale and selectively toggling layers in the displayed map.
I'd probably go for pre-computed zoom level maps rather than zooming on the fly to avoid computation and display delays.
Probably limit maps sizes to about 25km across for fully-zoomed out and about 2.5km across for fully zoomed in. Maybe only one intermediate zoom level that shows 4 or 16 map tiles.
Panning would be limited because of display refresh time and really only for when the location of the 'current' position moves off the current map section although I can see the need to be able to display the adjacent map sections on demand.
Adding a UART based gps module to the M5Paper is probably not going to be much challenge.
Using the deep sleep mode and having the RTC wake the processor to get a new GPS fix on a timed interval of at least a few minutes ought to prolong the battery life considerably. Or even only waking, fixing and updating display on user demand.
The ability to leave the map displaying when the processor is asleep would be critical.
Turning off wifi and friends when in the field would also be critical, along with anything else that eats up battery life.
User interface needs to be thought about and the touchscreen and the multi-purpose switch look great for that.
Any thoughts? Arduino C/C++ versus Micropython? Partial refresh? Display refresh time? Battery-saving tips? User interface?