跳到主要内容

Quectel GPS模组

本文档详细介绍如何在Neardi设备上使用Quectel GPS模组,包括配置��、数据读取、解析和故障排除等内容。

支持的模组型号

  • Quectel EC20(GPS版本):集成GPS/GNSS功能的4G通信模组
  • Quectel RG255C-CN:支持北斗、GPS、GLONASS等多星座定位的5G模组

模组特性

GPS/GNSS功能特性

  • 支持GPS、北斗、GLONASS、Galileo等多星座定位
  • 冷启动时间:≤30秒
  • 热启动时间:≤1秒
  • 定位精度:水平精度≤2.5米(CEP,开阔天空)
  • 支持A-GPS辅助定位
  • 工作温度:-35°C ~ +75°C
  • 扩展温度:-40°C ~ +80°C

接口说明

  • AT指令接口:/dev/ttyUSB2(用于发送AT指令)
  • NMEA数据接口:/dev/ttyUSB1(用于接收GPS数据)

快速开始

1. 硬件连接

硬件接线请参考 RG255C-CNEC20 模组的硬件连接部分。

确保GPS天线正确连接到模组的GPS天线接口,并将天线放置在开阔的室外环境中以获得最佳信号接收效果。

天线类型说明

RG255C-CN 使用 无源天线EC20 使用 有源天线

  • 有源天线:内置低噪声放大器(LNA),需要模组提供直流电源,信号增益更强,适合信号较弱的环境
  • 无源天线:不需要外部供电,结构简单,成本较低,适合信号良好的开阔环境

请根据您的模组型号选择对应的天线类型,使用错误的天线类型可能导致定位性能下降或无法正常工作。

2. 检查模组状态

# 检查模组是否正常识别
lsusb | grep Quectel

# 检查串口设备
ls /dev/ttyUSB*

3. 启用GPS功能

# 启用GPS功能并读取GPS数据
echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2

# 查询GPS状态
echo -e "AT+QGPS?\r\n" > /dev/ttyUSB2

4. 读取GPS数据

# 实时读取NMEA数据
cat /dev/ttyUSB1

详细配置

使用minicom进行交互式操作

除了使用echo命令,您也可以使用minicom进行交互式操作,这样可以实时查看AT指令的响应。

安装minicom

# Ubuntu/Debian
sudo apt install minicom

配置minicom

# 配置minicom
sudo minicom -s

在配置界面中:

  1. 选择 "Serial port setup"
  2. 设置串口设备为 /dev/ttyUSB2
  3. 设置波特率为 115200
  4. 设置数据位为 8,停止位为 1,无奇偶校验
  5. 关闭硬件流控和软件流控
  6. 保存配置并退出

连接到GPS模组

# 连接到GPS模组
sudo minicom -D /dev/ttyUSB2

# 或者直接连接到数据端口查询卫星数据
sudo minicom -D /dev/ttyUSB1

连接后,您可以直接输入AT指令:

AT+QGPS=1
AT+QGPS?
AT+QGPSLOC?

注意

  • /dev/ttyUSB2 用于发送AT指令控制GPS模组
  • /dev/ttyUSB1 用于直接读取NMEA卫星数据

Ctrl+A 然后按 X 退出minicom。

GPS基本配置

启用/禁用GPS

# 启用GPS
echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2

# 禁用GPS
echo -e "AT+QGPS=0\r\n" > /dev/ttyUSB2

# 查询GPS状态
echo -e "AT+QGPS?\r\n" > /dev/ttyUSB2

配置GNSS系统

# 配置支持的GNSS系统(GPS+北斗+GLONASS)
echo -e "AT+QGPSCFG=\"gnssconfig\",1\r\n" > /dev/ttyUSB2

# 查询当前GNSS配置
echo -e "AT+QGPSCFG=\"gnssconfig\"\r\n" > /dev/ttyUSB2

自动启动配置

# 设置开机自动启动GPS
echo -e "AT+QGPSCFG=\"autogps\",1\r\n" > /dev/ttyUSB2

# 禁用开机自动启动
echo -e "AT+QGPSCFG=\"autogps\",0\r\n" > /dev/ttyUSB2

