Just finished the "Walkabout".....a portable GPS that captures various data to an SD card. The output is also displayed on the OLED. The unit is powered by a 3.7v, 1200 mAh LiPo and has an on-board charging card with a USB port for charging.
Output is displayed on the SSD1306 OLED connected via I2C. The SD card runs over SPI with a CS=3. The nice thing about the setup is that we only added a 220 Ohm resistor between the MISO out of the SD card. No other SD code was required to make it reliable. We did program the SD card writes "atomically", i.e., we open the file, write the log entry and close the file in one function.
To make it easier to gain access to the data on the SD card, we added an "OTA dump" feature. This allows me to run a client program on a separate Moteino which reads the SD card contents and transmits it over the air so I don't have to remove the SD card every time I want access to the card contents. I can also delete the file from the client when I want to start fresh with a new file.
The following data points are logged and displayed:
1. Lat
2. Lon
3. Speed in mph
4. Altitude in feet
5. # of satellites
6. Battery voltage
7. Date/time
I'm currently writing these data points every 5 seconds. I added code for time to automatically handle daylight savings time. I also threw in the Moving_Average library that averages the speed and altitude numbers over the last 3 readings. WAAS is enabled on the GPS. I also configured date/time callbacks for the SD card so the files written on the SD card are properly time and date stamped.