SeeedStudio XIAO L76K GNSS模块入门指南

介绍
SeeedStudio XIAO L76K GNSS模块是一款与所有XIAO开发板兼容的多GNSS(全球导航卫星系统)模块,支持GPS、北斗(BDS)、GLONASS和QZSS系统,允许多系统组合或单系统独立定位。它还支持AGNSS功能,内置低噪声放大器和声表面滤波器,提供快速、准确、高性能的良好定位体验。
该模块配备高性能有源GNSS天线,旨在覆盖GPS L1 C/A、北斗B1和GLONASS L1频段。设计还包含一个微小的亮绿色LED,用于指示定位时的1PPS输出。
特性
- 增强接收能力: 内置低噪声放大器和声表面滤波器,提高灵敏度并降低噪声
- 高精度: 32/72通道,-162dBm跟踪,-160dBm重新捕获灵敏度
- 节能高效: 41mA跟踪/捕获,360µA待机
- 多GNSS系统: 采用Quectel L76K芯片,支持GPS、北斗、GLONASS和QZSS
- 陶瓷天线: 增强信号接收,优于传统天线。
规格参数
项目 | 详细信息 |
---|---|
GNSS频段 | GPS L1 C/A: 1575.42MHz GLONASS L1: 1602MHz 北斗B1: 1561.098MHz |
通道数 | 32跟踪通道/72捕获通道 |
TTFF(首次定位时间) | 冷启动:30s(无AGNSS),5.5s(有AGNSS) 热启动:5.5s(无AGNSS),2s(有AGNSS) |
灵敏度 | 自动捕获:-148dBm 跟踪:-162dBm 重新捕获:-160dBm |
精度 | 位置:2.0m CEP 速度:0.1m/s 加速度:0.1m/s² 时间:30ns |
UART接口 | 波特率:9600~115200bps(默认9600bps) 更新频率:1Hz(默认),5Hz(最大) 协议:NMEA 0183,CASIC专有协议 |
天线 | 类型:有源天线 工作频率:1559–1606MHz 同轴电缆:RF1.13 长度=10cm 电缆连接器:U.FL插头直角 |
电流消耗(含有源天线) | 自动捕获:41mA 跟踪:41mA 待机:360uA |
尺寸 | 18mm x 21mm |
硬件概述
在开始之前,我们可以参考以下图片来了解 SeeedStudio XIAO L76K GNSS 模块的引脚设计,以便于我们理解模块的功能。

入门指南
硬件准备
为了充分体验 L76K GNSS 模块的功能,我们建议将其与我们 XIAO 系列的主板配对使用。以下任何 XIAO 型号都与 L76K GNSS 模块兼容。
Seeed Studio XIAO SAMD21 | Seeed Studio XIAO RP2040 | Seeed Studio XIAO nRF52840 (Sense) | Seeed Studio XIAO ESP32C3 | Seeed Studio XIAO ESP32S3 (Sense) |
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
在 XIAO 主板上使用此模块之前,您需要在模块上安装排针插座,并将有源 GNSS 天线插到模块上。连接到 XIAO 时,请特别注意模块的安装方向,请不要反向插入,否则很可能会烧坏模块或 XIAO。

请特别注意模块的安装方向,请不要反向插入,否则很可能会烧坏模块或 XIAO。
软件准备
要使用 SeeedStudio XIAO L76K GNSS 模块,我们需要对 XIAO 系列进行编程。推荐的编程工具是 Arduino IDE,您需要为 XIAO 配置 Arduino 环境并添加板载包。
如果这是您第一次使用 Arduino,我们强烈建议您参考 Arduino 入门指南。
步骤 1. 根据您的操作系统下载并安装稳定版本的 Arduino IDE
步骤 2. 启动 Arduino 应用程序
步骤 3. 为您使用的 XIAO 配置 Arduino IDE
-
如果您想在后续教程中使用 Seeed Studio XIAO SAMD21,请参考**此教程**完成添加。
-
如果您想在后续教程中使用 Seeed Studio XIAO RP2040,请参考**此教程**完成添加。
-
如果您想在后续教程中使用 Seeed Studio XIAO nRF52840,请参考**此教程**完成添加。
-
如果您想在后续教程中使用 Seeed Studio XIAO ESP32C3,请参考**此教程**完成添加。
-
如果您想在后续教程中使用 Seeed Studio XIAO ESP32S3,请参考**此教程**完成添加。
步骤 4. 将 TinyGPSPlus 库添加到 Arduino
首先,您需要在 Arduino IDE 中搜索并下载最新版本的 TinyGPSPlus 库。

