LC76G GNSS Module是一款 GNSS (全球导航卫星系统)模块,支持 GPS、北斗(BDS)、GLONASS、Galileo 和 QZSS 多重卫星系统,可多系统联合定位和单系统独立定位、支持 EPO™ (扩展预测轨道)和 EASY™ (嵌入式辅助系统)功能,可向用户提供快速、准确、高性能定位体验的 GNSS 模块。。
本模块提供树莓派、Arduino、Raspberry Pi Pico、ESP32控制例程。
接口 | 说明 |
---|---|
VCC | 电源正(3.3V~5V ) |
GND | 电源地 |
TX | 串口数据输出 |
RX | 串口指令输入 |
PPS | GPS 状态指示灯 |
RST | 复位引脚 |
SDA | I2C 数据线 |
SCL | I2C 时钟线 |
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消息(芯片组供应商定义的专有NMEA消息)。“P”表示专有消息,“AIR”表示芯片组供应商定义的命令
语句 | 描述 | 示例 | 功能 |
---|---|---|---|
$PAIR864,<PortType>,<PortIndex>,<Baudrate>*<Checksum> | 配置 NMEA 串口波特率 | $PAIR864,0,0,115200*1B $PAIR864,0,0,9600*13 | 设置串口波特率为115200/9600 <CMD>支持以下波特率: |
$PAIR050, | 设置定位频率 | $PAIR050,1000*12 | 设置定位频率为1Hz <Interval>定位间隔: |
$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星系配置: |
$PAIR004*<Checksum> | 热启动 | $PAIR004*3E | 热启动 |
$PAIR005*<Checksum> | 温启动 | $PAIR005*3F | 温启动 |
$PAIR006*<Checksum> | 冷启动 | $PAIR006*3C | 冷启动 |
$PAIR007*<Checksum> | 清除系统配置并冷启动 | $PAIR007*3D | 清除系统配置并冷启动 |
注意:更改配置内容后需要对应修改校验位<Checksum>
详见LC76G芯片GNSS协议规范
注意:红线不是VCC,黑线不是GND
模块 | USB转串口 |
---|---|
VCC | 5V/3.3V |
GND | GND |
RX | TXD |
TX | RXD |
PPS | 不接 |
串口助手可以在此处下载
注:1.由于 GPS 室内搜星不稳定,请将模块或者天线放到阳台或窗户旁,或者直接在户外进行实验。
2. 模块首次定位(冷启动),在正常情况下(户外,天气良好,没有大型建筑遮挡),需要35秒时间才能定位成功,请耐心等待。如果天气条件不好,可能需要更长的定位时间,甚至无法定位。
下载 u-center解压打开安装。运行程序,点击 Receiver 菜单,选择 Port,设置实际的串口号,Baudrate: 9600。点击 (连接按钮) ,即可连接到GPS模块, u-center 将显示各种信息,如下图:
树莓派提供C与pyton两种程序控制
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config
选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口:
模块 | RaspberryPi |
---|---|
VCC | 5V |
GND | GND |
TX | P15 |
RX | P14 |
PPS | 不接 |
下载安装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
或者点击下载示例程序,解压后放入树莓派
安装例程相关函数库
#打开树莓派终端,并运行以下指令 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/
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版本,如果没有出现说明安装出错
新版树莓派系统运行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
cd C make clean make sudo ./main
Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。
cd python sudo python main.py
预期效果
模块首次定位需要35秒的等待时间。
前面是模块输出的原始数据。
Time是L76X GPS Module输出的时间。
Latitude and longitude是输出的经纬度和经纬方向。
Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。
cd python sudo python main.py
预期效果 模块首次定位需要35秒的等待时间。
前面是模块输出的原始数据。
Time是L76X GPS Module输出的时间。
Latitude and longitude是输出的经纬度和经纬方向。
Baudu Coordinates 为转换后的百度地图坐标,复制坐标到http://www.gpsspg.com/maps.htm 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。
本例程已经在Arduino MEGA2560上进行了验证。
点击下载示例程序或在资料中下载。
模块 | Arduino |
---|---|
VCC | 5V |
GND | GND |
TX | RX2 |
RX | TX2 |
PPS | NC |
选择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 |
---|---|
VCC | 5V |
GND | GND |
TX | GP1 |
RX | GP0 |
PPS | NC |
本教程使用Thonny进行代码测试,点击下载相关IDE并安装后打开Thonny
1. 点击下载示例程序
2. 解压示例程序; 3. 打开Thonny,先确认已经连接到了pico,之后在左上角打开解压后的程序路径,右键pico文件夹,选择上传,如图所示
1. 打开Thonny IDE,选择pico目录,双击打开coordinate_convert.py文件然后运行例程,如图所示
2. 天气晴朗条件下,LC76G上电后约30秒会获取到定位信息,如下图运行程序显示的信息
3.用户可以复制Thonny中terminal显示的定位信息,使用Google Map,Baidu Map进行坐标标注
模块 | ESP32 |
---|---|
VCC | 5V |
GND | GND |
TX | P16 |
RX | P17 |
PPS | NC |
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
C:\Users\xutong\AppData\Local\Arduino15
注意:将里面用户名:xutong替换成自己的用户名
模块首次定位需要35秒的等待时间.(如果信号条件不佳可能会更久)
前面是模块输出的原始数据。Time是L76X GPS Module输出的时间。Lat和Lon是输出的经纬度和经纬方向。
B_Lat和B_Lon为转换后的百度地图坐标,复制坐标到http://api.map.baidu.com/lbsapi/getpoint/,就可以看到你的位置了(坐标格式为经度Lat在前,纬度Lon在后,中间用英文符号的逗号分隔)。
该示例已在烧录ubantu系统的JETSON-NANO-DEV-KIT开发板上验证
模块 | JETSON-NANO-DEV-KIT |
---|---|
VCC | 5V |
GND | GND |
TX | 10 |
RX | 8 |
PPS | NC |
使用apt-get工具安装python工具pip
sudo apt-get install python3-pip #python3 #之后需要输入用户密码验证
sudo apt-get install python2-pip #python2 #之后需要输入用户密码验证
等待安装完成。
#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 左边选择百度地图,就可以看到你的位置了(如果直接去“百度拾取坐标系统”需要交换经纬度两个数的位置)。
下面以GNRMC为例,解析获取到的定位信息,如下所示:
有的,海拔高度是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:校验和,用于检查数据的完整性。
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841