L76K GPS Module教程

产品说明

L76K 是一款支持多卫星系统(GPS、BeiDou、GLONASS、QZSS)、可多系统联合定位和单系统独立定位、支持AGNSS 功能、内置低噪声放大器和声表面滤波器、可向用户提供快速、精准、高性能定位体验的 GNSS 模块。
本模块提供树莓派、STM32、Arduino、Raspberry Pi Pico、ESP32控制例程。


产品参数

产品LC76G(AB)L76KL76B
可兼容
产品图片
GNSSGPS/GLONASS/Galileo/BDS/QZSSGPS/GLONASS/BDS/QZSSGPS/BDS/QZSS
封装特征LCCLCCLCC
尺寸9.7×10.1×2.49.7×10.1×2.49.7×10.1×2.4
重量 (g)0.60.40.5
正常工作温度-40℃ ~+85℃-40℃ ~+85℃-40℃ ~+85℃
存储温度-40℃ ~+90℃-40℃ ~+90℃-40℃ ~+90℃
主要特征
功能标准标准示例
芯片AG3352QAT6558RMT333
L1 接收机类型 ( 通道数 )47跟踪32跟踪/72捕获22跟踪/66捕获
L1 接收机类型 SBAS支持不支持支持
A-GNSS支持支持支持
灵敏度 ( 自动捕获 )-147dBm-148dBm-148dBm
灵敏度 ( 重新捕获 )-159dBm-160dBm-160dBm
灵敏度 ( 跟踪 )-166dBm-162dBm-163dBm
TTFF ( 首次定位时间 ) 冷启动26s,Autonomous
12s,with EASY™
5s,with EPO™
30s,Autonomous
5.5s,With AGNSS
35s,Autonomous
15s,with EASY™
TTFF ( 首次定位时间 ) 温启动20s,Autonomous
2s,with EASY™
/30s,Autonomous
5s,with EASY™
TTFF ( 首次定位时间 ) 热启动1s2s1s
位置精度1.5m CEP2.0m CEP2.5m CEP
速度精度0.1m/s0.1m/s0.1m/s
最大加速度精度0.1m/s²0.1m/s²0.1m/s²
授时精度100ns30ns10ns
最大更新率10Hz5Hz10Hz
默认波特率115200bps9600bps9600bps
Geo-fence/
干扰检测/
Anti-jamming/
低噪放 LNA
电气参数
供电电压2.55to3.6V2.7Vto3.4V2.8Vto4.3V
功耗 ( 捕获 )36mA(G3B)29mA (GPS+BDS)29mA (GPS+BDS)
功耗 ( 跟踪 )36mA(G3B)29mA (GPS+BDS)18mA (GPS+BDS)
功耗 (RTC 备份 / 低功耗13μA8μA7μA
接口
UART
IIC (NMEA)/
重置
时间脉冲
天线
短路检测和保护开路检测
天线类型有源,无源有源,无源有源,无源
天线供电外部或内部外部或内部外部或内部

接口说明

接口说明
VCC电源正(2.7V~5V )
GND电源地
TX串口数据输出
RX串口指令输入
PPS状态指示(定位成功输出秒脉冲)

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识别号,后接自定义的数据体。

PCAS语句

PCAS语句是由芯片供应商定义的NMEA专用语句

语句描述示例功能
$PCAS01,<CMD>*<Checksum>配置 NMEA 串口波特率$PCAS01,1*1D设置串口波特率为9600

<CMD>支持以下波特率:
0 = 4800
1 = 9600
2 = 19200
3 = 38400
4 = 57600
5 = 115200

$PCAS02,<Interval>*<Checksum>设置定位频率$PCAS02,1000*2E设置定位频率为1Hz

<Interval>定位间隔:
1000:设置定位频率为 1 Hz
500:设置定位频率为 2 Hz
200:设置定位频率为 5 Hz

$PCAS03,<nGGA>,<nGLL>,<nGSA>,<nGSV>,<nRMC>,<nVTG>,<nZDA>,<nANT>,<Res>,<Res>,<Res>,<Res>,<Res>,<Res>*<Checksum>配置 NMEA 语句输出类型和输出频率$PCAS03,1,1,1,1,1,1,1,1,0,0,,,0,0*02使能NMEA输出中GGA、GLL、GSA、GSV、RMC、VTG、ZDA、ANT语句输出
(详见L76K&L26K GNSS 协议规范:2.3 PCAS 语句(专用语句))
$PCAS04,<Mode>*<Checksum>配置星系$PCAS04,3*1A配置星系为GPS+BeiDou

<Mode>GNSS星系配置:
1 = GPS
2 = BeiDou
3 = GPS + BeiDou(默认)
4 = GLONASS
5 = GPS + GLONASS
6 = BeiDou + GLONASS
7 = GPS + BeiDou + GLONASS
(QZSS 默认使能且不支持配置。)

$PCAS10,<Flag>*<Checksum>重启模块$PCAS10,0*1C热启动

<Flag>重启模式:
0 = 热启动
1 = 温启动
2 = 冷启动
3 = 冷启动并恢复出厂设置

注意:更改配置内容后需要对应修改校验位<Checksum>
详见L76K芯片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/0/05/L76K_GPS_Module_code.zip
sudo unzip L76K_GPS_Module_code.zip -d ./L76K_GPS_Module_code
sudo chmod 777 -R ./L76K_GPS_Module_code
cd ./L76K_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. 天气晴朗条件下,L76K上电后约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 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。