Promake GPS NEO-6M
Description
The ProMake GPS NEO-6M is a well-performing receiver which provides a strong satellite search capability. It carries the NEO Series GPS receiver module from u-blox. Thanks to the u-blox’s advanced algorithms it is a complete GPS solution that is suitable for both acquisition and tracking, which represents an ideal product for automotive, consumer, and industrial tracking applications.
Features
- Navigate down to –162 dBm and –148 dBm coldstart
- Configurable power management
- Hybrid GPS/SBAS engine (WAAS, EGNOS, MSAS)
- Anti-jamming technology
- UART communication
- LEDs for indicating the module operating status
Important Notes
Resource
Module Pinout
Software
Developement using Arduino
To set up the hardware, you can easily plug this module into:
Module3
slot of your ProMake® Arduino Nano Kit
or
Module2
slot of your ProMake® Arduino Uno Shield
or
- Use your breadboard to connect the Power and UART lines.
To start coding you need to install:
- Arduiniana - TinyGPSPlus
- "NeoSWSerial" (by SlashDevin)
in your Arduino® IDE. Then use the code below to program the Arduino and open the "Serial Monitor" to see the readings:
#include <TinyGPSPlus.h>
#include <NeoSWSerial.h>
/*
#define GPS_TX_PIN 4
#define GPS_RX_PIN 7
#define GPS_RST_PIN 8
*/
#define GPS_TX_PIN 4
#define GPS_RX_PIN 5
#define GPS_RST_PIN 14
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
NeoSWSerial GPS_Serial(GPS_TX_PIN,GPS_RX_PIN);
void setup() {
pinMode(GPS_RST_PIN,OUTPUT);
//GSM start
digitalWrite(GPS_RST_PIN,LOW);
delay(1000);
digitalWrite(GPS_RST_PIN,HIGH);
Serial.begin(9600);
GPS_Serial.begin(9600);
}
void loop() {
// This sketch displays information every time a new sentence is correctly encoded.
while (GPS_Serial.available() > 0)
if (gps.encode(GPS_Serial.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
}
void displayInfo()
{
Serial.print(F("Location: "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid())
{
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
}
else
{
Serial.print(F("INVALID"));
}
Serial.println();
}