LC76G-GNSS-Module 使用教程

产品说明

LC76G GNSS Module是一款 GNSS (全球导航卫星系统)模块,支持 GPS、北斗(BDS)、GLONASS、Galileo 和 QZSS 多重卫星系统,可多系统联合定位和单系统独立定位、支持 EPO™ (扩展预测轨道)和 EASY™ (嵌入式辅助系统)功能,可向用户提供快速、准确、高性能定位体验的 GNSS 模块。。
本模块提供树莓派、Arduino、Raspberry Pi Pico、ESP32控制例程。

接口说明

接口说明
VCC电源正(3.3V~5V )
GND电源地
TX串口数据输出
RX串口指令输入
PPSGPS 状态指示灯
RST复位引脚
SDAI2C 数据线
SCLI2C 时钟线

NMEA0183

  • 主控设备从串口输出NMEA0183信息,并解析NMEA 0183语句输出人类适读信息
  • NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association )为海用电子设备制定的标准格式.现已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议
  • NMEA 0183包括$GPZDA、$GPRMC、$GPVTG、$GPGNS、$GPGGA、$GPGSA、$GPGSV*3、$GPGLL、$GPGST等7种协议帧,其中$后跟随的前两个字符代表国家或地区的GNSS系统,比如GPGGA代表美国GPS ,BDGGA代表中国北斗 ,GLGGA代表俄罗斯GLONASS ,GAGGA代表欧盟Galileo,GNGGA代表多星联合定位
  • 以$GPRMC为例简要描述协议帧中各部分所代表的信息,其它6种协议帧请查阅NMEA 0183手册
Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
$GNRMC,010555.000,A,2232.4682,N,11404.6748,E,0.00,125.29,230822,,,D*71
<1> UTC时间,hhmmss.sss(时分秒)格式 
<2> 定位状态,A=有效定位,V=无效定位 
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 
<4> 纬度半球N(北半球)或S(南半球) 
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 
<6> 经度半球E(东经)或W(西经) 
<7> 地面速率(000.0~999.9节,前面的0也将被传输) 
<8> 地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输) 
<9> UTC日期,ddmmyy(日月年)格式 
<10> 磁偏角(000.0~180.0度,前面的0也将被传输) 
<11> 磁偏角方向,E(东)或W(西) 
<12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
*hh : 最后校验码*hh是用做校验的数据。在通常使用时,它并不是必须的,但是当周围环境中有较强的电磁干扰时,则推荐使用。hh代表了“$”和“*”的所有字符的按位异或值(不包括这两个字符)。个别厂商自己定义语句格式以“$P”开头,其后是3个字符的厂家ID识别号,后接自定义的数据体。

PAIR语句

本章介绍常用PAIR消息(芯片组供应商定义的专有NMEA消息)。“P”表示专有消息,“AIR”表示芯片组供应商定义的命令

语句描述示例功能
$PAIR864,<PortType>,<PortIndex>,<Baudrate>*<Checksum>配置 NMEA 串口波特率$PAIR864,0,0,115200*1B
$PAIR864,0,0,9600*13
设置串口波特率为115200/9600

<CMD>支持以下波特率:
9600
115200(default)
230400
460800
921600
3000000

$PAIR050,设置定位频率$PAIR050,1000*12设置定位频率为1Hz

<Interval>定位间隔:
100–1000, (Default:1000) (如果设定频率大于1 Hz,则在设定频率下仅输出RMC和GGA,其他NMEA句子的输出保持在1Hz。)

