使用 L76K GNSS 模块与 SeeedStudio XIAO 开发板入门
本文档由 AI 翻译。如您发现内容有误或有改进建议,欢迎通过页面下方的评论区,或在以下 Issue 页面中告诉我们:https://github.com/Seeed-Studio/wiki-documents/issues

简介
L76K GNSS 模块是一个多系统全球导航卫星系统模块,兼容所有 XIAO 开发板,支持 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(有 GNSS) 热启动: 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 插头 RA |
电流消耗(带主动天线) | 自动捕获: 41mA 跟踪: 41mA 待机: 360uA |
尺寸 | 18mm x 21mm |
硬件概览
在开始之前,我们可以参考以下图片来了解 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(D10,OUTPUT);
digitalWrite(D10,1);
pinMode(D0,OUTPUT);
digitalWrite(D0,1);
#endif
ss.begin(GPSBaud);
Serial.println(F("DeviceExample.ino"));
Serial.println(F("使用 TinyGPSPlus 和 L76K GNSS 模块的简单演示"));
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 模块用于 Seeed Studio XIAO 的原理图
- PDF: QuectelL76K_GNSS协议规范_V1.0
- PDF: Quectel_L76K_GNSS_Protocol_Specification_V1.1
- GitHub: Seeed_L76K-GNSS_for_XIAO
故障排查
充电电池可以为 XIAO 供电吗?
为什么 GNSS 信息没有显示在串口监视器上?
请确保 L76K GNSS 模块放置在室外,以便接收到良好的 GNSS 信号。
为什么设备插入 XIAO RP2040 时绿色指示灯常亮?
pinMode(D10,OUTPUT);
digitalWrite(D10,1);
pinMode(D0,OUTPUT);
digitalWrite(D0,1);
技术支持与产品讨论
感谢您选择我们的产品!我们为您提供多种支持渠道,以确保您使用我们的产品时体验顺畅。我们提供多种沟通方式,以满足不同的偏好和需求。