Integrated GPS Module with uBlox MAX M8 and Ceramic Patch Antenna
Our cutting-edge integrated GPS module, equipped with the uBlox MAX M8W GPS module, brings exceptional GPS performance to your projects. Featuring an on-board ceramic patch antenna, an 18 dB low-noise amplifier (LNA), and a SAW filter, this module ensures high signal quality and accuracy. It seamlessly connects to any iLabs product via the BSerial-04 interface, eliminating the need for an external power supply.
For added flexibility, a dedicated connector on the module allows for a backup battery connection, significantly reducing startup times. Whether you’re integrating it into portable applications or requiring fast GPS readiness, this module is designed to meet your needs with top-tier performance and effortless connectivity.
What is BSerial ?
BSerial is a part of iLabs concept (BConnect that spans over Bi2C, BSerial and BSpi) of connecting devices together using a small Flexible Flat Cable (FFC) and an FFC connector. It is similar to the Bi2C concept but we have replaced the electrical I2C interface with a asynchronous serial channel instead. You can read more about it here.
Connecting the module to your system takes only seconds and gives you instant GPS functionality. As soon as it is connected the module will start to transmit serial data containing location data.
Example
Here’s a short Arduino example showing one way of handling the GPS data but there are many more libraries available that is compatible with the on board uBlox MAX-M8 GPS module.
/*
* This example demonstrates how to use the 107-Arduino-NMEA library
* to parse the incoming NMEA messages and make use of the extracted
* information.
*
/**************************************************************************************
* INCLUDE
**************************************************************************************/
#include <ArduinoNmeaParser.h>
/**************************************************************************************
* FUNCTION DECLARATION
**************************************************************************************/
void onRmcUpdate(nmea::RmcData const);
void onGgaUpdate(nmea::GgaData const);
/**************************************************************************************
* GLOBAL VARIABLES
**************************************************************************************/
ArduinoNmeaParser parser(onRmcUpdate, onGgaUpdate);
/**************************************************************************************
* SETUP/LOOP
**************************************************************************************/
void setup()
{
while (!Serial)
delay(10);
Serial.println("Starting BSerial test program !");
/* Remaps Serial2 to the BConnect (BSerial) connector */
Serial2.setTX(20);
Serial2.setRX(21);
Serial.begin(115200);
Serial2.begin(9600);
Serial.println("Setup done !");
}
void loop()
{
while (Serial2.available()) {
parser.encode((char)Serial2.read());
}
}
/**************************************************************************************
* FUNCTION DEFINITION
**************************************************************************************/
void onRmcUpdate(nmea::RmcData const rmc)
{
Serial.print("RMC ");
if (rmc.source == nmea::RmcSource::GPS) Serial.print("GPS");
else if (rmc.source == nmea::RmcSource::GLONASS) Serial.print("GLONASS");
else if (rmc.source == nmea::RmcSource::Galileo) Serial.print("Galileo");
else if (rmc.source == nmea::RmcSource::GNSS) Serial.print("GNSS");
else if (rmc.source == nmea::RmcSource::BDS) Serial.print("BDS");
Serial.print(" ");
Serial.print(rmc.time_utc.hour);
Serial.print(":");
Serial.print(rmc.time_utc.minute);69
Serial.print(":");
Serial.print(rmc.time_utc.second);
Serial.print(".");
Serial.print(rmc.time_utc.microsecond);
if (rmc.is_valid)
{
Serial.print(" : LON ");
Serial.print(rmc.longitude);
Serial.print(" ° | LAT ");
Serial.print(rmc.latitude);
Serial.print(" ° | VEL ");
Serial.print(rmc.speed);
Serial.print(" m/s | HEADING ");
Serial.print(rmc.course);
Serial.print(" °");
}
Serial.println();
}
void onGgaUpdate(nmea::GgaData const gga)
{
Serial.print("GGA ");
if (gga.source == nmea::GgaSource::GPS) Serial.print("GPS");
else if (gga.source == nmea::GgaSource::GLONASS) Serial.print("GLONASS");
else if (gga.source == nmea::GgaSource::Galileo) Serial.print("Galileo");
else if (gga.source == nmea::GgaSource::GNSS) Serial.print("GNSS");
else if (gga.source == nmea::GgaSource::BDS) Serial.print("BDS");
Serial.print(" ");
Serial.print(gga.time_utc.hour);
Serial.print(":");
Serial.print(gga.time_utc.minute);
Serial.print(":");
Serial.print(gga.time_utc.second);
Serial.print(".");
Serial.print(gga.time_utc.microsecond);
if (gga.fix_quality != nmea::FixQuality::Invalid)
{
Serial.print(" : LON ");
Serial.print(gga.longitude,6);
Serial.print(" ° | LAT ");
Serial.print(gga.latitude,6);
Serial.print(" ° | Num Sat. ");
Serial.print(gga.num_satellites);
Serial.print(" | HDOP = ");
Serial.print(gga.hdop);
Serial.print(" m | Altitude ");
Serial.print(gga.altitude);
Serial.print(" m | Geoidal Separation ");
Serial.print(gga.geoidal_separation);
Serial.print(" m");
}
Serial.println();
}
Reviews
There are no reviews yet.