BN-220 3.0 V-5.0 V Level TTL, GNSS Module, M8030, NEO-M8N GPS GLONASS Dual Module GPS Antenna, Built

Fr24,850

This BN-220 GPS has u-blox M8030-KT chip. It support 4800bps to 921600bps, but default baud rate is 9600bps .Its data level is TTL or RS-232,but default is TTL level. To make it be RS232 output, you need to use one TTL to RS232 converter cable.The BN-220 GPS has flash, so you can save its configuration. When you use it for Raspberry Pi, there is no driver needed.

In stock

SKU: WRL8252 Category:

Description

This BN-220 GPS has u-blox M8030-KT chip. It support 4800bps to 921600bps, but default baud rate is 9600bps .Its data level is TTL or RS-232,but default is TTL level. To make it be RS232 output, you need to use one TTL to RS232 converter cable.The BN-220 GPS has flash, so you can save its configuration. When you use it for Raspberry Pi, there is no driver needed.

Specification

here is Datasheet

  • Dimension : 22mm*20mm*6mm
  • Module Weight : 5.3g
  • Connector : 1.00mm spacing between the 4pins patch seat

Electrical Characteristics

  • Chipset: u-blox M8030-KT
  • Receiving Format:GPS, GLONASS, Galileo, BeiDou, QZSS and SBAS
  • Frequency: GPS L1, GLONASS L1, BeiDou B1, SBAS L1, Galileo E1
  • Channels: 72 Searching Channel

Sensitivity:

  • Tracking: -167dBm
  • Reacquisition: -160dBm
  • Cold start: -148dBm
  • Hot start: -156dBm

Accuracy:

  • Position Horizontal: 2.0 m CEP 2D RMS SBAS Enable (Typical Open Sky)
  • Velocity: 0.1m/sec 95% (SA off)
  • Timing: 1us synchronized to GPS time

Acquisition Time:

  • Cold Start : 26s
  • Warm start : 25s
  • Hot start : 1s

Data and Update Rate:

  • Support Rate: 4800bps to 921600bps,Default 9600bps
  • Data Level: TTL or RS-232,Default TTL level
  • Data Protocol: NMEA-0183 or UBX, Default NMEA-0183
  • Single GNSS: 1Hz-18Hz
  • Concurrent GNSS: 1Hz-10Hz,Default 1Hz

Operational Limits:

  • Altitude: 50,000m Max
  • Velocity: 515m/s Max
  • Acceleration: Less than 4g

Power consumption

  • VCC: DC Voltage 3.0V-5.5V,Typical: 5.0V
  • Current: Capture 50mA/5.0V
  • Operating temp: -40 °C ~ +85°C
  • Storage Temp: -40°C ~ +105°C

Wiring:

GND ,TX output ,RX input ,VCC (3.0v-5.5v)

Getting started with the BN-220 3.0 V-5.0 V level TTL, GNSS module, M8030, NEO-M8N GPS GLONASS dual module GPS antenna, built-in flash 

We’re going to look at how GPS can show us longitude and latitude coordinate of our current locations.

 Hardware required

 Connecting the Hardware

  • 1 GND (Black)-> GND
  • 2 Rx (White) -> D4 (of Arduino)
  • 3 Tx (Green) -> D3 (of Arduino)
  • 4 VCC (Red)-> 5v or 3.3V

Installing a library: TinyGPSplus

Before uploading the sample sketch you need to have the TinyGPSplus  library. This can be found in Manage Libraries. You can visit here to see how you can add your library.

Upload the sample sketch

You can go in examples and find FullExample to sketch. Change line 9 like this:

static const uint32_t GPSBaud = 9600;

Upload the codes and change the baud rate of the Serial monitor to 115200. The codes should look like this:

