It has taken about a week to finalize the code for the prototype. About a quarter of this time was experimenting with the display to find the interface that I liked the most.
The "GPS Logger v1.0" world map screen shown above is displayed for two seconds after the device is turned on. The "Select Mode" screen is displayed next.
Mode descriptions are as follows:
- Point. Log a single GPS position.
- Line. Log a sequence of GPS positions.
- Area. Log a sequence of GPS positions that define the borders of a closed area.
- Track. Automatically log GPS position per user defined frequency.
The user presses the number on the IR remote that corresponds to the mode in order to advance to the next screen. In this case, the user presses the "1" button to advance to the "Point" mode screen.
While the cursor is on "Code:", the user can input and assign custom numeric code (up to five digits) to the log point. When ready to log the position, the user will need to navigate the cursor down to "Log" and press "ok" to write the current GPS position to the SD card and display the GPS information on the screen.
Once the user has commanded a "log" action, the log sequence number, latitude, longitude, GPS UTC date, and GPS UTC time are displayed. The log sequence number for "Point" mode will always be "0". The log sequence number increments each time a log occurs in the "Line", "Area", and "Track" modes. I blurred the latitude and longitude because I don't want to reveal exactly where I live, but usually six digits of precision are displayed here.
The only issue I have not been able to solve so far is how to reduce the amount of time spent in the the software serial loop to collect serial data from the GPS module. It seems to spend so much time there that it often takes two button presses on the IR remote before the button press is registered. This annoyance goes away when the GPS module does not have a fix.
Great challenge so far. I am looking forward to when the boards arrive this week.