Thank you for visiting → Compete For Nothing.com ← If you find anything useful leave me a comment and share. Interested in Arduino, C#, Unity3D, Game Creation, VB.NET, learning and most important of all Sharing!.
Close Notification
Open Notification

Arduino SKM53 GPS Tracker Wireless

Arduino SKM53 GPS Tracker Wireless

Basic Arduino GPS Tracker project I was messing around with.

Arduino NANO with SKM53 GPS and APC220

Basically the Arduino gets longtitude and latitude from SKM53 GPS module and Serial outputs to the laptop.
I used a simple LM7805 as the voltage regulator and powered from 7.4v lipo. The whole lot uses
97mA at full power (max transmit power and gps sat fix power).

SharpDevelop or VB.net code first….

'
' Created by SharpDevelop.
' User: Wazza
' Date: 27/05/2012
' Time: 1:16 PM
'
' Not the best code but works...just
'
Public Partial Class MainForm
	Dim WithEvents SerialPort As New IO.Ports.SerialPort

	Public Sub New()
		' The Me.InitializeComponent call is required for Windows Forms designer support.
		Me.InitializeComponent()

		'
		' TODO : Add constructor code after InitializeComponents
		'
	End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		ConnectSerial()
    End Sub

    Private Sub ConnectSerial()

    	Try
			SerialPort.BaudRate = 9600
		  	SerialPort.PortName = "COM11"
		  	SerialPort.Open()

    	Catch
    		SerialPort.Close()
    	End Try
    End Sub

    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myD1 As New myMethodDelegate(AddressOf myShowStringMethod)

    Sub myShowStringMethod(ByVal myString As String)
    	'textBox1.AppendText(myString)
    	System.Threading.Thread.Sleep(200)
    	Dim URL As String =  myString

    	webBrowser1.Navigate("http://maps.google.com/maps?q=" & "-" & URL  & "")
    End Sub

    Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
	  Dim str As String = SerialPort.ReadExisting()
	  Invoke(myD1, str)
    End Sub

End Class

Now for the Arduino code…

/*
This Sketch will run with the SkyNav SKM53 GPS
 RXD Arduino Pin 3
 TXD Arduino Pin 2
 GND Ground
 VCC +5

 Make sure you download and save to your Arduino/Libraries folder TinyGPS.h

*/

#include <TinyGPS.h>
#include <SoftwareSerial.h>

unsigned long fix_age;

SoftwareSerial GPS(2,3);
TinyGPS gps;
void gpsdump(TinyGPS &amp;gps);
bool feedgps();
void getGPS();
long lat, lon;
float LAT, LON;

void setup(){
  GPS.begin(9600);
  Serial.begin(9600);
}

void loop(){
  long lat, lon;
  unsigned long fix_age, time, date, speed, course;
  unsigned long chars;
  unsigned short sentences, failed_checksum;

  // retrieves +/- lat/long in 100000ths of a degree
  gps.get_position(&amp;lat, &amp;lon, &amp;fix_age);

  // time in hh:mm:ss, date in dd/mm/yy
/*gps.get_datetime(&amp;date, &amp;time, &amp;fix_age);
  year = date % 100;
  month = (date / 100) % 100;
  day = date / 10000;
  hour = time / 1000000;
  minute =  (time / 10000) % 100;
  second = (time / 100) % 100;
  Serial.print("Date: ");
  Serial.print(year); Serial.print("/");
  Serial.print(month); Serial.print("/");
  Serial.print(day);
  Serial.print(" :: Time: ");
  Serial.print(hour); Serial.print(":");
  Serial.print(minute); Serial.print(":");
  Serial.println(second);
*/
  getGPS();

  Serial.print(LAT/100000,7);
  Serial.print(",");
  Serial.println(LON/100000,7);

}

void getGPS(){
  bool newdata = false;
  unsigned long start = millis();
  // Every 1 seconds we print an update
  while (millis() - start &lt; 10000)
  {
    if (feedgps ()){
      newdata = true;
    }
  }
  if (newdata)
  {
    gpsdump(gps);
  }
}

bool feedgps(){
  while (GPS.available())
  {
    if (gps.encode(GPS.read()))
      return true;
  }
  return 0;
}

void gpsdump(TinyGPS &amp;gps)
{
  //byte month, day, hour, minute, second, hundredths;
  gps.get_position(&amp;lat, &amp;lon);
  LAT = lat;
  LON = lon;
  {
    feedgps(); // If we don't feed the gps during this long routine, we may drop characters and get checksum errors
  }
}

6 Comments

  1. maaz · December 31, 2012 Reply

    Is it tx and rx for APC220 goes to arduino pin 0 and pin 1
    while tx and rx for SKM53 GPS goes to pin 2 and pin 3 ?

    Is there any adjustment/alteration in coding if I’m using Arduino Uno ?

  2. maaz · March 2, 2013 Reply

    Warren, can you make an arduino tutorial GPS SKM53 integrated with iComsat GSM shield ?
    [get map location via SMS or GPRS (online) ]

    • warren · March 2, 2013 Reply

      Maaz, I have a bit of time off in a few days, I will definitely think about it. most of my time is going into a multiplayer game that I’m making.

  3. maaz · March 2, 2013 Reply

    i copy all the code and tried to Verify before upload then my arduino ide 1.0 say on the line 37
    -> gps.get_position(&lat, &lon, &fix_age);
    “error: expected `)’ before ‘;’ token”
    plz help me warren :(

    • warren · March 2, 2013 Reply

      hey maaz, since the last wordpress update my website code tags aren’t working properly. in the sketch change & to &

Leave a reply