# 查询自动启动配置
echo -e "AT+QGPSCFG=\"autogps\"\r\n" > /dev/ttyUSB2

NMEA输出配置

# 配置NMEA输出语句(默认输出所有语句)
echo -e "AT+QGPSCFG=\"nmeasrc\",1\r\n" > /dev/ttyUSB2

# 设置NMEA输出频率(1Hz)
echo -e "AT+QGPSCFG=\"outport\",\"uartdm\"\r\n" > /dev/ttyUSB2

高级配置

A-GPS配置

# 启用A-GPS
echo -e "AT+QGPSCFG=\"agpsposmode\",1\r\n" > /dev/ttyUSB2

# 配置A-GPS服务器
echo -e "AT+QGPSCFG=\"agpsurl\",\"supl.google.com:7276\"\r\n" > /dev/ttyUSB2

定位模式配置

# 设置定位模式(1=MS-Based, 2=MS-Assisted)
echo -e "AT+QGPSCFG=\"agpsposmode\",1\r\n" > /dev/ttyUSB2

# 设置定位精度要求
echo -e "AT+QGPSCFG=\"accuracy\",50\r\n" > /dev/ttyUSB2

NMEA数据解析

常见NMEA语句格式

GPS模组输出标准的NMEA 0183格式数据,主要包括以下语句:

$GPGGA - 全球定位系统定位数据

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
  • 123519:UTC时间(12:35:19)
  • 4807.038,N:纬度48°07.038'北
  • 01131.000,E:经度11°31.000'东
  • 1:定位质量(0=无效,1=GPS,2=DGPS)
  • 08:使用的卫星数量
  • 0.9:水平精度因子
  • 545.4,M:海拔高度(米)

$GPRMC - 推荐最小定位信息

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
  • 123519:UTC时间
  • A:状态(A=有效,V=无效)
  • 4807.038,N:纬度
  • 01131.000,E:经度
  • 022.4:地面速度(节)
  • 084.4:地面航向(度)
  • 230394:日期(23/03/94)

数据解析脚本示例

创建GPS数据解析脚本:

# 创建GPS解�析脚本
sudo nano /usr/local/bin/gps-parser.sh
#!/bin/bash
# GPS数据解析脚本
# 读取GPS数据并解析关键信息
while IFS= read -r line; do
if [[ $line == \$GPGGA* ]]; then
IFS=',' read -ra ADDR <<< "$line"
TIME="${ADDR[1]}"
LAT="${ADDR[2]} ${ADDR[3]}"
LON="${ADDR[4]} ${ADDR[5]}"
QUALITY="${ADDR[6]}"
SATS="${ADDR[7]}"
ALT="${ADDR[9]} ${ADDR[10]}"

if [ "$QUALITY" != "0" ]; then
echo "$(date): GPS定位成功"
echo " 时间: $TIME"
echo " 纬度: $LAT"
echo " 经度: $LON"
echo " 卫星数: $SATS"
echo " 海拔: $ALT"
echo " 质量: $QUALITY"
echo "---"
fi
fi
done < /dev/ttyUSB1
# 添加执行权限
sudo chmod +x /usr/local/bin/gps-parser.sh

# 运行解析脚本
/usr/local/bin/gps-parser.sh

实际应用示例

1. GPS定位服务

创建系统服务自动获取GPS位置:

# 创建GPS服务脚本
sudo nano /usr/local/bin/gps-service.sh
#!/bin/bash
# GPS定位服务
GPS_LOG="/var/log/gps.log"
GPS_DATA="/tmp/gps_current.json"

# 启用GPS
echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2
sleep 5

# 持续读取GPS数据
while true; do
timeout 10 cat /dev/ttyUSB1 | while IFS= read -r line; do
if [[ $line == \$GPGGA* ]]; then
IFS=',' read -ra ADDR <<< "$line"
if [ "${ADDR[6]}" != "0" ]; then
# 转换为JSON格式
cat > "$GPS_DATA" << EOF
{
"timestamp": "$(date -Iseconds)",
"latitude": "${ADDR[2]} ${ADDR[3]}",
"longitude": "${ADDR[4]} ${ADDR[5]}",
"altitude": "${ADDR[9]} ${ADDR[10]}",
"satellites": "${ADDR[7]}",
"quality": "${ADDR[6]}"
}
EOF
echo "$(date): GPS位置已更新" >> "$GPS_LOG"
break
fi
fi
done
sleep 30
done

