Introduction
-
SparkFun RTK Postcard
SKU: GPS-26916
-
Designed and manufactured in Boulder, CO USA, the SparkFun RTK Postcard is a compact development board for your high-precision positioning and navigation needs. This board combines the Quectel LG290P GNSS RTK receiver with an Espressif ESP32-PICO-MINI-02 MCU module, running our latest RTK Everywhere firmware. The ESP32 provides the SparkFun Postcard with WiFi and Bluetooth™ connectivity to operate as an NTRIP caster or client. Meanwhile, the 4-pin locking JST-GH connector allows users to transmit or receive RTCMv3 messages for RTK corrections from a local base station.
-
The LG290P module is a quad-band, multi-constellation, high-precision, RTK GNSS receiver. The module can simultaneously receive signals from the
L1
,L2
,L5
, andL6
/E6
frequency bands of the GPS, GLONASS, Galileo, BDS, QZSS, and NavIC GNSS constellations. In addition, the module supports SBAS augmentation systems (WASS, EGNOS, BDSBAS, MSAS, GAGAN, and SDCM), PPP services2 (BDS PPP-B2b, QZSS CLAS, MADOCA-PPP, and Galileo HAS), RTCM, and RTK corrections for precision navigation with a fast convergence time and reliable performance. Connect with ease using a variety of interfaces, including UART, SPI1, and I2C1. -
The ESP32-PICO-MINI-02 is a powerful MCU module with WiFi, Bluetooth™, and BLE connectivity and comes integrated with 8MB SPI flash, 2MB SPI Pseudo static RAM (PSRAM), and a 40 MHz crystal oscillator. The ESP32 microcontroller itself features two CPU cores that can be individually controlled, with an adjustable clock frequency between 80 - 240MHz and a low-power co-processor for minor tasks, such as monitoring peripherals. It supports a range of peripherals including an SD card interface, capacitive touch sensors, ADC, DAC, Two-Wire Automotive Interface (TWAI), Ethernet, high-speed SPI, UART, I2S, I2C, etc.
With the RTK Everywhere firmware that comes pre-loaded, users can seamlessly operate the RTK Postcard as a base station or rover. These modes also offer additional functions, based on the available, wireless communication options:
- The RTK Postcard can transmit or receive RTCMv3 messages locally by connecting one of our SiK Telemetry radios.
- Through WiFi or Bluetooth™, the RTK Postcard can also function as an NTRIP caster or client.
- The RTK Postcard can transmit NMEA messages to a graphical information software (GIS) apps on any mobile device when paired as a Bluetooth™ device.
In addition to the RTK Postcard, we created the Portability Shield for the convenience of users. Simply connecting these products, provides a 1.3” OLED display and a five-way button to navigate the configuration settings and display PNT data; a microSD card slot for data logging; and a LiPo battery charger with a fuel gauge to take the RTK Postcard "on-the-go". All of these will operate plug-and-play without the need for new code.
Info
The RTK Everywhere firmware is open-source, so users can obtain, check, and even modify the device's functionality. This allows for easier feature expansion, bug maintenance, and longer device longevity.
-
Features Under Development
- I2C/SPI - Currently, only the UART interface is supported by the module.
- PPP Services - Corrections for some of the PPP services have not been implemented.
Required Materials
To get started, users will need a few items. Some users may already have a few of these items, feel free to adjust accordingly.
- Computer and/or mobile device that is compatible with the operation of the RTK Everywhere firmware
- USB 3.1 Cable A to C - 3 Foot - Used to power/interface with the SparkFun RTK Postcard (1)
- SparkFun RTK Postcard
- GNSS Multi-Band Antenna
- If your computer doesn't have a USB-A slot, then choose an appropriate cable or adapter.
Recommended Accessories
These products are recommended at minimum for users to get started with the Portability Shield and RTK Everywhere firmware.
Soldering Equipment
To add headers for the Portability Shield, users will need soldering equipment.
New to soldering?
Check out our How to Solder: Through-Hole Soldering tutorial for a quick introduction!
GNSS Antennas & Accessories
For the best performance, we recommend users choose an active, multi-band GNSS antenna and utilize a low-loss cable. For additional options, please check out the GPS Antenna category of our product catalog.
Serial Transceivers, UART Adapters, and USB Cables
To configure the UART ports that are broken out on the board, users will need a UART adapter. Once configured, the UART ports can utilize one of our RF transceivers to send/receive RTCM messages.
Shields, Headers, and Wiring
To add headers or wiring, users will need soldering equipment and headers/wires.
New to soldering?
Check out our How to Solder: Through-Hole Soldering tutorial for a quick introduction!
Batteries
When using the Portability Shield, users can attach a single-cell LiPo battery to turn the boards into a mobile device.
Minimum Requirements
While users could probably discharge their LiPo batteries down to the maximum threshold of the battery's UVLO at 2.8V, the LG290P GNSS receiver and ESP32 MCU will discontinue operating, long before that can occur. We have found that the LG290P will begin to brown-out around 3.05-3.15V and the ESP32 will stop operating around 2.85-2.90V.
Therefore, users also won't be able to power this device with two 1.5V alkaline batteries (in series). They will require a minimum of three batteries to maintain an operational voltage, above 3. 15V.
The discharge rate of most single-cell batteries is 1C, unless specified otherwise.
Example
That means that the maximum current that can be expected from a battery is equal its capacity/hr. For instance, a 400mAh battery can be expected to handle a current draw of 400mA, at maximum.
-
Lithium Ion Battery - 400mAh
PRT-13851 -
Lithium Ion Battery - 850mAh
PRT-13854 -
Lithium Ion Battery - 1250mAh (IEC62133 Certified)
PRT-18286 -
Lithium Ion Battery - 1500mAh (IEC62133 Certified)
PRT-26059 -
Lithium Ion Battery - 2Ah
PRT-13855 -
Lithium Ion Battery - 6Ah
PRT-13856 -
Battery Holder 3xAA with Cover and Switch - JST Connector
PRT-18769
Qwiic Devices and Cables
Our Qwiic connect system is a simple solution for daisy chaining I2C devices without the hassle of soldering or checking wire connections. Check out other Qwiic devices from our catalog.
-
SparkFun Qwiic OLED - (1.3in., 128x64)
LCD-23453 -
SparkFun Qwiic Navigation Switch
PRT-27576 -
SparkFun Qwiic Directional Pad
PRT-26851 -
SparkFun Qwiic Cable Kit
KIT-15081 -
Qwiic Cable - Grove Adapter (100mm)
PRT-15109 -
SparkFun Micro Pressure Sensor - BMP384 (Qwiic)
SEN-19833 -
SparkFun Qwiic Button - Green LED
BOB-16842
What is Qwiic?
The Qwiic connect system is a solderless, polarized connection system that allows users to seamlessly daisy chain I2C boards together. Play the video, to learn more about the Qwiic connect system or click on the banner above to learn more about Qwiic products.
Features of the Qwiic System
Qwiic cables (4-pin JST) plug easily from development boards to sensors, shields, accessory boards and more, making easy work of setting up a new prototype.
There's no need to worry about accidentally swapping the SDA
and SCL
wires on your breadboard. The Qwiic connector is polarized so you know you’ll have it wired correctly every time.
The part numbers for the PCB connector is SM04B-SRSS
(Datasheet) and the mating connector on the cables is SHR04V-S-B
; or an equivalent 1mm pitch, 4-pin JST connection.
It’s time to leverage the power of the I2C bus! Most Qwiic boards will have two or more connectors on them, allowing multiple devices to be connected.
Jumper Modification
To modify the jumpers, users will need soldering equipment and/or a hobby knife.
New to jumper pads?
Check out our Jumper Pads and PCB Traces Tutorial for a quick introduction!
Suggested Reading
As a more sophisticated product, we will skip over the more fundamental tutorials (i.e. Ohm's Law and What is Electricity?). However, below are a few tutorials that may help users familiarize themselves with various aspects of the board.
Tip
Check out the www.gps.gov website to learn more about the U.S.-owned Global Positioning System (GPS) and the Global Navigation Satellite Systems (GNSS) of other countries.
-
GPS Basics
-
What is GPS RTK?
-
Quadband GNSS RTK Breakout - LG290P (Qwiic) Hookup Guide
-
Portability Shield Hookup Guide
-
RTK Everywhere Firmware
-
Logic Levels
-
Serial Communication
-
Serial Terminal Basics
-
I2C
-
SPI
-
How to Power a Project
-
How to Solder: Through-Hole Soldering
-
How to Work with Jumper Pads and PCB Traces
Related Blog Posts
Additionally, users may be interested in these blog post articles on GNSS technologies:
Hardware Overview
Design Files
The SparkFun RTK Postcard board's dimensions, pin layout, and connectors are similar to our very popular SparkFun GPS-RTK-SMA Breakout - ZED-F9P (Qwiic) and SparkFun Quadband GNSS RTK Breakout - LG290P (Qwiic). The board features multiple UART ports, which are accessible through the USB-C connector, PTH pins, and 4-pin locking JST connector. Users can also interface with the board through the 19 PTH pins that are broken out around the edge of the board. For the GNSS antenna, an SMA antenna connector is provided on the edge of the board; additionally, users can rework the board to utilize the u.fl connector instead. We also provide two 4-pin JST Qwiic connectors for future use, to operate the board as a peripheral device.
-
Design Files
- Schematic
- KiCad Files
- STEP Files
- Board Dimensions:
- 1.70" x 1.70" (43.2mm x 43.2mm)
- Four mounting holes:
- 4-40 screw compatible
-
RTK Postcard
Enclosure
Manipulate 3D Model
Controls Mouse Touchscreen Zoom Scroll Wheel 2-Finger Pinch Rotate Left-Click & Drag 1-Finger Drag Move/Translate Right-Click & Drag 2-Finger Drag Dimensions of the RTK Postcard. Need more measurements?
For more information about the board's dimensions, users can download the KiCad files for this board. These files can be opened in KiCad and additional measurements can be made with the measuring tool.
KiCad - Free Download!
KiCad is free, open-source CAD program for electronics. Click on the button below to download their software. (*Users can find out more information about KiCad from their website.)
Download Measuring Tool
This video demonstrates how to utilize the dimensions tool in KiCad, to include additional measurements:
USB-C Connector
The USB connector is provided to power the board and communicate with either the LG290P GNSS receiver or ESP32 microcontroller. For most users, it will be the primary method for interfacing with the RL Postcard.
CH342 Dual UART Converter
The CH342 serial-to-USB converter allows users to interface with the UART1
port of the LG290P GNSS module and UART0
port of the ESP32-Pico module through the USB-C connector. To utilize the CH342, users may need to install a USB driver, which can be downloaded from the manufacturer website.
Tip - USB Drivers
Linux
A USB driver is not required for Linux based operating systems.
Once the USB driver is installed, two virtual COM
ports will be emulated and can be utilized as standard COM
ports to access the modules:
- ESP32 - Users should select
COM
port labeled withChannel A
(often the lower enumeration). -
LG290P - Users should select
COM
port labeled withChannel B
(often the higher enumeration).UART Settings
-
ESP32
With the RTK Everywhere firmware, the
UART0
port of the ESP32 is configured with the following settings:- Baudrate: 115200bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
-
LG290P
With the RTK Everywhere firmware, the
UART2
port of the LG290P is configured with the following settings:- Baudrate: 460800bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
Default Configuration
The UART ports of the LG290P are configured with the following default settings:
- Baudrate: 460800bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
- Flow Control: None
- Protocols:
NMEA 0183
RTCM 3.x
-
Power
The RTK Postcard only requires 3.3V to power the board's primary components. The simplest method to power the board is through the USB-C connector. Alternatively, the board can also be powered through the other connectors and PTH pins.
Below, is a general summary of the power circuitry for the board:
5V
- The voltage from the USB-C connector, usually 5V.- Can be utilized as the primary power source for the entire board.
- When connected to the Portability Shield, this pin used to provide power between the boards. (1)
3V3
- 3.3V power rail, which powers the ESP32 Pico-Mini module, LG290P GNSS module, backup battery, and LEDs.- Power can also be distributed to/from any of the JST connectors (Qwiic or
UART3
) or the3V3
PTH pin.- For power that is supplied through these connections, the LG290P has the tightest voltage supply requirement of 3.15–3.45V.
- A regulated 3.3V is supplied by the RT9080, when powered from the
5V
PTH pin or USB connector- Input Voltage Range: 3.0 to 5.5V (2)
- The RT9080 LDO regulator can source up to 600mA.
- Power can also be distributed to/from any of the JST connectors (Qwiic or
3V3_EN
- Controls the power output form the RT9080 voltage regulator.- By default, the pin is pulled-up to 5V and to enable the RT9080 output voltage.
VCC
- The voltage from the locking JST-GH connector, which is controlled by theVSEL
jumper (3).- Used to power an external radio to send or receive RTK corrections.
GND
- The common ground or the 0V reference for the voltage supplies.
-
Details
When 5V is provided to the RTK Postcard, it will supply power to the Portability Shield and charge the LiPo battery (if connected). To operate properly when charging the battery, the power switch behind the OLED display of the Portability Shield should be in the
Off
position.When powered by a LiPo battery, users must toggle the power switch behind the OLED display of the Portability Shield to the
On
position. This will allow the battery power to be provided to the RTK Postcard through the5V
pin; and then to its RT9080 LDO.Protection diodes are utilized on the boards to independently prevent current feedback and protect the power sources from each other.
-
Brown Out Voltage
The supply voltage of a LiPo battery will decrease as it is drained. However, before the battery can reach its critical UVLO threshold (~2.8V), the LG290 GNSS module with begin to brown out from an in-use supply voltage of 3.05-3.10V from a battery.
Battery Capacity
When selecting a LiPo battery for any combination of the RTK Postcard, Portability Shield, and/or connected radio, users should be aware of the peak current draw of their setup. In theory, most standard LiPo batteries have a maximum discharge rate of 1C (based on the battery capacity).
\[ 1C = \frac{(1 * Capacity)}{hour} \]However, as a battery ages, users may find the effective capacity and discharge rate to degrade to 80% of its original specifications.
Example
For example, a LiPo battery with a 400mAh capacity will have a maximum discharge rate of 400mA. However, over time, users may notice its effective use diminish to 320mAh and 320mA respectively.
-
By default, the
VSEL
jumper is configured to utilize the 3.3V power rail; however, it can be connected to the 5V power rail instead.Portability Shield
When utilizing the 5V power rail of the RTK Postcard, power may be supplied from the LiPo battery from the Portability Shield. This should be taken into consideration when connecting an external radio for RTK corrections.
Info
For more details, users can reference the schematic and the datasheets of the individual components on the board.
Portability Shield
When used in conjunction with the Portability Shield, users should be aware of the following:
- To charge the battery, users must provide adequate power through the
5V
pin. This is most easily done by powering the boards from the USB-C connector. - When operating the boards with the battery power, users must ensure that the switch behind the OLED display is in the
On
position. This will allow the battery power to feedback to the RTK Postcard through the5V
pin; and over to the RT9080 LDO to provide a regulated 3.3V to its primary components.
Backup Battery
While charged, the backup battery allows the GNSS module to hot/warm start with valid ephemeris data (time and GNSS orbital trajectories) that was stored.
Time to First Fix:
- Cold Start: 28s
- Warm Start: 28s
- Hot Start: 1.7s
ESP32 Pico-Mini
The brains of the RTK Postcard is an ESP32 Pico-Mini module. The Espressif series of ESP32 modules are a versatile, compact MCU modules with WiFi, BT, and BLE capabilities that target a wide variety of applications. At the core of the ESP32 Pico-Mini module is the ESP32-PICO-V3-02, a System-in-Package device, along with an integrated 8 MB SPI flash, 2 MB SPI PSRAM, and 40 MHz oscillator.
General Features
- Electrical Characteristics:
- Operating Voltage: 3.0 - 3.6V
- Current Consumption:
- RF Operation: 368mA (peak)
- Normal Operation: 20-31mA
- Light-Sleep: 0.8mA
- Deep-Sleep: 5µA
- Xtensa® Dual-Core 32-bit LX6 Microprocessor (up to 240MHz)
- 448KB of ROM and 520KB SRAM
- 8MB SPI Flash
- 2MB PSRAM
- 16KB SRAM in RTC
- Operating Temperature: -40 to 85°C
- PCB antenna
- WiF 802.11b/g/n
- Bit Rate: up to 150Mbps (802.11n)
- Frequency Range: 2412 - 2484MHz
- Bluetooth
- Bluetooth v4.2 Specification:
- BR/EDR
- Bluetooth LE
- Transmitter Class: 1, 2, and 3
- Bluetooth v4.2 Specification:
- 27 GPIO (including strapping pins) -
- Supported Peripherals:
- SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S, IR, pulse counter, GPIO, capacitive touch sensor, ADC, DAC, TWAI® (compatible with ISO 11898-1, i.e. CAN Specification 2.0), Ethernet MAC
Warning
Users should be aware of the following nuances and details of this microcontroller
- The ESP32 Pico-Mini is only compatible with 2.4GHz WiFi networks; it will not work on the 5GHz bands.
- For details on the boot mode configuration, please refer to section 3.3 Strapping Pins of the ESP32 SoC datasheet.
RTK Everywhere Firmware
The RTK Postcard comes pre-programmed with latest version of our RTK Everywhere firmware. However, users are free to reprogram the board as they see fit. For more details about the RTK Everywhere firmware, users can refer to the user manual.
Firmware Download Mode
Users can manually force the board into the serial bootloader with the BOOT button. Please, refer to the Boot Button section below for more information.
Power Modes
The ESP32 Pico-Mini module has various power modes:
- Active - The chip radio is powered on. The chip can receive, transmit, or listen.
- Modem Sleep - The CPU is operational and the clock is configurable. The Wi-Fi/Bluetooth baseband and radio are disabled.
- Light Sleep - The CPU is paused. The RTC memory and RTC peripherals, as well as the ULP coprocessor are running.
- Deep Sleep - Only the RTC memory and RTC peripherals are powered on. The ULP coprocessor is functional.
- Hibernation - Only one RTC timer on the slow clock and certain RTC GPIO active.
- Off - Chip is powered off.
For more information on the power management of the ESP32 Pico-Mini module, pleaser refer to Section 4.4 and Tables: 8 and 9 of the ESP32 Pico-Mini module datasheet.
Peripherals and I/O Pins
The ESP32 Pico-Mini module features 27 multifunctional GPIO pins, of which, 11 I/O pins broken out into PTH pins on the RTK Postcard. Meanwhile, others are utilized to interface with the LG290P GNSS receiver or other components on the board (i.e. USB connector, Qwiic connector, etc.). All of the RTK Postcard PTH pins have a .1" pitch spacing for standard headers and their pin layout is compatible with our Portability Shield.
Interfaces:
- UART (x2)
- SPI
- I2C (x2)
Event Trigger4- RTK Signal
- Interrupt
- PPS Timing Signal
- LG290P Module Reset
ESP32 GPIO | PTH Pin | LG290P IO | Other |
---|---|---|---|
GPIO 7 |
SDA0 |
I2C_SDA |
|
GPIO 20 |
SCL0 |
I2C_SCL |
|
GPIO 13 |
Qwiic SDA |
||
GPIO 19 |
Qwiic SCL |
||
GPIO 21 |
TXD2 |
||
GPIO 22 |
RXD2 |
||
GPIO 33 |
RST |
RESET_N |
|
GPIO 34 |
RTK |
RTK_STAT |
LED RTK |
GPIO 36 |
PPS |
1PPS |
LED PPS |
GPIO 8 |
EVENT |
EVENT |
|
GPIO 32 |
SCK |
||
GPIO 25 |
POCI |
||
GPIO 26 |
PICO |
||
GPIO 27 |
CS |
||
GPIO 14 |
AOI |
||
GPIO 4 |
LED BT |
||
GPIO 0 |
LED STAT |
General Capabilities
With the pin multiplexing capabilities of the ESP32 SoC, various pins can have several functionalities. For more technical specifications on the I/O pins, please refer to the ESP32 SoC datasheet.
- 18x 12-bit analog to digital converter (ADC) channels
- 3x UARTs (only two are configured by default in the Arduino IDE, one UART is used for bootloading/debug)
- 3x SPI (only one is configured by default in the Arduino IDE)
- 2x I2C (only one is configured by default in the Arduino IDE)
- 2x digital-to-analog converter (DAC) channels
- 16x 20-bit PWM outputs
- 10x Capacitive Touch Inputs
Warning
Users should be aware of the following nuances of the ESP32 Pico-Mini module:
- ⚡ All the GPIO are 3.3V pins.
- The I/O pins are not 5V-tolerant! To interface with higher voltage components, a logic level adapter is recommended.
- ⚡ There are electrical limitations to the amount of current that the ESP32 Pico-Mini module can sink or source. For more details, check out the ESP32 Pico-Mini module datasheet.
- There are some limitations to the ADC performance, see the Note from the ADC Characteristics section of the ESP32 SoC datasheet.
Programming in Arduino
To program the ESP32 Pico-Mini module in the Arduino IDE, users should select the ESP32 > ESP32 Dev Module from the Board Manager list. Users should also be aware that not all of the features, listed above, will be available in the Arduino IDE. When programming the module with the Arduino IDE, only the following features are available for the board:
- Only one I2C bus is defined.
- Only two UART interfaces are available.
- UART (USB):
Serial
RX
/TX
Pins:Serial1
- UART (USB):
- Only one SPI bus is defined.
For the full capabilities of the ESP32, the Espressif IDF should be utilized.
General Functions
For digital pins, users will need to declare the pinMode()
(link) in the setup of their sketch (programs written in the Arduino IDE) for the pins used.
-
Input
When configured properly, an input pin will be looking for a
HIGH
orLOW
state. Input pins are high impedance and takes very little current to move the input pin from one state to another. -
Output
When configured as an output the pin will be at a
HIGH
orLOW
voltage. Output pins are low impedance; this means that they can provide a relatively substantial amount of current to other circuits.
Additional Functions
There are several pins that have special functionality in addition to general digital I/O. These pins and their additional functions are listed in the tabs below. For more technical specifications on the I/O pins, you can refer to the schematic, ESP32 Pico-Mini module datasheet, ESP32 SoC datasheet, and documentation for the ESP32 Arduino core.
The ESP32 module provides a 12-bit ADC input on eighteen of its I/O pins. This functionality is accessed in the Arduino IDE using the analogRead(pin)
function. (*The available ADC pins are highlighted in the image below.)
Tip
To learn more about analog vs. digital signals, check out this great tutorial.
Arduino
By default, in the Arduino IDE, analogRead()
returns a 10-bit value. To change the resolution of the value returned by the analogRead()
function, use the analogReadResolution(bits)
function.
The ESP32 module supports up to sixteen channels of 20-bit PWM (Pulse Width Modulation) outputs on any of its I/O pins. This is accessed in the Arduino IDE using the analogWrite(pin, value)
function. (*Any I/O pin can be used for the PWM outputs; the available DAC pins, with true analog outputs, are highlighted in the image below.)
Tip
To learn more about pulse width modulation (PWM), check out this great tutorial.
Arduino
By default, in the Arduino IDE, analogWrite()
accepts an 8-bit value. To change the resolution of the PWM signal for the analogWrite()
function, use the analogWriteResolution(bits)
function.
The ESP32 module provides three UART ports. By default, the UART port for the USB connection (Serial
) and the UART port (Serial1
) to the LG290P GNSS receiver can be accessed through the Arduino IDE using the serial communication class.
Arduino
By default, in the Arduino IDE, the ESP32 Dev Module board definition supports:
Serial
- UART (USB)Serial1
- Pins:RX
/TX
(GPIO 21
/GPIO 22
)
Tip
We have noticed that with the ESP32 Arduino core, Serial.available()
does not operate instantaneously. This is due to an interrupt triggered by the UART, to empty the FIFO when the RX
pin is inactive for two byte periods:
-
At 9600 baud,
hwAvailable
takes about 11 ms before the UART indicates that data was received from:\r\nERROR\r\n
.\[ (bytes + 2) * 1ms = 11ms \] -
At 115200 baud,
hwAvailable
takes about 1 ms before the UART indicates that data was received from:\r\nERROR\r\n
.\[ (bytes + 2) * .087ms = 1ms \]
For more information, please refer to this chatroom discussion.
The ESP32 module provides three SPI buses. By default, in the Arduino IDE, the SPI class is configured to utilize pins GPIO 32
(SCK), GPIO 25
(POCI), GPIO 26
(PICO), and GPIO 27
(SS
) for its chip select. In order to utilize the other SPI ports or objects, users will need to create a custom SPI object and declare which pins to access.
Tip
To learn more about the serial peripheral interface (SPI) protocol, check out this great tutorial.
Arduino
By default, in the Arduino IDE, the ESP32 Dev Module board definition supports:
SCK | GPIO 32 (SCK ) |
---|---|
SDI or POCI | GPIO 25 (MISO ) |
SDO or PICO | GPIO 26 (MOSI ) |
CS* | GPIO 27 (SS ) |
Signal Nomenclature
To comply with the latest OSHW design practices, we have adopted the new SPI signal nomenclature (SDO/SDI and PICO/POCI). The terms Master and Slave are now referred to as Controller and Peripheral. The MOSI
signal on a controller has been replaced with SDO
or PICO
. Please refer to this announcement on the decision to deprecate the MOSI/MISO terminology and transition to the SDO/SDI naming convention.
The ESP32 module module can support up to two I2C buses. By default, in the Arduino IDE, the Wire class is configured to utilize pins GPIO 20
(SDA) and GPIO 7
(SCL). These pins share the same I2C bus with the LG290P GNSS receiver, but not the Qwiic connector. In order to utilize another I2C port, users will need to create a custom Wire object and declare which pins to access.
Tip
To learn more about the inter-integrated circuit (I2C) protocol, check out this great tutorial.
Arduino
By default, in the Arduino IDE, the ESP32 Dev Module board definition supports:
SCL0 | GPIO 7 (SCL ) |
---|---|
SDA0 | GPIO 20 (SDA ) |
LG290P GNSS
The centerpiece of the RTK Postcard, is the LG290P GNSS module from Quectel. The LG290P is a low-power, multi-band, multi-constellation GNSS receiver capable of delivering centimeter-level precision at high update rates. The built-in NIC anti-jamming unit provides professional-grade interference signal detection and elimination algorithms, which effectively mitigate against multiple narrow-band interference sources and significantly improves the signal reception performance in complex electromagnetic environments. With its performance advantages of high-precision and power consumption, this board is an ideal choice for high-precision navigation applications, such as intelligent robots, UAVs, precision agriculture, mining, surveying, and autonomous navigation.
General Features
- Supply Voltage: 3.15 – 3.45V
- Tracking Channels: 1040
- Concurrent signal reception: 5 + QZSS
L1
,L2
,L5
,E6
frequency bands
- Sensitivity:
- Acquisition: -146dBm
- Tracking: -160dBm
- Reacquisition: -155dBm
- Antenna Power: External or Internal
- GNSS Constellations and SBAS Systems:
- USA: GPS + WASS
- Russia: GLONASS + SDCM
- EU: Galileo + EGNOS
- China: BDS + BDSDAS
- Japan: QZSS + MSAS
- India: NavIC + GAGAN
- Accuracy of 1PPS Signal: 5ns (RMS)
- Update Rate:
- Default: 10Hz
- Max: 20Hz
- Time to First Fix (without AGNSS):
- Cold Start: 28s
- Warm Start: 28s
- Hot Start: 1.7s
- RTK Convergence Time: 5s
- Dynamic Performance:
- Maximum Altitude: 10000m
- Maximum Velocity: 490m/s
- Maximum Acceleration: 4g
- Built-in NIC anti-jamming unit
- Interfaces
- Operating temperature: -40°C to +85°C
- Footprint: 12.2mm × 16mm × 2.6mm
- Weight: ~0.9g
Supported Frequency Bands
The LG290P modules are multi-band, multi-constellation GNSS receivers. Below, is a chart illustrating the frequency bands utilized by all the global navigation satellite systems; along with a list of the frequency bands and GNSS systems supported by the LG290P GNSS module.
Supported Frequency Bands:
Supported GNSS Constellations:
- GPS (USA)
- GLONASS (Russia)
- Galileo (EU)
- BDS (China)
- QZSS (Japan)
- NavIC (India)
Supported SBAS Systems:
- WASS (USA)
- SDCM (Russia)
- EGNOS (EU)
- BDSBAS (China)
- MSAS (Japan)
- GAGAN (India)
Info
For a comparison of the frequency bands supported by the LG290P GNSS modules, refer to sections 1.2, 1.5, and 1.6 of the hardware design manual.
What are Frequency Bands?
A frequency band is a section of the electromagnetic spectrum, usually denoted by the range of its upper and lower limits. In the radio spectrum, these frequency bands are usually regulated by region, often through a government entity. This regulation prevents the interference of RF communication; and often includes major penalties for any interference with critical infrastructure systems and emergency services.
However, if the various GNSS constellations share similar frequency bands, then how do they avoid interfering with one another? Without going too far into detail, the image above helps illustrate some of the characteristics, specific to the frequency bands of each system. With these characteristics in mind, along with other factors, the chart can help users to visualize how multiple GNSS constellations might co-exist with each other.
For more information, users may find these articles of interest:
GNSS Accuracy
The accuracy of the position reported from the LG290P GNSS module, can be improved based upon the correction method being employed. Currently, RTK corrections provide the highest level of accuracy; however, users should be aware of certain limitations of the system:
- RTK technique requires real-time correction data from a reference station or network of base stations.
- RTK corrections usually come from RTCM messages that are signal specific (i.e. an RTK network may only provide corrections for specific signals; only
E5b
and notE5a
).
- RTK corrections usually come from RTCM messages that are signal specific (i.e. an RTK network may only provide corrections for specific signals; only
- The range of the base stations will vary based upon the method used to transmit the correction data.
- The reliability of RTK corrections are inherently reduced in multipath environments.
Correction Method | Horizontal | Vertical | Velocity |
---|---|---|---|
Standalone | 0.7m ~2.3' |
2.5m ~8.2' |
3cm/s (0.108kph) ~1.2in/s (0.067mph) |
RTK | 0.8cm (+1ppm) ~0.3" |
1.5cm (+1ppm) ~.6" |
Peripherals and I/O Pins
The LG290P GNSS features several peripheral interfaces and I/O pins. Some of these are broken out as PTH pins on the RTK Postcard; whereas, others are broken out to their specific interface (i.e. USB connector, JST connector, etc.). Additionally, some of their connections are tied to other components on the board.
The LG290P GNSS has three UART ports, which can be operated and configured separately.
UART Settings
With the RTK Everywhere firmware, the UART ports of the LG290P are configured with the following baudrates:
UART Port | Interface | Baudrate (bps) |
---|---|---|
UART1 |
USB-C (CH342) | 460800 |
UART2 |
ESP32 | 460800 |
UART3 |
JST-GH (Locking) | 57600 |
Default Configuration
The UART ports of the LG290P are configured with the following default settings:
- Baudrate: 460800bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
- Flow Control: None
- Protocols:
NMEA 0183
RTCM 3.x
Pin Connections
When connecting to the board's UART pins to another device, the pins should be connected based upon the flow of their data.
Board | RX | TX | GND |
---|---|---|---|
UART Device | TX | RX | GND |
UART1
can only be accessed from the USB-C connector, through the CH342 serial-to-USB converter. For Windows and MacOS computers (1), a USB driver must be installed in order to communicate with the LG290P module through the CH342 converter. Once the USB driver is installed:
- Two virtual
COM
ports are emulated, which can be used as standardCOM
ports to access the ESP32 or the LG290P modules. - Users should select
COM
port listed asChannel B
to access the LG290P GNSS receiver.
- On Linux, the standard Linux CDC-ACM driver is suitable.
UART2
is connected to the ESP32 Pico-Mini.
ESP32 | LG290P |
---|---|
IO21: GPIO 21 |
TXD2 |
IO22: GPIO 22 |
RXD2 |
UART3
is available through the breakout PTH pins or the locking JST connector. The pin layout of the 4-pin locking JST connector is compatible with many of our serial radios and adapter cables.
UART Protocols
UART Protocols
By default, these UART ports are configured to transmit and receive NMEA 0183
and/or RTCM 3.x
messages. These messages are generally used for transmitting PNT data; and providing or receiving RTK corrections, respectively. Quectel also implements a system of proprietary messages (PQTM
) for users to configure the LG290P that follows a data format similar to the NMEA
protocol. The expected structure of these proprietary messages is shown below:
A full list of compatible NMEA 0183
v4.11 messages, is provided in section 2.2. Standard Messages of the GNSS Protocol Specification manual. This protocol is used for outputting GNSS data, as detailed by the National Marine Electronics Association organization.
List of Standard NMEA Messages
Message | Type Mode | Message Description |
---|---|---|
RMC | Output | Recommended Minimum Specific GNSS Data |
GGA | Output | Global Positioning System Fix Data |
GSV | Output | GNSS Satellites in View |
GSA | Output | GNSS DOP and Active Satellites |
VTG | Output | Course Over Ground & Ground Speed |
GLL | Output | Geographic Position – Latitude/Longitude |
A full list of PQTM messages (proprietary NMEA messages defined by Quectel) supported by LG290P, is provided in section 2.3. PQTM Messages of the GNSS Protocol Specification manual. This protocol is used to configure or read the settings for the LG290P GNSS module.
List of Proprietary Quectel Messages
Message | Type Mode | Message Description |
---|---|---|
PQTMVER | Output | Outputs the firmware version |
PQTMCOLD | Input | Performs a cold start |
PQTMWARM | Input | Performs a warm start |
PQTMHOT | Input | Performs a hot start |
PQTMSRR | Input | Performs a system reset and reboots the receiver |
PQTMUNIQID | Output | Queries the module unique ID |
PQTMSAVEPAR | Input | Saves the configurations into NVM |
PQTMRESTOREPAR | Input | Restores the parameters configured by all commands to their default values |
PQTMVERNO | Output | Queries the firmware version |
PQTMCFGUART | Input/Output | Sets/gets the UART interface |
PQTMCFGPPS | Input/Output | Sets/gets the PPS feature |
PQTMCFGPROT | Input/Output | Sets/gets the input and output protocol for a specified port |
PQTMCFGNMEADP | Input/Output | Sets/gets the decimal places of standard NMEA messages |
PQTMEPE | Output | Outputs the estimated position error |
PQTMCFGMSGRATE | Input/Output | Sets/gets the message output rate on the current interface |
PQTMVEL | Output | Outputs the velocity information |
PQTMCFGGEOFENCE | Input/Output | Sets/gets geofence feature |
PQTMGEOFENCESTATUS | Output | Outputs the geofence status |
PQTMGNSSSTART | Input | Starts GNSS engine |
PQTMGNSSSTOP | Input | Stops GNSS engine |
PQTMTXT | Output | Outputs short text messages |
PQTMCFGSVIN | Input/Output | Sets/gets the Survey-in feature |
PQTMSVINSTATUS | Output | Outputs the Survey-in status |
PQTMPVT | Output | Outputs the PVT (GNSS only) result |
PQTMCFGRCVRMODE | Input/Output | Sets/gets the receiver working mode |
PQTMDEBUGON | Input | Enables debug log output |
PQTMDEBUGOFF | Input | Disables debug log output |
PQTMCFGFIXRATE | Input/Output | Sets/gets the fix interval |
PQTMCFGRTK | Input/Output | Sets/gets the RTK mode |
PQTMCFGCNST | Input/Output | Sets/gets the constellation configuration |
PQTMDOP | Output | Outputs dilution of precision |
PQTMPL | Output | Outputs protection level information |
PQTMCFGODO | Input/Output | Sets/gets the odometer feature |
PQTMRESETODO | Input | Resets the accumulated distance recorded by the odometer |
PQTMODO | Output | Outputs the odometer information |
PQTMCFGSIGNAL | Input/Output | Sets/gets GNSS signal mask |
PQTMCFGSAT | Input/Output | Sets/gets GNSS satellite mask |
PQTMCFGRSID | Input/Output | Sets/gets the reference station ID |
PQTMCFGRTCM | Input/Output | Sets/gets RTCM |
A full list of compatible RTCM v3
messages, is provided in section 3. RTCM Protocol of the GNSS Protocol Specification manual. This protocol is used for transferring GNSS raw measurement data, as detailed by the Radio Technical Commission for Maritime Services organization.
List of Supported RTCMv3 (MSM) Messages
Message | Type Mode | Message Description |
---|---|---|
1005 | Input/Output | Stationary RTK Reference Station ARP |
1006 | Input/Output | Stationary RTK Reference Station ARP with height |
1019 | Input/Output | GPS Ephemerides |
1020 | Input/Output | GLONASS Ephemerides |
1041 | Input/Output | NavIC/IRNSS Ephemerides |
1042 | Input/Output | BDS Satellite Ephemeris Data |
1044 | Input/Output | QZSS Ephemerides |
1046 | Input/Output | Galileo I/NAV Satellite Ephemeris Data |
1073 | Input/Output | GPS MSM3 |
1074 | Input/Output | GPS MSM4 |
1075 | Input/Output | GPS MSM5 |
1076 | Input/Output | GPS MSM6 |
1077 | Input/Output | GPS MSM7 |
1083 | Input/Output | GLONASS MSM3 |
1084 | Input/Output | GLONASS MSM4 |
1085 | Input/Output | GLONASS MSM5 |
1086 | Input/Output | GLONASS MSM6 |
1087 | Input/Output | GLONASS MSM7 |
1093 | Input/Output | Galileo MSM3 |
1094 | Input/Output | Galileo MSM4 |
1095 | Input/Output | Galileo MSM5 |
1096 | Input/Output | Galileo MSM6 |
1097 | Input/Output | Galileo MSM7 |
1113 | Input/Output | QZSS MSM3 |
1114 | Input/Output | QZSS MSM4 |
1115 | Input/Output | QZSS MSM5 |
1116 | Input/Output | QZSS MSM6 |
1117 | Input/Output | QZSS MSM7 |
1123 | Input/Output | BDS MSM3 |
1124 | Input/Output | BDS MSM4 |
1125 | Input/Output | BDS MSM5 |
1126 | Input/Output | BDS MSM6 |
1127 | Input/Output | BDS MSM7 |
1133 | Input/Output | NavIC/IRNSS MSM3 |
1134 | Input/Output | NavIC/IRNSS MSM4 |
1135 | Input/Output | NavIC/IRNSS MSM5 |
1136 | Input/Output | NavIC/IRNSS MSM6 |
1137 | Input/Output | NavIC/IRNSS MSM7 |
From the module, the PPS output signal is a 3.3V signal output that can be access through the SMA connector and/or the PPS
PTH pin. The signal is also connected to the PPS
LED, which can be used as a visual indicator for its operation.
Jumpers
See the Jumpers section for more details.
- There is a jumper attached to the
PPS
PTH pin. When cut, it disconnects the pin from the PPS signal. - There is a jumper attached to the
PPS
LED. For low power applications, the jumper can be cut to disable thePPS
LED.
Use Case
- Users could use this signal in conjunction with the event pins to synchronize two modules with each other.
- Users could use this signal to create their own Stratum 0 source for the NTP on a primary time server.
The RTK
PTH pin operates as both the RTK_STAT
status indicator for the RTK positioning and ANT_ON
power control for the external LNA or active antenna power. The pin is also connected to the RTK
LED, which can be used as a visual indicator for its operation.
In this configuration, the pin is set to a high level at startup.
- If the pin output is high, it indicates the module has entered the RTK fixed mode.
- If the pin output is low, it indicates that the module exited the RTK fixed mode.
- If the pin outputs an alternating pin level, it indicates that the module received the correct RTCM data and did not enter the RTK fixed mode.
In this configuration, the pin is used to control the external LNA or active antenna power supply.
- When the pin is high, the antenna is powered.
- When the pin is low, the antenna is not powered.
Jumpers
See the Jumpers section for more details.
- There is a jumper attached to the
RTK
LED. For low power applications, the jumper can be cut to disable theRTK
LED.
The RST
pin can be used to reset the LG290P module if it enters an abnormal state. To reset the GNSS module, the pin must be low for more than 100ms.
Buttons
There are two buttons on RTK Postcard; a RST and BOOT button.
Reset Button
The RST (reset) button allows users to reset the program running on the ESP32 Pico-Mini module without unplugging the board.
Boot Button
The BOOT button can be used to force the board into the serial bootloader. Holding down the BOOT button, while connecting the board to a computer through its USB-C connector or resetting the board will cause it to enter the Firmware Download mode. The board will remain in this mode until it power cycles (happens automatically after uploading new firmware) or the RST button is pressed.
- Hold the BOOT button down.
- Reset the MCU.
- While unpowered, connect the board to a computer with through the USB-C connection.
- While powered, press the RST button.
- Release the BOOT button.
- After programming is completed, reboot the MCU.
- Press the RST button.
- Power cycle the board.
GNSS Antenna Connectors
While there are two GNSS antenna connectors, only the SMA connector is connected to the LG290P GNSS module by default. If users wish, they can rework the 0402 resistor on the antenna trace to utilize the u.fl connector instead.
Antenna Specifications
- Passive antennas are not recommended for the LG290P GNSS module.
- To mitigate the impact of out-of-band signals, utilize an active antenna whose SAW filter is placed in front of the LNA in the internal framework.
- DO NOT select and antenna with the LNA placed in the front.
- There is no need to inject an external DC voltage into the SMA connector for the GNSS antenna. Power is already provided from the LG290P module for the LNA of an active antenna.
JST Connector
The RTK Postcard features a 4-pin JST GH connector, which is polarized and locking. Users can access the pins of the UART3
port, through the JST connector with our breadboard cable(1) or through the PTH pins. The pin layout of the JST connector is compatible with many of our serial radios and adapter cables.
Default Baudrate
- The default bardrate of the
UART
ports from the LG290P is 480600bps, with the factory settings. - The default bardrate of the
UART3
port from the LG290P (for the locking JST connector) is 57600bps, when utilizing the pre-programmed RTK Everywhere firmware.
Pin Connections
Pin Connections
When connecting the RTK Postcard to other products, users need to be aware of the pin connections between the devices.
Pin Number |
1 (Left Side) |
2 | 3 | 4 |
---|---|---|---|---|
Label | VCC | TX3 | RX3 | GND |
Function |
Voltage Output - Default: 3.3V - Selectable: 3.3V or 5V |
UART3 - Receive |
UART3 - Transmit |
Ground |
When connecting the RTK Postcard to our radios, the pin connections should follow the table below. If the flow control is not enabled, the only the RX
, TX
, and GND
pins are utilized.
Board | RX | TX | GND |
---|---|---|---|
Radio | TX | RX | GND |
As documented in the LoRaSerial product manual, the pin connections between a host system (i.e. RTK Postcard) and the LoRaSerial Kit radio is outlined in the image below.
Status LEDs
There are five status LEDs on the RTK Postcard. The table below, lists the pin connections between these LEDs, the LG290P GNSS module, and the ESP32 Pico-Mini module. For details about their operation, please refer to the list at the underneath.
LED | ESP32 GPIO | LG290P IO |
---|---|---|
BT |
GPIO 4 |
--- |
RTK |
GPIO 34 |
RTK_STAT |
PPS |
GPIO 36 |
1PPS |
PWR |
N/A | N/A |
STAT |
GPIO 0 |
--- |
BT
- Bluetooth (Blue)- With the RTK Everywhere firmware, this LED indicates when the ESP32 Pico-Mini module is paired with a Bluetooth device
RTK
- RTK Mode (White)- Indicates when an RTK fix has been established or when the correct RTCM data is being received (see the RTK section)
PPS
- Pulse-Per-Second (Yellow)- Indicates when there is a pulse-per-second signal (see the PPS Output section)
PWR
- Power (Red)- Turns on once 3.3V power is supplied to the board
STAT
- Status (Green)- With the RTK Everywhere firmware, this LED indicates the operation mode
Jumpers
Never modified a jumper before?
Check out our Jumper Pads and PCB Traces tutorial for a quick introduction!
There are eight jumpers on the back of the board that can be used to easily modify the hardware connections on the board. From which, there are five jumpers that control power to the status LEDs on the board. By default, all the jumpers are connected to power the status LEDs. For low power applications, users can cut the jumpers to disconnect power from each of the LEDs.
I2C-EXT
- This jumper can be cut to disconnect the pull-up resistors on theSCL_1
andSDA_1
connections of the Qwiic connectors.SHLD
- This jumper can be cut to disconnect the shielding of the USB-C connector from theGND
plane of the boardVSEL
- This jumper can be modified to configure/disconnect theVCC
pin of the 4-pin locking JST connector to/from3V3
or5V
power rails.- Users should also keep in mind that connecting the jumper to the
5V
power rail, could include the voltage provided by the LiPo battery from the Portability Shield.
- Users should also keep in mind that connecting the jumper to the
STAT
- This jumper can be cut to remove power from the green LED, indicating the operational status for the RTK Everywhere firmware.PWR
- This jumper can be cut to remove power from the red, power LED.PPS
- This jumper can be cut to remove power from the yellow LED, which is connected to the PPS signal.RTK
- This jumper can be cut to remove power from the white LED, indicating RTK fix or operation in RTK mode.BT
- This jumper can be cut to remove power from the blue LED, indicating Bluetooth pairing for the RTK Everywhere firmware.
Default Configuration
- By default, PPS signal is connected to the
PPS
pin. - By default, the
VSEL
jumper is connected to3V3
pad for a regulated 3.3V output on the 4-pin JST-GH connector. - By default, the
BT_VCC
jumper provides a regulated 3.3V output to the BlueSMiRF header.
Hardware Assembly
USB Programming (UART1
)
The USB connection can be utilized for serial communication and configuring the LG290P GNSS module. Users only need to connect their RTK Postcard to a computer, using a USB-C cable.
Default Baud Rate
The default baud rate of the UART ports on the LG290P is 460800bps.
GNSS Antenna
In order to receive GNSS signals, users will need to connect a compatible antenna. For the best performance, we recommend users choose an active, multi-band GNSS antenna and utilize a low-loss cable.
Antenna Specifications
- Passive antennas are not recommended for the LG290P GNSS module.
- To mitigate the impact of out-of-band signals, utilize an active antenna whose SAW filter is placed in front of the LNA in the internal framework.
- DO NOT select and antenna with the LNA placed in the front.
- There is no need to inject an external DC voltage into the SMA connector for the GNSS antenna. Power is already provided from the LG290P module for the LNA of an active antenna.
JST Connector (UART3
)
The JST connector on the Quad-band GNSS RTK board, breaks out the UART3
port of the LG290P GNSS module. In most circumstances, users will utilize the JST connector to interface with one of our radios to transmit or receive RTK correction data.
When connecting the RTK Postcard to other products, users should be aware of the pin connections between the devices. The table below, details the pin connections of the locking JST connector on the RTK Postcard.
Pin Number |
1 (Left Side) |
2 | 3 | 4 |
---|---|---|---|---|
Label | VCC | TX3 | RX3 | GND |
Function |
Voltage Output - Default: 3.3V - 3.3V or 5V |
UART3 - Receive |
UART3 - Transmit |
Ground |
Default Baud Rate
The default baud rate of the UART ports on the LG290P is 460800bps.
Radio Transceivers
We have designed the locking JST connector to be plug-n-play with the following devices and cables. However, for the SiK Telemetry Radio v3, users should modify the VSEL
jumper (1) on the back of the board to enable a 5V output on the VCC
pin. Below, is a table summarizing the pin connections of the radios.
- While the SiK Telemetry Radio v3 may function with a 3.3V input, their specifications stipulate that a 5V power supply be provided.
Pin Number |
1 (Left Side) |
2 | 3 | 4 | 5 |
6 (Right) |
---|---|---|---|---|---|---|
Label | 5V |
RX - SiK RXI - LoRaSerial |
TX - SiK TXO - LoRaSerial |
CTS | RTS | GND |
Function |
Voltage Input - SiK: 5V - LoRaSerial: 3.3 to 5V (1) |
UART - Receive | UART - Transmit |
Flow Control Clear-to-Send |
Flow Control Ready-to-Send |
Ground |
Radio Pin Connections
As documented in the LoRaSerial product manual, the pin connections between a host system (i.e. RTK Postcard) and the LoRaSerial radio is outlined in the image below.
However, the flow control pins (CTS
and RTS
) are not available on the RTK Postcard. Therefore, when connecting either of the radios, the pin connections should follow the table below:
Board | RX | TX | GND |
---|---|---|---|
Radio | TX | RX | GND |
Radio Transceivers and Cables
Default Baud Rate
The baud rate for these radios are configured by the SERIAL_SPEED
parameter. The default configuration is SERIAL_SPEED
: 57600bps.
Breakout Pins
The PTH pins on the Quad-band GNSS RTK board are broken out into 0.1"-spaced pins on the outer edges of the board.
New to soldering?
If you have never soldered before or need a quick refresher, check out our How to Solder: Through-Hole Soldering guide.
-
Headers
When selecting headers, be sure you are aware of the functionality you require.
-
Hookup Wires
For a more permanent connection, users can solder wires directly to the board.
Software Overview
CH342 USB Driver
The USB drivers for the CH342 USB-to-Serial converter can be downloaded from the manufacturer's website.
Linux
A USB driver is not required for Linux based operating systems.
RTK Everywhere Firmware
The RTK Postcard comes preloaded with our latest RTK Everywhere firmware. Our firmware is completely open-source; therefore, users can view the code to troubleshoot issues, contribute new features or updates, and file issues for any bugs they discover. In addition, we also users with pre-compiled binaries in our SparkFun RTK Everywhere Firmware binaries GitHub repository and a RTK Firmware Uploader tool to upload the pre-compiled binaries to the RTK Postcard. For more information, users can reference the user manual for the RTK Everywhere firmware and associated links below:
RTK_Everywhere_Firmware_RC-XXX_XX_XXXX.bin
RTK_Everywhere_Firmware_RC-*.bin
Arduino IDE
Most users may already be familiar with the Arduino IDE and its use. However, for those of you who have never heard the name Arduino before, feel free to check out the Arduino website. In order to program the RTK Postcard, users will need to install the ESP32 Arduino Core through the Board Manager. Additionally, we also recommend installing the SparkFun LG290P Quadband RTK GNSS Arduino Library to interface with the LG290P GNSS receiver.
Espressif ESP32 Arduino Core
The ESP32 Arduino Core can be installed from the board manager in the Arduino IDE by searching for:
esp32 by Espressif Systems
Arduino Board Manager URL
In order to install Espressif's ESP32 Arduino core, users must provide the Arduino Board Manager URL in the preferences settings (File > Preferences) for the Arduino IDE:
Board Selection
In order to program the ESP32 Pico-Mini module on the RTK Postcard, users should select the ESP32 Dev Module from the Tools > Board: > esp32 drop-down menu.
SparkFun LG290P Quadband RTK GNSS Arduino Library
The SparkFun LG290P Quadband RTK GNSS Arduino Library can be installed from the library manager in the Arduino IDE by searching for:
SparkFun LG290P Quadband RTK GNSS Arduino Library
Manually Download the Arduino Library
For users who would like to manually download and install the library, the *.zip
file can be accessed from the GitHub repository or downloaded by clicking the button below.
GNSS Software
Tip
To manually interface with the LG290P GNSS module, users can utilize the QGNSS software provided by Quectel. This method is recommended due to the unique data structure of the UART command messages, utilized to configure the LG290P module.
Windows Only
Currently, the QGNSS software is only available for Windows operating systems.
Windows, MacOS, or Linux
For users with computers that run on MacOS or Linux, we have found alternative software option for viewing the data from the NMEA messages. However, this GUI interface is currently limited to only receiving UART messages and cannot send messages to configure the LG290P module.
QGNSS Software
QGNSS is highly intuitive GNSS evaluation software that is easy to use, personalized, and compatible with leading Quectel technologies. The software allows users to define or apply GNSS product configurations for specific use cases. Saving, restoring, or sharing configurations between different products and updating the module's firmware are easy. The software supports product evaluation with a choice of views to observe static and dynamic behavior of the connected a Quectel GNSS receiver.
Windows Only
Currently, the QGNSS software is only available for Windows operating systems.
Connecting to the LG290P
In order to connect to the LG290P properly, users will need to specify the settings of the UART port.
Before users can connect to the RTK Postcard, they will need to specify the connection settings in QGNSS. Once configured, users can select the OK button and QGNSS will automatically attempt to connect to the GNSS module.
- Select the
LG290P(03)
from the drop-down menu to configure theModel
of the GNSS module being connected. - Below, is a list of the default settings for
UART
ports of the LG290P. These settings should be selected in theDevice Information
menu, unless configured differently. - When connecting through the USB-C connector, under the
Port
option, select the port labeled with channelB
from the drop-down menu.
LG290P - Default Settings
The UART ports of the LG290P GNSS module will have the following default configuration:
- Baudrate: 460800bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
- Flow Control: None
Configure the LG290P
By default, the UART ports are configured to transmit and receive NMEA 0183
and/or RTCM 3.x
messages. These messages are generally used for transmitting PNT data; and providing or receiving RTK corrections, respectively. Quectel also implements a system of proprietary messages (PQTM
) for users to configure the LG290P, following the data format of the NMEA
protocol.
Data Format - PQTM Messages
The expected structure of the data in the proprietary PQTM messages is shown below:
<Checksum>
:
- Checksum field follows the checksum delimiter character
*
. - Checksum is the 8-bit exclusive OR of all characters in the sentence, including
,
the field delimiter, between but not including the$
and the*
delimiters.
<CR>
& <LF>
: Carriage return; followed by a new line
- Depending on the terminal emulator, these may be options configured in the program settings.
- Otherwise, users may need to add the
\r
and\n
characters at the end of the message.
In the QGNSS software, users can click on the Advance button, at the bottom of the QConsole
window, to configure the settings for the messages sent to the LG290P. Selecting NMEA
and CRLF
from the drop-down menu of the Checksum Type and Suffix options, will automatically calculate and append the <checksum>
value, carriage return, and line follow to the end of the message entered in the Data Input field.
Display the QConsole Toolbar
There is a toolbar for the QConsole, which has a bunch of tools that users may find useful. This includes, a search function, scroll-lock button, pause/clear the message feed, etc. To open/close the toolbar inside the QConsole, right-click on the mouse and select the Show Tool
option from the drop-down menu or utilize the keyboard shortcut: Ctrl + Q.
Example - PQTMCFGUART
Message
As an example, try utilizing the PQTMCFGUART
PQTM message. Enter $PQTMCFGUART,R*
into the Data Input* field of the QConsole. DOn't forget to select the NMEA
and CRLF
options from Advance settings menu. If entered and configured properly, the value 36
should pop up in the Checksum field of the QConsole; then, click on the button to send the message.
Once the message has been sent, keep a close watch of the messages in the console. It may help to click on the button to disable auto-scrolling, when trying to locate the message response. Additionally, the response may not appear right away, it could be appended to the end of the next data packet, as shown in the image below.
PyGPSClient
Software Limitations
With this software, users will only be able to view the data from the NMEA messages and connect to an NTRIP caster. Users will not be able to configure the LG290P module with the built-in console.
As an alternative to QGNSS, for users with computers that run on MacOS or Linux, we recommend PyGPSClient as an option for viewing the data from the NMEA messages and connecting to an NTRIP caster. However, users should be aware that this GUI interface is currently limited to only receiving UART messages and cannot send messages to configure the LG290P module.
Resources
For additional information, users can refer to the following resources for the PyGPSClient software:
Installation
There are a variety of installation methods detailed in the GitHub repository's README.md
file. However, we recommend utilizing the pip
installation method.
Installation Commands
Depending on how Python is installed on the computer, one of the following commands should allow users to install the software.
System Requirements
This installation method requires an internet connection. Additionally, users will also need administrative privileges (or root access sudo
) for the installation.
Connecting to the LG290P
Before users can connect to the RTK Postcard, they will need to specify the settings of the UART port in PyGPSClient. Once configured, users can select the button and PyGPSClient will automatically attempt to connect to the GNSS module.
- Below, is a list of the default settings for
UART
ports of the LG290P. These settings should be selected in the configuration menu. - For the
Serial Port
, select the port labeled with channelB
from the drop-down menu.
LG290P - Default Settings
The UART ports of the LG290P GNSS module will have the following default configuration:
- Baudrate: 460800bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
- Flow Control: None
Terminal Emulator
Another viable option for connecting to the RTK Postcard, is to utilize a terminal emulation program. While reading the data sent from the LG290P is relatively trivial, users will need to be more selective when choosing an emulator to configure the LG290P module on the RTK Postcard. This is due to the unique data structure of the proprietary messages that Quectel implements to configure the LG290P (see the Configure the LG290P section, above).
Resources
Product Resources
-
- Product Page
- Design Files:
- Software:
- RTK Everywhere Firmware
- CH342 USB Driver (manufacturer website)
- QGNSS Software (v2.0)
- ESP32 Arduino Core
- Arduino Board Manager URL:
- SFE Product Showcase
-
- Component Documentation:
- ESP32 Pico-Mini-02:
- LG290P:
- CH342 Datasheet
- RT9080 Datasheet
- JST-GH Connector Specifications
- JST-SH Connector Specifications (Qwiic Connector)
- GitHub Repositories:
- Component Documentation:
Additional Resources
🏭 Manufacturer's Resources
PQMT Commands
Below, are excerpts for a few of the PQTM messages from the GNSS Protocol Specification manual. Users will find these useful for configuring their LG290P GNSS module as an RTK base station or rover.
Documentation
A full list of PQTM messages (proprietary NMEA messages defined by Quectel) supported by LG290P, is provided in section 2.3. PQTM Messages of the GNSS Protocol Specification manual. This protocol is used to configure or read the settings for the LG290P GNSS module.
List of Proprietary Quectel Messages
Message | Type Mode | Message Description |
---|---|---|
PQTMVER | Output | Outputs the firmware version |
PQTMCOLD | Input | Performs a cold start |
PQTMWARM | Input | Performs a warm start |
PQTMHOT | Input | Performs a hot start |
PQTMSRR | Input | Performs a system reset and reboots the receiver |
PQTMUNIQID | Output | Queries the module unique ID |
PQTMSAVEPAR | Input | Saves the configurations into NVM |
PQTMRESTOREPAR | Input | Restores the parameters configured by all commands to their default values |
PQTMVERNO | Output | Queries the firmware version |
PQTMCFGUART | Input/Output | Sets/gets the UART interface |
PQTMCFGPPS | Input/Output | Sets/gets the PPS feature |
PQTMCFGPROT | Input/Output | Sets/gets the input and output protocol for a specified port |
PQTMCFGNMEADP | Input/Output | Sets/gets the decimal places of standard NMEA messages |
PQTMEPE | Output | Outputs the estimated position error |
PQTMCFGMSGRATE | Input/Output | Sets/gets the message output rate on the current interface |
PQTMVEL | Output | Outputs the velocity information |
PQTMCFGGEOFENCE | Input/Output | Sets/gets geofence feature |
PQTMGEOFENCESTATUS | Output | Outputs the geofence status |
PQTMGNSSSTART | Input | Starts GNSS engine |
PQTMGNSSSTOP | Input | Stops GNSS engine |
PQTMTXT | Output | Outputs short text messages |
PQTMCFGSVIN | Input/Output | Sets/gets the Survey-in feature |
PQTMSVINSTATUS | Output | Outputs the Survey-in status |
PQTMPVT | Output | Outputs the PVT (GNSS only) result |
PQTMCFGRCVRMODE | Input/Output | Sets/gets the receiver working mode |
PQTMDEBUGON | Input | Enables debug log output |
PQTMDEBUGOFF | Input | Disables debug log output |
PQTMCFGFIXRATE | Input/Output | Sets/gets the fix interval |
PQTMCFGRTK | Input/Output | Sets/gets the RTK mode |
PQTMCFGCNST | Input/Output | Sets/gets the constellation configuration |
PQTMDOP | Output | Outputs dilution of precision |
PQTMPL | Output | Outputs protection level information |
PQTMCFGODO | Input/Output | Sets/gets the odometer feature |
PQTMRESETODO | Input | Resets the accumulated distance recorded by the odometer |
PQTMODO | Output | Outputs the odometer information |
PQTMCFGSIGNAL | Input/Output | Sets/gets GNSS signal mask |
PQTMCFGSAT | Input/Output | Sets/gets GNSS satellite mask |
PQTMCFGRSID | Input/Output | Sets/gets the reference station ID |
PQTMCFGRTCM | Input/Output | Sets/gets RTCM |
Save Parameters/Restore to Default Settings
PQTMSAVEPAR
-
Saves the current configurations into NVM of the LG290P
PQTMRESTOREPAR
-
Restores the parameters configured by all commands to their default values; this command takes effect after restarting the LG290P
UART Settings
PQTMCFGUART
-
Configures the serial protocol setting for the UART interfaces
-
Current UART interface:
-
A specific UART interface:
Parameters:
Field <Index>
<BaudRate>
<DataBit>
<Parity>
<StopBit>
<FlowCtrl>
Description UART Interface 1
= UART12
= UART23
= UART3
Baud Rate (bps) 9600
115200
230400
460800
921600
Number of Data Bits 8
= 8 bits
Parity 0
= No parity1
= Odd parity2
= Even parity3
= Mark4
= Space
Number of Stop Bit(s) 1
= 1 stop bit2
= 2 stop bits
Flow Control 0
= None
Baud Rate
For ports utilized in conjunction with either the BlueSMiRF or radio transceivers, we recommend reducing the baud rate to 115200bps or lower to avoid overflowing the buffers of the transceiver's serial port.
Configure the Settings
Example Settings
- Port:
UART1
- Baud Rate: 115200bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
- Flow Control: None
Configure the baud rate of the current UART interface to 115200bps:
Configure the baud rate of
UART1
to 115200bps:Configure all parameters of the current UART interface:
Configure all parameters of
UART1
:If there are no errors, users will receive the following response:
Retrieve the Settings
Example Settings
- Port:
UART1
- Baud Rate: 115200bps
- Data Bits: 8
- Parity: No
- Stop Bits: 1
- Flow Control: None
Get the configuration on the current UART interface:
Get the configuration on UART1:
If there are no errors, users will receive the following response:
-
PQTMCFGPROT
-
Configures the input/output protocol on a specified port
Parameters:
Field <PortType>
<PortID>
<InputProt>
<OutputProt>
Description Port Type 1
= UART
Port ID 1
= UART12
= UART23
= UART3
Input/Output Protocols ( HEX
: 32-bit)- Bit
0
= NMEA - Bit
2
= RTCM3
HEX:00000005
BIN:0000 0000 0000 0000 0000 0000 0000 0101
Configure the Settings
Example Settings
- Port:
UART1
- Input Protocol: NMEA & RTCM3
- Input Protocol: NMEA & RTCM3
Configure the configuration on UART1:
If there are no errors, users will receive the following response:
RTK Settings
PQTMCFGSVIN
-
Configures a base station's position either by survey-in mode or fixed mode
Parameters:
Field <Mode>
<CFG_CNT>
<3D_AccLimit>
<ECEF_X>
<ECEF_Y>
<ECEF_Z>
Description Receiver Mode 0
= Disable1
= Survey-in mode2
= Fixed mode
(Position is configured in ECEF coordinates)
Survey-in Mode
Minimum positioning time (seconds)- Range:
0
-86400
- Default:
0
Survey-in Mode
3D positioning accuracy (meters)0
= No limit- Default:
0.0
Fixed Mode
WGS84 ECEF X,Y,Z coordinates (meters)- Default:
0.0000
RTK Base Station Modes
In order to operate as a base station, the LG290P GNSS module requires an accurate position of its antenna. This can be either defined in ECEF coordinates or acquired through a self-survey process.
- Survey-In Mode: The base station's location is established based on a weighted mean of recent solutions of its position. The
<CFG_CNT>
and<3D_AccLimit>
parameters define the shortest amount of time that the position gets surveyed and the maximum standard deviation of the estimated position. - Fixed Mode: The base station's position is provided in ECEF coordinates.
Note
Any error in the base station's location will translate directly into an error in the rover's position.
Configure the Settings
Example Settings
- Mode: Survey-in mode
- Survey Time: 3600 seconds
- 3D Accuracy: 1.2m
- ECEF Coordinates:
- X: -2519265.0514m
- Y: 4849534.9045m
- Z: 3277834.6432m
Configure the configuration on UART1:
If there are no errors, users will receive the following response:
Retrieve the Settings
Example Settings
- Mode: Survey-in mode
- Survey Time: 3600 seconds
- 3D Accuracy: 1.2m
- ECEF Coordinates:
- X: -2519265.0514m
- Y: 4849534.9045m
- Z: 3277834.6432m
Get the configuration on UART1:
If there are no errors, users will receive the following response:
PQTMCFGRCVRMODE
-
Configures the mode that the receiver is operating in
Parameters:
Field <Mode>
Description Operation mode 0
= Unknown-
1
= Rover
When set to this mode, the receiver will restore to default NMEA message output state. 2
= Base Station
When set to this mode, the receiver will automatically disable NMEA message output and enable RTCMMSM4
and RTCMv31005
message output.
Note
After switching the module‘s working mode, save the configuration and then reset the module. Otherwise, it will continue to operate in the original mode.
Configure the Settings
Example Settings
- Port ID:
UART1
- Input Protocol: NMEA & RTCM3
- Input Protocol: NMEA & RTCM3
Configure the configuration on UART1:
If there are no errors, users will receive the following response:
PQTMCFGRTK
-
Configures the operation settings of the RTK mode
Parameters:
Field <DiffMode>
<RelMode>
Description Differential Mode 0
= Disable RTK/RTD feature (Differential data is not used)1
= Auto mode2
= RTD only mode (Only pseudoranges is used)
Absolute/Relative Mode 1
= Absolute mode, ensure absolute position accuracy2
= Relative mode, ensure relative position accuracy
<DiffMode>
=1
and the module enters the RTK only mode.Configure the Settings
Example Settings
- Port ID:
UART1
- Input Protocol: NMEA & RTCM3
- Input Protocol: NMEA & RTCM3
Configure the configuration on UART1:
If there are no errors, users will receive the following response:
Troubleshooting Tips
Need Help?
If you need technical assistance or more information on a product that is not working as you expected, we recommend heading over to the SparkFun Technical Assistance page for some initial troubleshooting.
If you can't find what you need there, the SparkFun GNSS Forum is a great place to ask questions.
Account Registration Required
If this is your first visit to our forum, you'll need to create a Forum Account to post questions.
-
Feature Under Development
Currently, only the UART interface is supported by the module. Support for the I2C and SPI interfaces are still under development.
-
Feature Under Development
Support for the
L1C
frequency band has not been implemented. -
Feature Under Development
Corrections for some of the PPP services have not been implemented.
-
Feature Under Development
The event trigger has not been implemented.