Skip to main content

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(有 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

硬件概述

在开始之前,我们可以参考以下图片来了解 SeeedStudio XIAO L76K GNSS 模块的引脚设计,以便于我们理解该模块的功能。

入门指南

硬件准备

为了充分体验 L76K GNSS 模块的功能,我们建议将其与我们 XIAO 系列的主板配对使用。以下任何一款 XIAO 型号都与 L76K GNSS 模块兼容。

Seeed Studio XIAO SAMD21Seeed Studio XIAO RP2040Seeed Studio XIAO nRF52840 (Sense)Seeed Studio XIAO ESP32C3Seeed Studio XIAO ESP32S3 (Sense)

在XIAO主板上使用此模块之前,您需要在模块上安装排针插座,并将有源GNSS天线插入模块。连接到XIAO时,请特别注意模块的安装方向,请不要反向插入,否则很可能烧毁模块或XIAO。

caution

请特别注意模块的安装方向,请不要反向插入,否则很可能烧毁模块或XIAO。

软件准备

要使用SeeedStudio XIAO的L76K GNSS模块,我们需要对XIAO系列进行编程。推荐的编程工具是Arduino IDE,您需要为XIAO配置Arduino环境并添加板载包。

tip

如果这是您第一次使用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>
/*
This sample sketch demonstrates how to use L76K GNSS Module on SeeedStudio XIAO.
*/
static const int RXPin = D7, TXPin = D6;
static const uint32_t GPSBaud = 9600;

// The TinyGPSPlus object
TinyGPSPlus gps;

// The serial connection to the GNSS module
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("A simple demonstration of TinyGPSPlus with L76K GNSS Module"));
Serial.print(F("Testing TinyGPSPlus library v. "));
Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
}

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 (millis() > 5000 && gps.charsProcessed() < 10) {
Serial.println(F("No GPS detected: check wiring."));
while (true);
}
}

void displayInfo() {
Serial.print(F("Location: "));
if (gps.location.isValid()) {
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
} else {
Serial.print(F("INVALID"));
}

Serial.print(F(" Date/Time: "));
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("INVALID"));
}

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("INVALID"));
}

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);

// Define the byte array to turn the LED off
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};

// Define the byte array to recover the LED blinking state
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};

// Send the command to turn off the LED.
SerialGNSS.write(OffState, sizeof(OffState));
// Wait for 5 seconds.
delay(5000);
// Send the command to return the LED to blinking.
SerialGNSS.write(RecoverState, sizeof(RecoverState));
}

void loop() {}
info

For details to see CASIC Protocol Messages of Quectel_L76K_GNSS.

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;

资源

故障排除

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);

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...