故障排除

常见问题及解决方案

1. 无法检测到GPS模组

症状:找不到/dev/ttyUSB设备

解决方案

# 检查USB设备
lsusb | grep Quectel

# 重启模组
echo -e "AT+CFUN=1,1\r\n" > /dev/ttyUSB2

2. GPS无法定位

症状:NMEA数据中定位质量为0

解决方案

# 检查GPS状态
echo -e "AT+QGPS?\r\n" > /dev/ttyUSB2

# 检查天线连接
echo -e "AT+QGPSGNMEA=\"GSV\"\r\n" > /dev/ttyUSB2

# 重启GPS
echo -e "AT+QGPS=0\r\n" > /dev/ttyUSB2
sleep 2
echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2

3. 定位时间过长

症状:首次定位时间超过5分钟

解决方案

# 启用A-GPS加速定位
echo -e "AT+QGPSCFG=\"agpsposmode\",1\r\n" > /dev/ttyUSB2

# 配置时间同步
echo -e "AT+CCLK?\r\n" > /dev/ttyUSB2

# 检查天线位置(确保在室外开阔环境)

4. GPS无法关闭

症状:使用AT+QGPS=0命令无法关闭GPS功能

解决方案

# 方法1:强制关闭GPS
echo -e "AT+QGPS=0\r\n" > /dev/ttyUSB2

**注意**:如果该指令无效,请尝试方法2重启GPS功能。

# 方法2:重启模组GPS功能(推荐)
echo -e "AT+CFUN=1,1\r\n" > /dev/ttyUSB2
sleep 5
echo -e "AT+QGPS=0\r\n" > /dev/ttyUSB2

# 方法3:禁用自动启动后重启
echo -e "AT+QGPSCFG=\"autogps\",0\r\n" > /dev/ttyUSB2
echo -e "AT+CFUN=1,1\r\n" > /dev/ttyUSB2

5. NMEA数据乱码

症状:接收到的数据格式错误

解决方案

# 检查串口配置
stty -F /dev/ttyUSB1

# 重新配置串口
stty -F /dev/ttyUSB1 115200 cs8 -cstopb -parenb

# 检查NMEA输出配置
echo -e "AT+QGPSCFG=\"nmeasrc\"\r\n" > /dev/ttyUSB2

性能优化

1. 快速定位配置

# 启用所有GNSS系统以加快定位
echo -e "AT+QGPSCFG=\"gnssconfig\",1\r\n" > /dev/ttyUSB2

# 启用A-GPS
echo -e "AT+QGPSCFG=\"agpsposmode\",1\r\n" > /dev/ttyUSB2

# 设置较高的定位频率
echo -e "AT+QGPSCFG=\"gpsnmeatype\",31\r\n" > /dev/ttyUSB2

2. 功耗优化

# 设置GPS省电模式
echo -e "AT+QGPSCFG=\"powermode\",1\r\n" > /dev/ttyUSB2

# 按需启动GPS(而非常驻)
echo -e "AT+QGPSCFG=\"autogps\",0\r\n" > /dev/ttyUSB2

设备文件说明

AT指令参考

指令功能示例
AT+QGPS启用/禁用GPSAT+QGPS=1
AT+QGPS?查询GPS状态AT+QGPS?
AT+QGPSCFGGPS配置AT+QGPSCFG="autogps",1
AT+QGPSGNMEA获取NMEA数据AT+QGPSGNMEA="GGA"
AT+QGPSEND结束GPS会话AT+QGPSEND

回车和换行说明

  • \r\n:确保AT指令�被正确解释并执行
  • 在某些系统中可能需要使用不同的行结束符

Quectel_EC2x&EG2x&EG9x&EM05系列_GNSS_应用指导_V1.2.pdf 更多详细 AT 指令见此附件