Bukit Mertajam, Penang

SKM53 GPS Starter Kit, SKGPS-53


The  SKM53 GPS Module Starter Kit (SKGPS-53) as shown in Figure 1 is a special designed starter kit which offer convenient yet safer GPS module for user. Thus, it is designed with SKM53 GPS module which is an ultra high sensitivity and smart antenna GPS module. By referring to the SKM53 datasheet, it is embedded with GPS (Global Positioning System) antenna which enables high performance navigation in most stringent applications and solid fix even in harsh GPS visibility environments. In addition, it is based on the high performance features of the MediaTek 3329 single-chip architecture, its -165dBm tracking sensitivity extends positioning coverage into place like urban canyons and dense foliage environment where the GPS was not possible before. Therefore, there are some main applications of SKGPS-53 such as Location Based Service (LBS), vehicle navigation system, Portable Navigation Device (PND), timing applications and so forth.


Figure 1: SKGPS-53 Overview

Basically, SKGPS-53 will send the data continuously either in indoor or outdoor as long as it is power up but we can only read the correct data when the SKGPS-53 expose to the sky. Normally, we can check two main data from the GPS module, i.e. the current date and time based on Coordinated Universal Time (UTC) and our current position coordinate in terms of latitude and longitude. Thus, we can either interface with laptop/PC to view these data through specific software or interface with PIC and LCD to display the these data. Therefore, I will explain them in two separate sections in this tutorial. Let’s start now!


Related References

1. SKM53 GPS Module Datasheet

2. Tutorial on using Skylab SKM53 GPS module with Arduino

3. GPS Receiver Project Notes

4. GPS Serial Communication



Main Hardware list:

(i) SKM53 GPS Starter Kit (SKGPS-53) -1            (ii) USB to UART converter (UC00A) -1    



 (iii) Enhanced 18 pins PIC Start-up Kit (SK18B) -1      (iv) 16×2 LCD (DS-LCD-162A) -1

   enhanced-18-pins-pic-start-up-kit-3215-800x800              lcd280x373                                   

(v) IC PIC16F628 (IC-PIC-16F628) -1                      (vi) USB ICSP PIC Programmer V2010 (UIC00B) -1

 ic-pic16f628-2450-280x373                                  UIC00B-222x296             

Main Accessories list:

(i) Adapter 12V 2A (AD-12-2) -1                                          (ii) Cable for UIC00B (WR-UIC) -1

adapter-12v-2a-3187-222x296                                               4994-280x373                 

(iii) Female to Female Jumper Wire (WR-JW-FF10) -4         (iv) USB MiniB Cable 2.0 (WR-USB-M) -1

    4232-280x373                                 mini-usb-cable-2-500x500

(v) Soldering Equipments (EQ-SLD936) -1


Main Software list:

(i) HyperTerminal – download from here.

(ii) MiniGPS 1.41 – download from Cytron product page here.

(iii) GPS Trace – download from Cytron product page here.

(iv) USB driver for UC00A- download from Cytron product page here.

(v) MPLAB IDE V8.86 – download from here.

(vi) HI-TECH C Compiler for PIC10/12/16 (MCUs) – download V9.83 from here.

(vii) PICKit2 V2.61 – download from Cytron product page here.



First of all, we need to solder the male header pin onto the UART extended connectors of SKGPS-53 as shown in Figure 2 so that we able to connect it with another devices such as UC00A or PIC using jumper wires or female header socket. 


Figure 2: Male header pins that was soldered on extended connectors of SKGPS-53 

After that, it’s the time for us to start using the SKGPS-53 to do something. Thus, in the following, there will be two separate sections which explain how to display data on our laptop/PC and then display on LCD with PIC16F628.


Section 1: Interface SKGPS-53 with laptop/PC using USB to UART Converter

PART I: Introduction

Easily, if we have a laptop/PC and a USB to UART Converter such as UC00A, we can actually read the data that send by GPS module from the laptop/PC using UC00A since the SKGPS-53 is operated using UART interface. To do this, we simply need an appropriate software such as HyperTerminal, MiniGPS, or GPS Trace to be installed in our laptop/PC to view the GPS data that received by UC00A. But, these data are based on NMEA (National Marine Electronics Association) protocol standard format. Therefore, we have to know how to analyse it in order to obtain the current UTC time, date, latitude, longitude and so on from it. But, before that, I will explain first how to connect SKGPS-53 to UC00A and PC/laptop and the important things that should be made for these software.