应用演示
示例 1:读取和显示 GNSS 数据
一旦硬件和软件准备就绪,我们开始上传第一个示例程序。L76K GNSS 模块在上电后每 1 秒通过串口打印 GNSS 信息。在这个示例中,我们将使用 TinyGPSPlus 库来解析从模块接收到的 NMEA 语句,并将包括纬度、经度和时间在内的结果打印到 Arduino IDE 的串口监视器。
以下是源代码:
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
/*
此示例代码演示了如何在SeeedStudio XIAO上使用L76K GNSS模块。
*/
static const int RXPin = D7, TXPin = D6;
static const uint32_t GPSBaud = 9600;
// TinyGPSPlus对象
TinyGPSPlus gps;
// 与GNSS模块的串口连接
SoftwareSerial ss(RXPin, TXPin);
void setup() {
Serial.begin(115200);
#ifdef ARDUINO_SEEED_XIAO_RP2040
pinMode(D2,OUTPUT);
digitalWrite(D2,1);
pinMode(D0,OUTPUT);
digitalWrite(D0,1);
#endif
ss.begin(GPSBaud);
Serial.println(F("DeviceExample.ino"));
Serial.println(F("使用L76K GNSS模块的TinyGPSPlus简单演示"));
Serial.print(F("测试TinyGPSPlus库版本 "));
Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("作者:Mikal Hart"));
Serial.println();
}
void loop() {
// 此代码在每次正确编码新语句时显示信息。
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10) {
Serial.println(F("未检测到GPS:请检查接线。"));
while (true);
}
}
void displayInfo() {
Serial.print(F("位置:"));
if (gps.location.isValid()) {
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
} else {
Serial.print(F("无效"));
}
Serial.print(F(" 日期/时间:"));
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("无效"));
}
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("无效"));
}
Serial.println();
}
只需选择您正在使用的 XIAO 和 XIAO 所在的端口号,编译并上传即可。
确保 L76K GNSS 模块放置在室外能够接收到良好 GNSS 信号的地方。将代码上传到您的 XIAO 并等待几分钟,您应该能在串口监视器上看到显示的信息。

此代码使用 TinyGPSPlus 库通过串口连接从 L76K GNSS 模块读取数据,并在串口监视器上显示有效的位置信息和日期/时间。
配置
示例 1:改变 LED 的行为
本节演示如何通过串口通信发送特定的十六进制命令来使用 Arduino 控制绿色 LED。下面提供的示例展示了如何关闭 LED,然后将其恢复到正常闪烁状态。
static const int RXPin = D7, TXPin = D6;
static const uint32_t GPSBaud = 9600;
SoftwareSerial SerialGNSS(RXPin, TXPin);
void setup() {
SerialGNSS.begin(GPSBaud);
// 定义用于关闭 LED 的字节数组
byte OffState[] = {0xBA, 0xCE, 0x10, 0x00, 0x06, 0x03, 0x40,
0x42, 0x0F, 0x00, 0xA0, 0x86, 0x01, 0x00,
0x00,
0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00,
0xF0,
0xC8, 0x17, 0x08};
// 定义用于恢复 LED 闪烁状态的字节数组
byte RecoverState[] = {0xBA, 0xCE, 0x10, 0x00, 0x06, 0x03, 0x40,
0x42, 0x0F, 0x00, 0xA0, 0x86, 0x01, 0x00,
0x03,
0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00,
0xF3,
0xC8, 0x17, 0x08};
// 发送关闭 LED 的命令。
SerialGNSS.write(OffState, sizeof(OffState));
// 等待 5 秒。
delay(5000);
// 发送命令使 LED 恢复闪烁。
SerialGNSS.write(RecoverState, sizeof(RecoverState));
}
void loop() {}
详情请参见 Quectel_L76K_GNSS 的 CASIC 协议消息。
struct CASIC_Messages {
uint16_t header; // 0xBA, 0xCE
uint16_t len; // 0x10, 0x00
uint8_t class; // 0x06
uint8_t id; // 0x03
uint8_t* payload; // 0x40, 0x42, 0x0F, 0x00, 0xA0, 0x86, 0x01, 0x00, ->8
// 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, ->8
uint8_t checksum; // 0xF0,0xC8, 0x17, 0x08
} L76KStruct;
资源
- PDF: L76K GNSS Module for Seeed Studio XIAO 原理图
- PDF: Quectel_L76K_GNSS_协议规范_V1.0
- PDF: Quectel_L76K_GNSS_Protocol_Specification_V1.1
- GitHub: Seeed_L76K-GNSS_for_XIAO
故障排除
Details
可充电电池能为 XIAO 供电吗?
不能,在这种情况下,可充电电池仅用于实时时钟(RTC)和维持 L76K GNSS 模块的热启动状态。它不能用作 XIAO 或 GNSS 模块一般操作的主要电源。为什么 GNSS 信息不在串口监视器上显示?
确保 L76K GNSS 模块放置在室外,能够接收到良好的 GNSS 信号。
Details
为什么设备插入 XIAO RP2040 时绿灯持续亮着?
要解决这个问题,您需要将 D0 和 D2 拉高。定位绿灯的持续亮起表明设备已进入异常工作状态。pinMode(D2,OUTPUT);
digitalWrite(D2,1);
pinMode(D0,OUTPUT);
digitalWrite(D0,1);
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。