$PAIR062,<Type>,<OutputRate>*<Checksum>配置 NMEA 语句输出类型和输出频率$PAIR062,0,3*3D设置NMEA输出中GGAT语句输出频率为每定位3次输出一次
(详见Quectel_LC26G&LC76G&LC86G_GNSS_Protocol_Specification_V1.0.0_Preliminary,2.3.13
$PAIR066,<GPS_Enabled>,<GLONASS_Enabled>,<Galileo_Enabled>,<BDS_Enabled>,<QZSS_Enabled>,0*<Checksum>配置星系$PAIR066,1,1,1,1,0,0*3A配置星系为GPS+GLONASS+Galileo+BDS

<*_Enabled>GNSS星系配置:
0 = Disable 1 = Enable (通过修改各个使能位配置GNSS星系模式)

$PAIR004*<Checksum>热启动$PAIR004*3E热启动
$PAIR005*<Checksum>温启动$PAIR005*3F温启动
$PAIR006*<Checksum>冷启动$PAIR006*3C冷启动
$PAIR007*<Checksum>清除系统配置并冷启动$PAIR007*3D清除系统配置并冷启动

注意:更改配置内容后需要对应修改校验位<Checksum>
详见LC76G芯片GNSS协议规范

windows使用

  • 连接GPS天线,连接USB转UART模块(须另购),再接连接到电脑。如图所示。连接之后,电源指示灯(PWR)长亮。


注意:红线不是VCC,黑线不是GND

模块USB转串口
VCC5V/3.3V
GNDGND
RXTXD
TXRXD
PPS不接
  • 打开电脑串口调试助手,设置对应的串口号(我这里是COM5),波特率9600,8 位数据位,1 位停止位,无校验位,无流控制。

串口助手可以在此处下载

注:1.由于 GPS 室内搜星不稳定,请将模块或者天线放到阳台或窗户旁,或者直接在户外进行实验。
2. 模块首次定位(冷启动),在正常情况下(户外,天气良好,没有大型建筑遮挡),需要35秒时间才能定位成功,请耐心等待。如果天气条件不好,可能需要更长的定位时间,甚至无法定位。

下载 u-center解压打开安装。运行程序,点击 Receiver 菜单,选择 Port,设置实际的串口号,Baudrate: 9600。点击 (连接按钮) ,即可连接到GPS模块, u-center 将显示各种信息,如下图:

树莓派使用

树莓派提供C与pyton两种程序控制

开启Uart接口(若已开启可跳过)

打开树莓派终端,输入以下指令进入配置界面

sudo raspi-config

选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口: 


硬件连接

模块RaspberryPi
VCC5V
GNDGND
TXP15
RXP14
PPS不接


minicom调试

下载安装minicom工具:

sudo apt-get install minicom

定位硬件串口对应串口号:

ls -l /dev/serial*

如果系统曾经使用过串口且修改过配置,可能会出现下面两种情况:
打开串口功能后默认状态:

修改串口配置后状态:

需要找到与serial0(即GPIO上的串口)对应的串口号,如图一该串口号是ttyS0,图二是ttyAMA0; 使用minicom打开串口:

sudo minicom -D /dev/ttyS0 -b 9600

-D代表端口,如果上一步定位串口号为ttyAMA0,那么是:

sudo minicom -D /dev/ttyAMA0 -b 9600

minicom默认波特率为115200,如需设置波特率为9600加参数 -b 9600。

退出:Ctrl+A 然后单独按X,YES 回车

下载并运行测试例程

下载程序

cd
sudo apt-get install unzip -y
sudo wget https://www.waveshare.net/w/upload/d/dc/LC76G_GPS_Module_code.zip
sudo unzip LC76G_GPS_Module_code.zip -d ./LC76G_GPS_Module_code
sudo chmod 777 -R ./LC76G_GPS_Module_code
cd ./LC76G_GPS_Module_code

或者点击下载示例程序,解压后放入树莓派

环境配置

安装例程相关函数库

BCM2835

#打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/

wiringPi

  1. 打开树莓派终端,并运行以下指令
cd
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
#Bullseye分支系统使用如下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现2.70版本,如果没有出现说明安装出错

python

新版树莓派系统运行python3程序需要安装GPS数据解析库

cd L76K_GPS_Module_code/RaspberryPi/python3/micropyGPS-master
sudo python setup.py install
#等待库安装完成

如果旧系统仅支持Python2需要函数库

sudo apt-get update
sudo pip install RPi.GPIO
sudo apt-get install python-serial

C程序

cd C
make clean
make
sudo ./main

Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。

python3程序

cd python
sudo python main.py

预期效果
模块首次定位需要35秒的等待时间。
前面是模块输出的原始数据。
Time是L76X GPS Module输出的时间。
Latitude and longitude是输出的经纬度和经纬方向。
Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。

python2程序

cd python
sudo python main.py

预期效果 模块首次定位需要35秒的等待时间。
前面是模块输出的原始数据。
Time是L76X GPS Module输出的时间。
Latitude and longitude是输出的经纬度和经纬方向。
Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。

Arduino使用

本例程已经在Arduino MEGA2560上进行了验证。
点击下载示例程序或在资料中下载。

硬件连接

模块Arduino
VCC5V
GNDGND
TXRX2
RXTX2
PPSNC

例程使用

选择Arduino mega2560开发板和其对应端口号,验证并上传程序
模块首次定位需要35秒的等待时间。
打开串口助手,设置波特率为9600
前面是模块输出的原始数据。
Time是L76X GPS Module输出的时间。
前面是模块输出的原始数据。Time是L76X GPS Module输出的时间。Lat和Lon是输出的经纬度和经纬方向。 B_Lat和B_Lon为转换后的百度地图坐标,复制坐标到http://api.map.baidu.com/lbsapi/getpoint/,就可以看到你的位置了(坐标格式为经度Lat在前,纬度Lon在后,中间用英文符号的逗号分隔)。

文件中也附带了Arduino uno例程,但是该平台数据精度不足,仅实现了显示卫星数据中的时间,想其它信息可自行修改程序。

Raspberry Pi Pico使用

硬件连接


模块Raspberry Pi Pico
VCC5V
GNDGND
TXGP1
RXGP0
PPSNC

环境搭建

本教程使用Thonny进行代码测试,点击下载相关IDE并安装后打开Thonny

  • 请参考官方文档搭建python环境,在Thonny的Tools->Options->Interprete选择Raspberry Pi Pico设备,如下图所示


程序下载

1. 点击下载示例程序
2. 解压示例程序; 3. 打开Thonny,先确认已经连接到了pico,之后在左上角打开解压后的程序路径,右键pico文件夹,选择上传,如图所示

例程使用

1. 打开Thonny IDE,选择pico目录,双击打开coordinate_convert.py文件然后运行例程,如图所示

2. 天气晴朗条件下,LC76G上电后约30秒会获取到定位信息,如下图运行程序显示的信息

3.用户可以复制Thonny中terminal显示的定位信息,使用Google Map,Baidu Map进行坐标标注

ESP32

硬件连接


模块ESP32
VCC5V
GNDGND
TXP16
RXP17
PPSNC


环境搭建

在Arduino IDE中安装ESP32插件

  1. 打开Arduino IDE,点击左上角的文件,选择首选项

  2. 在附加开发板管理器网址中添加如下链接,然后点击OK
    https://dl.espressif.com/dl/package_esp32_index.json


    注意:如果您已经有 ESP8266 板 URL,您可以使用逗号分隔 URL,如下所示:

    https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. 下载packages压缩包,将解压的packages文件复制到如下路径下
    C:\Users\xutong\AppData\Local\Arduino15


    注意:将里面用户名:xutong替换成自己的用户名

使用例程

  • 下载例程并解压,使用配置好的Arduino IDE打开ESP32目录下L76X.ino文件,等待文件全部加载。
  • 使用数据线将esp32开发板连接到电脑,选择正确的开发板型号和端口号。
  • 这里以ESP32-S芯片开发板举例:依次点击:工具->开发板->esp32->ESP32 Dev Module,并且选择对应的端口号
  • 点击左上角“验证”,等待验证完成无报错后点击“上传”
  • 上传完成后程序自动运行,依次点击:工具->串口监视器,在串口监视器窗口即可观察到程序运行效果:


模块首次定位需要35秒的等待时间.(如果信号条件不佳可能会更久)
前面是模块输出的原始数据。Time是L76X GPS Module输出的时间。Lat和Lon是输出的经纬度和经纬方向。
B_Lat和B_Lon为转换后的百度地图坐标,复制坐标到http://api.map.baidu.com/lbsapi/getpoint/,就可以看到你的位置了(坐标格式为经度Lat在前,纬度Lon在后,中间用英文符号的逗号分隔)。

Jetson Nano使用

该示例已在烧录ubantu系统的JETSON-NANO-DEV-KIT开发板上验证

硬件连接


模块JETSON-NANO-DEV-KIT
VCC5V
GNDGND
TX10
RX8
PPSNC

环境配置

安装pip工具

使用apt-get工具安装python工具pip

sudo apt-get install python3-pip   #python3
#之后需要输入用户密码验证
sudo apt-get install python2-pip   #python2
#之后需要输入用户密码验证

等待安装完成。

安装python库

#python3程序需要的库:
sudo pip3 install pyserial     #串口控制库
sudo pip3 install settools     #安装工具
cd jetson/python3/micropyGPS-master
sudo python3 setup.py install  #数据解析库
#python2程序需要的库:
sudo pip install pyserial     #串口控制库

使用例程

进入目录运行main.py

cd jetson/python3
sudo python3 main.py


模块首次定位需要35秒的等待时间。
前面是模块输出的原始数据。
Time是L76X GPS Module输出的时间。
Latitude and longitude是输出的经纬度和经纬方向。
Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。

资料

文档

程序

软件

数据手册

FAQ

问题:为什么定位不准?

定位精度与所在的环境有关系,一是天气原因下雨天,空气中水分多,影响了信号的传输。这也是为什么夏季手机信号稍弱的原因,夏季雨多潮湿,再加之高温蒸发,使得空气中的水分变多,从而影响卫星信号的传输。二高楼因素在一些高层建筑物旁边容易造成卫星信号不好或者信号偏移问题,在建筑低层或者地下建筑,如地下停车场、地下商场、地铁、隧道等,由于受到墙体的遮挡,室内信号衰减非常大,就形成了信号覆盖弱点,所以造成定位不精准,误差大等情况,同样在一些高山阻挡下也容易导致定位不精准。三是卫星数量农村及偏僻地区上空安置卫星数量少,造成位置偏差大等情况。四卫星信号会受到大气电离层、地面建筑物、森林、水面等因素的影响,导致计算出现偏差


问题:我在户外还是接收不到数据?

请检查天线是否接好,还有有字的一面要朝下,天线的接收在没有字的那一面


问题:为什么和手机定位的不一致?

此模块定位只是单独靠卫星定位,而手机定位不只是靠卫星定位,手机定位还依靠AGPS(辅助全球卫星定位系统)、LBS基站定位、Wifi定位、蓝牙定位等等各种定位系统结合,因此手机定位有着更加快的定位速度,精度方面在不同给环境下也是有着不同的区别,并且手机的GPS信号支持的多重卫星系统和模块支持的多重卫星系统不一致。所以模块和手机定位的数据有一定的差异。


问题:为什么发送修改波特率命令,模块波特率还是没有变呢?

首先保证发送命令的波特率和串口输出的波特率一致,在模块搜索到卫星数比较多的时候波特率从高向低设定可能会无法修改,因为波特率太低模块无法一次性发送所有的数据,可以考虑使用SET_NMEA_OUTPUT指令减少输出的数据字段,然后再修改波特率即可。


问题:为什么我配置好了,第二次开机又恢复初始状态了?

L76内部没有存储器,无法保存数据,一旦掉电即会回复初始。


问题:如何解析获取到的定位信息?

下面以GNRMC为例,解析获取到的定位信息,如下所示:




问题:LC76G 是否提供高度信息,我查看了样品,只显示纬度和经度?


有的,海拔高度是24.239米,详细说明如下:

$GNGGA,085509.000,2232.467506,N,11404.694718,E,2,14,0.95,24.239,M,-1.934,M,,*57
$GNGGA:NMEA语句的类型,表示这是GGA(Global Positioning System Fix Data)语句。
085509.000:UTC时间,格式为hhmmss.sss,这里是08时55分09.000秒。
2232.467506:纬度,格式为ddmm.mmmmmm,这里是22度32.467506分。
N:纬度方向,N表示北纬。
11404.694718:经度,格式为dddmm.mmmmmm,这里是114度04.694718分。
E:经度方向,E表示东经。
2:定位状态,2表示差分GPS(DGPS)定位。
14:使用的卫星数量。
0.95:水平精度因子(HDOP)。
24.239:天线的海拔高度,以米为单位。
M:海拔高度的单位,M表示米。
-1.934:大地水准面相对于椭球面的高度差,以米为单位。
M:单位,同样为米。
空字段:差分GPS数据的年龄(没有值)。
空字段:差分参考站ID(没有值)。
*57:校验和,用于检查数据的完整性。



问题:为什么运行示例程序没有打印位置信息,打开minicom也没有?


问题:LC76G GPS Modbus 的孔距尺寸是多少?


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841