PART II: Connection Guidelines

Basically, we need only to connect 4 jumper wires between UC00A and SKGPS-53. Thus, the table below shows the connection summary:

SKGPS-53 sideUC00A side
5V+ (refer to Vcc)
GND– (refer to Gnd)

Here are the connection diagram as shown in Figure 3: 

Figure 3: Connection diagram between UC00A with SKGPS-53 

*Note: Please use Female-to-Female Jumper Wires to connect them. 


PART III: Procedures

Step 1: USB Driver Installation for UC00A

After we finished the connection as shown in Figure 3, we then connect the UC00A to the USB port of our laptop/PC. Now, we need to install an USB driver to make the UC00A works on laptop/PC. To know how to install the USB driver, please refer to the following guides for further information:

(i) Driver Installation Guide for Win XP

(ii) Driver Installation Guide for Win 7

*Note: For those who already installed this USB driver before, please proceed to the next part. If not, please make sure the USB driver is properly installed in your laptop/PC before proceed to the next part.


Step 2: Identify the COM Port Number for UC00A

After we have successfully install the USB driver, we need to check the COM port number that is connected to UC00A. Thus, we need to go Device Manager to check the COM port number under USB serial port as shown in the example below:

Figure 4: UC00A appear as USB Serial Port in Device Manager (COM14 in this case)

As an example, the COM port number of USB serial port as shown in Figure 4 is COM14

*Note: To go Device Manager, there are a few ways, but for me, I just click the “Start” button, then type “Device Manager” in search bar to find and enter into it.


 Step 3: Set-up the Software for GPS Module

There are several software we can use to read data from SKGPS-53, but in this tutorial, I will only explain three software that I have used before, i.e. HyperTerminal software, MiniGPS software and GPS Trace software. Therefore, we need to set-up these software first before we connect into it. Thus, we need to choose the correct COM port number as identified from Step 2 to connect. Apart from that, since the modules default baud rate is 9600 bps, then we need to configure these software to operate in 9600 bps also. 

Now, I will briefly explain how to set-up for these three software in the following:

(A) HyperTerminal software

Instruction: Double click the “hypertrm.exe” to begin. Next, please refer to the following to set-up the Hyperterminal:

 Figure 5: Connection Description Window

Figure 6: Connection setting Window

Figure 7: COM port properties Window

(B) MiniGPS V1.41 software 

Instruction: Double click the “MiniGPS_1.41.exe” to begin. Next, please refer to the following to set-up the MiniGPS 1.41:

Figure 8: Mini GPS status window for properties 

(C) GPS Trace software

Instruction: Double click the “Setup.exe” to install the GPS Locator Utility. After the installation finished, double click the “GPS Locator Utility” to begin. Next, we need to follow the properties as below:

Figure 9: GPS Locator Utility start-up window for setting

**Important Note: We cannot SIMULTANEOUSLY open these software, meaning that we cannot open two or three of these software at the same time. Meanwhile, we can only open one of these software at a time. So, please choose one to use at a time. To change to another software, we should close the running software first before open another software.


Step 4: Analyse the data send from SKGPS-53 

After we finished set-up the software, now it is the time for us to view the data send from SKGPS-53. Basically, the data is based on the NMEA-0183 (National Marine Electronics Association) protocol. Thus, it is an ASCII-based protocol which start with a $ and end with carriage return/line feed. Meanwhile, for GPS module, all of its specific messages start with $GPxxx where xxx is a three-letter identifier of the message data that follows. Also, NMEA messages have a checksum, which allows detection of corrupted data transfers. Therefore, for the SKGPS-53 module, it supports the NMEA-0183 output messages such as GGA, GLL, GSA, GSV, RMC, VTG, ZDA and DTM. Apart from that, this module has its default NMEA-0183 output setting (factory setting) which is set up only GGA, GSA ,GSV, and RMC and default baud rate is set up to 9600 bps.

The following table shows the different type of output message and its description:

