Skylab GPS Module MT3329 SKM53 w/ Embedded GPS Antenna Arduino Compatible

Description:

Skylab GPS Module MT3329 SKM53 w/ Embedded GPS Antenna Arduino Compatible

SKM53 Series with embedded GPS antenna.It is based on MediaTek3329 single-chip architecture.SKM53 can be applied in a portable device and receiver like PND, GPS mouse, car holder, personal locator, speed camera detector and vehicle locator.

Features
- Ultra high sensitivity: -165dBm
- 22 tracking/66 acquisition-channel receiver
- WAAS/EGNOS/MSAS/GAGAN support
- NMEA protocols (default speed: 9600bps)
- Internal back-up battery and 1PPS output
- One serial port and USB port (option)
- Embedded patch antenna 18.2 x 18.2 x 4.0 mm
- Operating temperature range: -40 to 85
- RoHS compliant (Lead-free)
- Tiny form factor 30mm x20mm x 11.4mm

Specifications:

Receiver Type

L1 frequency band, C/A code

22 Tracking / 66 Acquisition-Channel

Sensitivity

Tracking

Acquisition

-165dBm

-148dBm

Accuracy

Position

Velocity

Timing (PPS)

3m 3D RMS without SA

0.1m/s without SA

60ns RMS

Acquisition Time

Cold Start

Warm Start

Hot Start

Re-Acquisition

36s

33s

1s

<1s

Power Consumption

Tracking

Acquisition

Sleep/Standby

<30mA 3V Vcc

40mA

TBD

Navigation Data Update Rate

1Hz

Operational Limits

Altitude

Velocity

Acceleration

Max 18,000m

Max 515m/s

Less than 4g

Antenna Specifications

OutlineDimension

Center Frequency

Bandwidth

Impedance

Axial Ratio

Polarization

18.2 x 18.2 x 4.0 mm

1575 3 MHz

10 MHz min

50

3 dB max

RHCP

Mechanical requirements

Dimension

Weight

30mm x20mm x 11.4mm

9g

Power consumption

VCC

Current

5V 5%

55mA(typical)

Environment

Operating temperature

Storage temperature

Humidity

40 ~ +85 (w/o backup battery)

0 ~ +125




This tutorial is about interfacing GPS(global positioning system) with arduino. I am going to interface skylab SKM53 GPS module with arduino uno. I will acquire the current coordinates(longitude and latitude), date and time and then display them on arduino serial monitor. This is basic tutorial on interfacing gps module with arduino, after it i will make some cool applications like vehicle navigation system, objects tracking over web/google maps using gps coordinates, timing applications by acquiring current date and time using gps module.

About Skm53 GPS Module

Skm53 gps module works properly when it is fully exposed to sky. For indoor applications skm53 gps module is not suitable. The useful data skm53 gps module can output is latitude and longitude, current date and time, speed if the gps module carrying object is moving. Skm53 works on UART serial interface(TTL). It operates at +5v power supply.

Skm53 outputs data as NMEA-0183 (National Marine Electronics Association) protocol. NMEA protocol outputs data against some commands such as GGA, GLL, GSA, GSV, RMC, VTG, ZDA and DTM. The module has its default NMEA-0183 factory output setting which is only GGA, GSA ,GSV, and RMC are operational and baud rate is set to 9600 bps.

NMEA commands and their functions

NMEA Commands

NMEA Commands

​The output data by NMEA commands starts with $ sign and ends with carriage end line feed back. To learn about how to change the module baud rate, settings, commands their structure and how to enable and disable them? visit the link below.

Decoding NMEA commands OR getting data from commands output

To decode the output of NMEA statements a very complex program is required. Thanks to the unknown geeks which already developed a library(TinyGPS) compatible with arduino ide. The library TinyGPS can decode these NMEA statements and provide us with our desired information.

Arduino GPS module interface circuit diagram

Project circuit diagram is given below. Please note that arduino pin#2 and 3 are used for serial communication/interfacing with the skm53 gps module. This is because the pins 0 and 1 which are default arduino uart port is shared with the pc/laptop. So the default port is used to send data to pc/laptop for displaying on arduino serial monitor and pins 2 and 3 are used to communicate with gps module. I used softserial library to make arduino pins 2 and 3 as virtual uart port.
Skm53 Gps Module with Arduino

Skm53 Gps Module with Arduino

I powered the skm53 gps module with arduino +5v output. Some people said that this configuration doesn’t worked fro them. So i recommend to power the skm53 module with an external +5 volt power supply and connect arduino and external supply ground with each other for successful uart serial communication. 

Kit include:

1 x Skm53 GPS Module

Mikroelectron Code:


//Property off: www.microcontroller-project.com *
//Written by : Usman Ali Butt *
//Dated : 11/6/2017 *
//*********************************************************
#include <TinyGPS.h>
#include <SoftwareSerial.h>
SoftwareSerial GPS(2,3); //RX, TX
//I used softserial because pins 0, and 1 are for
//communicating with pc/laptop
TinyGPS gps;
void gpsdump(TinyGPS &gps);
unsigned long fix_age;
bool feedgps();
void getGPS();
long lat, lon;
float LAT, LON;
void setup(){
GPS.begin(9600); //GPS baud rate 9600 bps
Serial.begin(115200); //Pc/Laptop to Arduino communication at 115200 bps
}
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(&lat, &lon, &fix_age);
// time in hh:mm:ss, date in dd/mm/yy
gps.get_datetime(&date, &time, &fix_age);
int year = date % 100;
int month = (date / 100) % 100;
int day = date / 10000;
int hour = time / 1000000;
int minute = (time / 10000) % 100;
int 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("Latitude : ");
Serial.print(LAT/100000,7);
Serial.print(" :: Longitude : ");
Serial.println(LON/100000,7);
}
void getGPS(){
bool newdata = false;
unsigned long start = millis();
// Every 1 seconds we print an update
while (millis() - start < 1000)
{
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 &gps)
{
//byte month, day, hour, minute, second, hundredths;
gps.get_position(&lat, &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
}
}

22 JD
Quantity
3 in stock
22 JD 1+ units
20.9 JD 10+ units
19.8 JD 25+ units
18.7 JD 100+ units



Related Products

subscribe to our weekly newsletter

loading