Promake GPS L86
Description
The ProMake GPS L86 is a POT (patch antenna on top) GNSS module with 99 acquisition channels and 33 tracking channels. The L86 combines EASY™ (Embedded Assist System for self-generated orbit prediction) with LOCUS™ (internal logger) and AlwaysLocate™ to achieve excellent accuracy with low power consumption.
The ultra-compact design and low power demands, combined with its excellent precision and high sensitivity, makes the module suitable for a broad range of IoT applications such as portable devices, vehicles, asset tracking, security and industrial PDAs.
Features
- POT (patch antenna on top) GNSS module
- 99 acquisition channels and 33 tracking channels
- Ultra-low power consumption in tracking mode (26mA)
- Supports SBAS (WAAS/EGNOS/MSAS/GAGAN)
- High sensitivity: -167dBm during tracking, -149dBm during acquisition
- 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();
}