NMEA RecordDescription
GGAGlobal positioning system fixed data
GLLGeographic position-latitude/longitude
GSAGNSS DOP and active satellites
GSVGNSS satellites in view
RMCRecommended minimum specific GNSS data
VTGCourse over ground and ground speed
ZDADate and Time
DTMDatumn reference

 Thus, the following shows the example of output message of each software:

 (A) HyperTerminal software

Figure 10: HyperTerminal Output Message Window 

(B) MiniGPS software


Figure 11: MiniGPS Output Message Status Window


Figure 12: MiniGPS Output Message in NMEA format (bottom)

(C) GPS Trace software  


Figure 13: GPS Locator Utility Output Message Window 

Each of these type of NMEA output message has its own format, meaning that each output message contains different type of data. But, here I have extract some useful messages for us as shown in the following:

(i) From $GPGGA message, we actually can obtain the data of our current position’s latitude and longitude as shown in the example below:

(ii) From $GPRMC message, we can obtain the data of latitude and longitude also as shown in the example below:


(iii) From $GPGLL message (*by default it is no activated, so if we want to see it, we need to activate it using MiniGPS or GPS Trace software or send the command through HyperTerminal to active it), then we can obtain the data of latitude and longitude also from it as shown in the example below:


(iv) From $GPZDA message (*by default it is no activated, so if we want to see it, we need to activate it using MiniGPS or GPS Trace software or send the command through HyperTerminal to active it), then we can obtain the data of UTC time and date as shown in the example below:

*Note: Please refer to SKM53 datasheet for further informations about this NMEA protocol output message format.


PART IV: Additional Notes

1. To activate certain output message such as GLL and ZDA, we can use the MiniGPS or GPS Trace software to change the configuration as shown below:

Figure 14: MiniGPS setup window

Figure 15: GPS Locater Utility User Setting for interval

2. Sometime you may done some misconfiguration on SKM53 which we are no aware, here are the reset command to cold reset the SKM53 which will additionally clear system/user configurations at re-start, meaning that the the receiver will return to the factory status:


Apart from that, there are some extra commands to configure the SKM53 to operate in different baud rate as stated below:

(i)  $PMTK251,4800*17<CR><LF> – change baud rate to 4800 bps

(ii) $PMTK251,9600*17<CR><LF> – change baud rate to 9600 bps

(iii) $PMTK251,14400*17<CR><LF> – change baud rate to 14400 bps

(iv) $PMTK251,19200*17<CR><LF> – change baud rate to 19200 bps

(v) $PMTK251,38400*17<CR><LF> – change baud rate to 38400 bps

*Note: <CR><LF> is refer to carriage return (CR) and line feed (LF) which is \r\n which is hex 0D 0A. It is used for terminate the message. To send it from our laptop/PC, it is simply press the ‘ENTER’ button on keyboard. 

3. To send these commands, we can use HyperTerminal to send. While send the command, we should remove the jumper wires that connect the Tx pin of SKM53 so that the UC00A will not receive data from SKM53 but we remain the connection for Rx pin of SKM53 so that we can send the command from laptop/PC to it using UC00A. Then, we just type the command correctly and terminate it by press ‘ENTER’. But, by default setting of HyperTerminal, we will not see what we type on the HyperTerminal, so we need to do some setting on ASCII sending under ASCII setup to make it visible. To do it, go File->Properties->Change to Settings tab, then we continue the steps as shown below:

Figure 16: ASCII setup window in HyperTerminal 


Section 2: Interface SKGPS-53 with 16×2 LCD using PIC

PART I: Introduction

In this section, I want to share some ideas to display data send from SKGPS-53 on LCD using PIC16F628A. To do this, it need more of the hardware and programming skill. As for demo purposes, I use only the SK18B which already come with some basic elements such as Donut board base, 1 push button, 1 reset button, 2 red LED, 18 pins PIC socket, ICSP programmer socket, power adapter socket, slider switch and other important components. Therefore, I can easily solder the female header socket for 16×2 LCD and SKM53 onto the Donut board of SK18B so that we can plug them into it. Here is the diagram of SK18B after soldering the female header pin and plug in:

Figure 17: Final SK18B Overview


PART II: Connection Descriptions

