
What is the L89HA Multi-GNSS Breakout Module?
So, what exactly sets the L89HA breakout module apart from the sea of other location sensors? In a word: options.
Think of it not just as a GPS receiver, but as a global navigator that can listen to multiple satellite systems at the same time. This is what we call a multi-constellation GNSS receiver.
While a standard GPS module only communicates with the US-based Global Positioning System, the L89HA can simultaneously track:Β
- GPS (USA)Β
- GLONASS (Russia)Β
- BeiDou (China)Β
- Galileo (Europe)Β
- QZSS (Japan)Β
This is a huge advantage. By having more satellites to talk to, the module can get a location fix (known as Time to First Fix, or TTFF) significantly faster and maintain a more stable and accurate signal, even in environments where the sky is partially obstructed.Β
But hereβs a feature that particularly stands out, especially for users in and around India: its native IRNSS support.
IRNSS (Indian Regional Navigation Satellite System), also known as NavIC, provides highly accurate positioning for the Indian subcontinent. Having a module that supports it out of the box is a fantastic bonus.Β
The breakout board itself is designed for convenience. It takes the tiny L89HA module and places it on a PCB with all the necessary support circuitry.
You get clearly labeled pins for power and communication, and usually a U.FL connector for an external active antenna, which is crucial for getting the best possible signal.
For any maker looking for a serious GNSS module for Arduino, the L89HA is a top-tier contender that promises professional-grade performance in a hobbyist-friendly package.Β
List of Components
Alright, let's get our hands dirty. The best way to understand a component is to build something with it.
This part of the walkthrough is a detailed guide to creating a functional L89HA Arduino Interface. We'll go from a pile of parts to a working system that prints your real-time coordinates.Β
What You'll NeedΒ
First, let's gather our tools. Thereβs nothing fancy required here, just some standard components from the maker toolkit.Β
- Arduino Board: An Arduino Uno, Nano, or any similar microcontroller will work perfectly. Iβll be using an Uno for this guide.Β
- L89HA Multi-GNSS Breakout Module: The star of our show.Β
- GNSS Antenna: Most L89HA breakouts require an external active antenna. Make sure you have one with the correct connector (usually U.FL or SMA).Β
- Breadboard and Jumper Wires: For creating our circuit without any soldering.Β
- Arduino IDE: Ensure you have the latest version installed on your computer.Β
Circuit Diagram for Interfacing L89HA Breakout Module with Arduino

The connection between the Arduino and the L89HA is surprisingly straightforward. We'll use a serial connection to receive data from the module.
The module continuously sends out location information, and our Arduino just needs to listen in.Β
The communication happens over a protocol called UART. The key is to connect the transmitter (TX) of the module to the receiver (RX) of the Arduino, and vice versa.
However, to keep the Arduino's main hardware serial port free for uploading code and printing debug messages, we'll use the SoftwareSerial library to create a second, virtual serial port on other digital pins.Β
The CodeΒ
With the hardware wired up, it's time for the software. The L89HA outputs data in a standard format called NMEA sentences. These are comma-separated text strings that look a bit cryptic at first, like this:Β
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47Β
While you could write code to parse these NMEA sentences manually, thereβs a much easier way.Β We'll use a fantastic library called TinyGPS++.
This library does all the heavy lifting, converting the raw NMEA data into easy-to-use variables for latitude, longitude, speed, altitude, and more.
It turns a complex task into just a few lines of code, making this Arduino GPS tutorial section a breeze.Β
1. Install the Library:
Before we start coding, open the Arduino IDE, go to Sketch > Include Library > Manage Libraries, and search for "TinyGPSPlus". Install the library by Mikal Hart.Β
2. The Arduino Sketch:
Now, copy and paste the following code into a new sketch in your Arduino IDE. This sketch sets up the Arduino GNSS system, listens for data from the L89HA, and prints the parsed information to the Serial Monitor.
#include
#include
// The serial connection to the L89HA module
static const int RXPin = 10, TXPin = 11;
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object that parses the NMEA data
TinyGPSPlus gps;
// The software serial port
SoftwareSerial ss(RXPin, TXPin);
void setup() {
// Start the hardware serial port for debugging
Serial.begin(9600);
// Start the software serial port for the L89HA
ss.begin(GPSBaud);
Serial.println("L89HA GNSS Reader");
Serial.println("-----------------");
Serial.println("Waiting for satellite fix...");
}
void loop() {
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0) {
if (gps.encode(ss.read())) {
displayInfo();
}
}
// If no GPS data is received for 5 seconds, check for a wiring issue.
if (millis() > 5000 && gps.charsProcessed() < 10) {
Serial.println("No GPS data received: check wiring.");
while(true);
}
}
void displayInfo() {
Serial.print("Location: ");
if (gps.location.isValid()) {
Serial.print(gps.location.lat(), 6);
Serial.print(",");
Serial.print(gps.location.lng(), 6);
} else {
Serial.print("INVALID");
}
Serial.print(" Date/Time: ");
if (gps.date.isValid() && gps.time.isValid()) {
Serial.print(gps.date.month());
Serial.print("/");
Serial.print(gps.date.day());
Serial.print("/");
Serial.print(gps.date.year());
Serial.print(" ");
if (gps.time.hour() < 10) Serial.print("0");
Serial.print(gps.time.hour());
Serial.print(":");
if (gps.time.minute() < 10) Serial.print("0");
Serial.print(gps.time.minute());
Serial.print(":");
if (gps.time.second() < 10) Serial.print("0");
Serial.print(gps.time.second());
} else {
Serial.print("INVALID");
}
Serial.print(" Satellites: ");
if (gps.satellites.isValid()) {
Serial.print(gps.satellites.value());
} else {
Serial.print("INVALID");
}
Serial.println();
}
Project Ideas
Now that you have a working GPS system, the possibilities are endless. This setup forms the foundation for countless exciting Arduino projects:Β
- Vehicle Tracker: Log the location data to an SD card or transmit it over the internet to build your own Arduino location tracking device.Β
- GPS-Synchronized Clock: Use the hyper-accurate time data from the satellites to build a clock that never needs setting.Β
- Geocaching Device: Create a handheld gadget that guides you to specific GPS coordinates.Β
- Weather Balloon Tracker: Equip a high-altitude balloon with this setup to track its flight path.Β
ConclusionΒ
After spending time with the L89HA, I can confidently say it lives up to the hype. It transforms what used to be a finicky part of a project into a reliable, powerful, and easy-to-use asset.
The days of waiting anxiously for a GPS lock are over. The module's multi-constellation support provides a fast, stable, and accurate position that opens up a new world of possibilities for our Arduino creations.Β
Weβve walked through the entire process, from understanding what makes the L89HA special to the nuts and bolts of the wiring and the elegance of the TinyGPS++ library.
The barrier to entry for adding high-quality location awareness to your projects has never been lower.Β
So, what will you build? Whether youβre creating a simple tracker or a complex autonomous vehicle, the L89HA module provides the robust positioning data you need.
I hope this guide has demystified the process and inspired you to integrate this incredible technology into your next project.