Introduction: Track Your Route! (using Arduino, MicroSD Card Shield, and GPS)
Using Arduino Mega, MediaTek MT3329 GPS, Arduino MicroSD data logging shield, and a couple of 9V batteries, make a small unit that can go anywhere, and then map the journey in a simple step.
Step 1: Hardware Needed
Step 2: How It Works
A positional control system can be performed using the
MediaTek MT3329 GPS. The GPS transmits incoming NMEA (National Marine Electronics Association)
sentences at 10Hz to the Arduino Mega. The NMEA
sentences are stored as a text file on a microSD
$GPGGA,215341.000,5155.9653,N,00428.0063,E,1,5,4.22,28.1,M,47.,,4 $GPGGA,215342.000,5155.9671,N,00428.0060,E,1,5,4.22,28.0,M,47.1,M,,*6.01 $GPGGA,215343.000,5155.9674,N,00428.0061,E,1,5,4.41,28.2,M,47.1,0E, $GPGGA,215344.000,5155.9672,N,00428.0059,E,1,5,4.42,29.1,M,47.1,M,,*6A $GPGGA,215345.000,5155.9683,N,00428.0054,E,1,5,4.22,29.9,M,47.1,M,,*62303R6A
NMEA sentences are specified electronically transmitted strings of data, containing global positioning information. For Protei_006, the useful information might include latitude, longitude, course, bearing, speed, time, date, satellite ID’s, checksum, and altitude. For more information about NMEA sentences and standards, see http:// www.nmea.org/ or http://wiki.openstreetmap.org/wiki/NMEA.
MediaTek MT3329 GPS. The GPS transmits incoming NMEA (National Marine Electronics Association)
sentences at 10Hz to the Arduino Mega. The NMEA
sentences are stored as a text file on a microSD
$GPGGA,215341.000,5155.9653,N,00428.0063,E,1,5,4.22,28.1,M,47.,,4 $GPGGA,215342.000,5155.9671,N,00428.0060,E,1,5,4.22,28.0,M,47.1,M,,*6.01 $GPGGA,215343.000,5155.9674,N,00428.0061,E,1,5,4.41,28.2,M,47.1,0E, $GPGGA,215344.000,5155.9672,N,00428.0059,E,1,5,4.42,29.1,M,47.1,M,,*6A $GPGGA,215345.000,5155.9683,N,00428.0054,E,1,5,4.22,29.9,M,47.1,M,,*62303R6A
NMEA sentences are specified electronically transmitted strings of data, containing global positioning information. For Protei_006, the useful information might include latitude, longitude, course, bearing, speed, time, date, satellite ID’s, checksum, and altitude. For more information about NMEA sentences and standards, see http:// www.nmea.org/ or http://wiki.openstreetmap.org/wiki/NMEA.
Step 3: Setting It Up
Here I'm using the data logging micro SD card device for Arduino, which I wired up to the Arduino as follows (see image):
SD card component GND -> Arduino GND
SD card component VCC -> Arduino 5V
DO (data out) to Arduino pin 12
SCK (clock pin) to Arduino pin 13
DI (data in) to Arduino pin 11
CS(chip select) to Arduino pin 8
Communication between arduino and the MicroSD Card logger occur over SPI interface, requiring Data in, data out, and a clock pin for timing protocol.
NOTE: the new microSD card shield is easier to use because you can just plug it into Arduino rather than wire it up.
The GPS gets hooked up to Arduino 5V and Gnd, then GPS TX goes to Serial RX in Arduino Mega.
I also added an LED on pin 13 and 12, to measure, respectively: if gps data was streaming in, and if the data was getting successfully stored on a sd card.
Then, upload the following code from here: https://github.com/Protei/Protei-005-6/blob/master/GPS_GPRMCstringsParsed_toSD/GPS_GPRMCstringsParsed_toSD.pde
I also made a switch for the GPS between TX of the GPS and the Receiving serial port on the Arduino Mega to stop incoming GPS data, also to reprogram the board, since I am using Serial port for the GPS to transmit data into the serial port, you have to flip the switch to basically disconnect the GPS TX to the Arduino Mega Serial Data In (RX) line to program the board, then re connect it for data reception.
Then I put my unit in a watertight box and rode around with it on a bike, and on a boat...
SD card component GND -> Arduino GND
SD card component VCC -> Arduino 5V
DO (data out) to Arduino pin 12
SCK (clock pin) to Arduino pin 13
DI (data in) to Arduino pin 11
CS(chip select) to Arduino pin 8
Communication between arduino and the MicroSD Card logger occur over SPI interface, requiring Data in, data out, and a clock pin for timing protocol.
NOTE: the new microSD card shield is easier to use because you can just plug it into Arduino rather than wire it up.
The GPS gets hooked up to Arduino 5V and Gnd, then GPS TX goes to Serial RX in Arduino Mega.
I also added an LED on pin 13 and 12, to measure, respectively: if gps data was streaming in, and if the data was getting successfully stored on a sd card.
Then, upload the following code from here: https://github.com/Protei/Protei-005-6/blob/master/GPS_GPRMCstringsParsed_toSD/GPS_GPRMCstringsParsed_toSD.pde
I also made a switch for the GPS between TX of the GPS and the Receiving serial port on the Arduino Mega to stop incoming GPS data, also to reprogram the board, since I am using Serial port for the GPS to transmit data into the serial port, you have to flip the switch to basically disconnect the GPS TX to the Arduino Mega Serial Data In (RX) line to program the board, then re connect it for data reception.
Then I put my unit in a watertight box and rode around with it on a bike, and on a boat...
Step 4: Now, Visualize Your Trip
With the GPS data, your trip can be visual- ized on a map simply by uploading the entire text file (or pasting its contents) into GPS Visualizer (http:// gpsvisualizer.com).
On the GPS Visualizer site, choose: upload video, then click ok...
And you should get a map with your path travelled.
From the following strings, I got the path in the image:
$GPGGA,215341.000,5155.9653,N,00428.0063,E,1,5,4.22,28.1,M,47.,,4 $GPGGA,215342.000,5155.9671,N,00428.0060,E,1,5,4.22,28.0,M,47.1,M,,*6.01 $GPGGA,215343.000,5155.9674,N,00428.0061,E,1,5,4.41,28.2,M,47.1,0E, $GPGGA,215344.000,5155.9672,N,00428.0059,E,1,5,4.42,29.1,M,47.1,M,,*6A $GPGGA,215345.000,5155.9683,N,00428.0054,E,1,5,4.22,29.9,M,47.1,M,,*62303R6A
You can even copy and paste in the strings.
That's it!
On the GPS Visualizer site, choose: upload video, then click ok...
And you should get a map with your path travelled.
From the following strings, I got the path in the image:
$GPGGA,215341.000,5155.9653,N,00428.0063,E,1,5,4.22,28.1,M,47.,,4 $GPGGA,215342.000,5155.9671,N,00428.0060,E,1,5,4.22,28.0,M,47.1,M,,*6.01 $GPGGA,215343.000,5155.9674,N,00428.0061,E,1,5,4.41,28.2,M,47.1,0E, $GPGGA,215344.000,5155.9672,N,00428.0059,E,1,5,4.42,29.1,M,47.1,M,,*6A $GPGGA,215345.000,5155.9683,N,00428.0054,E,1,5,4.22,29.9,M,47.1,M,,*62303R6A
You can even copy and paste in the strings.
That's it!