The followings shows the pin mapping of the connection between PIC with LCD and SKGPS-53:


Figure 18: Pin Mapping of PIC16F628A with LCD and SKGPS-53


PART III: Connection Diagram

1. Schematic Diagram (by Eagle)

Figure 19: Schematic Diagram of full connection


PART IV: Programming using MPLAB IDE

Figure 21: The completed SK18B with LCD power On 

In this part, I want to explain about how we program the PIC to obtain the latitude and longitude from NMEA protocol output message. To do this, we need manipulate the programming using MPLAB IDE. Therefore, I would like share my experience about how to write these source code. Here are the summary from me:

1. First of all, we need to define the constant variable name for particular PIC ports at the beginning of the source code. Also, we need to include the important libraries that we need to used in the program. 

2. Next, we need to write a special function code for LCD so that we can call it easily whenever we want to initialize the LCD, display data in char or string, clear the LCD screen, and move the LCD cursor to specific location.

3. After that, we need to write also some special functions to initialize the PIC UART, receive or send data through UART. In addition, I write a function that specially used to cold reset the SKM53 by sending the command that was discussed earlier.

4. Then, we can start to write the main program code. Meanwhile, it starts with the declaration and initialization of the ports and some register flag. After that, we write the code to process the data send from SKM53 GPS. For me, I write the code for two mode which is normal mode and reset mode. For normal mode, it need to press SW to begin and start without cold reset the SKGPS-53. Meanwhile, for reset mode, it need to press SW1 to begin and start with sending the cold reset command to SKGPS-53. Then, I will write a loop to store a piece of received data from UART into an array variable, then I will write a loop also to check the content of array one by one to compare with the each character of protocol header accordingly such as ‘$’,’G’,’P’,’G’,’G’,’A’ or ‘$’,’G’,’P’,’G’,’L’,’L’, or ‘$’,’G’,’P’,’R’,’M’,’C’. If it is matched, I will display the data of latitude and longitude by increment the array content to the correct location and store these data on the LCD. 

*Note: The completed sample source code is attached at the end of this tutorial.



In a nutshell, by using SKM53 GPS module, we can actually view our current UTC time, date, latitude, longitude and so on. In further application, it can used to interface with our smartphone, microcontroller such as Arduino or PIC, and so forth to know our own location. Meanwhile, when we use it, we need to expose it to the sky to capture the stronger signal. As an example, if we in the home, we need to put the GPS module near the window to get the signal. Otherwise, we will not receive the signal by GPS antenna if we inside a closed window room. 



To download the completed sample source code, please click here.


Related Posts

Comments (13)

thanks mate really helped a lot

Thanks this article helps me alot 🙂

Thanks this article helps me alot 🙂
Allah Bless you ..

Assalam o Alikum

I am using skm53 gps for my project. i have interfaced the gps with microcontroller. gps data is send to the mobile. Prolem i am facing is that message received is not complete…… i mean message is discontinued with commas (,). kindly help me…if you have you can…

Is there any development or example codes for arduino? I’m currently working on a gps project. Hope you guys share information for arduino development in gps.

Thank you.

i tried to make that tutorial but after connecting the circuit the text appears ( INITIALIZING …… ) and there is no messages recieved from SKGPS 53 …. knowing that i’m using the same type of PIC and GPS and the same modules … where is the problem ??? if anyone know please reply

hello , i would like to ask , how do you get that skgps-53 in proteus . i didnt manage to get that .

Not every parts have module/icon in proteus. Sorry, we do not use Protues, so not sure how to help. But if you can get any GPS module in Protues, it should be the same.

Hi, please do continue the discussion in our technical forum, you can share the hardware setup.

Hi , Would you please tell us how to make the gps module enter sleep mode ??
Its urgent please

Hello, I´m working on a gps tracker actually using this skylab product but, trying to interface it with pic18f2550 and ccs c ompiler. I see you guys are using the SKGPS-53 card. my first question is about it, the card, is it really necesary to get the gps work? i mean, i just have the skm53 sensor. second, can i interface it with mini gps or gps tracer only using a ttl/rs232 converter in order to see the data via hyperterminal or another one? i just want to probe first that my sensor works before get frustruated :-). sorry for my english.

Nice work… Thank You…

Leave a comment