#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
/*
This sample code demonstrates the normal use of a TinyGPSPlus (TinyGPSPlus) object.
It requires the use of SoftwareSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;

// The TinyGPSPlus object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);

Serial.println(F("FullExample.ino"));
Serial.println(F("An extensive example of many interesting TinyGPSPlus features"));
Serial.print(F("Testing TinyGPSPlus library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
Serial.println(F("Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum"));
Serial.println(F(" (deg) (deg) Age Age (m) --- from GPS ---- ---- to London ---- RX RX Fail"));
Serial.println(F("----------------------------------------------------------------------------------------------------------------------------------------"));
}

void loop()
{
static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;

printInt(gps.satellites.value(), gps.satellites.isValid(), 5);
printFloat(gps.hdop.hdop(), gps.hdop.isValid(), 6, 1);
printFloat(gps.location.lat(), gps.location.isValid(), 11, 6);
printFloat(gps.location.lng(), gps.location.isValid(), 12, 6);
printInt(gps.location.age(), gps.location.isValid(), 5);
printDateTime(gps.date, gps.time);
printFloat(gps.altitude.meters(), gps.altitude.isValid(), 7, 2);
printFloat(gps.course.deg(), gps.course.isValid(), 7, 2);
printFloat(gps.speed.kmph(), gps.speed.isValid(), 6, 2);
printStr(gps.course.isValid() ? TinyGPSPlus::cardinal(gps.course.deg()) : "*** ", 6);

unsigned long distanceKmToLondon =
(unsigned long)TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
LONDON_LAT, 
LONDON_LON) / 1000;
printInt(distanceKmToLondon, gps.location.isValid(), 9);

double courseToLondon =
TinyGPSPlus::courseTo(
gps.location.lat(),
gps.location.lng(),
LONDON_LAT, 
LONDON_LON);

printFloat(courseToLondon, gps.location.isValid(), 7, 2);

const char *cardinalToLondon = TinyGPSPlus::cardinal(courseToLondon);

printStr(gps.location.isValid() ? cardinalToLondon : "*** ", 6);

printInt(gps.charsProcessed(), true, 6);
printInt(gps.sentencesWithFix(), true, 10);
printInt(gps.failedChecksum(), true, 9);
Serial.println();

smartDelay(1000);

if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}

// This custom version of delay() ensures that the gps object
// is being "fed".
static void smartDelay(unsigned long ms)
{
unsigned long start = millis();
do 
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}

static void printFloat(float val, bool valid, int len, int prec)
{
if (!valid)
{
while (len-- > 1)
Serial.print('*');
Serial.print(' ');
}
else
{
Serial.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
Serial.print(' ');
}
smartDelay(0);
}

static void printInt(unsigned long val, bool valid, int len)
{
char sz[32] = "*****************";
if (valid)
sprintf(sz, "%ld", val);
sz[len] = 0;
for (int i=strlen(sz); i<len; ++i)
sz[i] = ' ';
if (len > 0) 
sz[len-1] = ' ';
Serial.print(sz);
smartDelay(0);
}

static void printDateTime(TinyGPSDate &d, TinyGPSTime &t)
{
if (!d.isValid())
{
Serial.print(F("********** "));
}
else
{
char sz[32];
sprintf(sz, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
Serial.print(sz);
}

if (!t.isValid())
{
Serial.print(F("******** "));
}
else
{
char sz[32];
sprintf(sz, "%02d:%02d:%02d ", t.hour(), t.minute(), t.second());
Serial.print(sz);
}

printInt(d.age(), d.isValid(), 5);
smartDelay(0);
}

static void printStr(const char *str, int len)
{
int slen = strlen(str);
for (int i=0; i<len; ++i)
Serial.print(i<slen ? str[i] : ' ');
smartDelay(0);
}

Before uploading the program , Tx and Rx of arduino and GPS must be disconnected then Upload the program and open up the serial monitor from the Arduino IDE. You can now see the coordinates (Longitude ,Latitude) of the place you are.

Indicator :

Tx Blue: LED flashing-> The data output
PPS Red: PPS LED not blinking ->when GPS not fixed (Wait to get connected), flashing when fixed
RESULT
Open serial monitor ,you can now see the coordinate (Longitude,Latitude) of the place you are.

It’s now you time to customize according to your wish.

Package includes:
1×BN-220 GPS Module 
2×Pack of 4pcs Jumper Cable
1×Sticker