“L76X 精准定位”的版本间的差异

来自Waveshare Wiki
跳转至: 导航搜索
第92行: 第92行:
  
 
运行示例程序程序后生成的坐标复制到高德地图API
 
运行示例程序程序后生成的坐标复制到高德地图API
 +
sudo pip3 install pyserial
 
  sudo pip3 install pynmea2
 
  sudo pip3 install pynmea2
 
  sudo pip3 install pynmeagps
 
  sudo pip3 install pynmeagps
  wget https://www.waveshare.net/w/upload/1/17/SIMXXX-GNSS.zip
+
  wget https://www.waveshare.net/w/upload/a/a5/LXXX-GNSS.zip
 
  sudo python3 SIM7600X-GNSS.py
 
  sudo python3 SIM7600X-GNSS.py
 
[[File:SIMXXX longitude,latitude.png|800px]]
 
[[File:SIMXXX longitude,latitude.png|800px]]

2023年10月17日 (二) 14:55的版本

获取经纬度等位置信息

由于 GPS 室内搜星不稳定,请将模块或者天线放到阳台或窗户旁,或者直接在户外进行实验。 插上GPS天线,并将接收器标签面朝下置于空旷的室外,在正常情况下(户外,天气良好,没有大型建筑遮挡)上电需要等待约1分钟才能接收到定位信号;如果天气条件不好,可能需要更长的定位时间,甚至无法定位

配置串口

sudo raspi-config
选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口
L76X GPS Module rpi serial.png

树莓派2B/zero,用户串口设备号为ttyAMA0;可以用以下命令行确认,serial0为选用的串口设备号,例如下图这样的是ttyS0为串口:

ls -l /dev/serial*

RM500U-serial.png

  • 打开NEMA获取详细信息
sudo minicom -D /dev/ttyS0
  • 单位转换
ddmm.mm--> dd.mm.ss: 度数不变,分数*100/60 ;如2232.448620--> 22.(32448620*100/60)= 22.54081033
  • 代码注释
from socket import socket
import sys
import re
import pynmea2
import serial
import chardet
import time
import math
import json

# 全局变量
global Latitude
global Longitude
global line
global line1
global ser2

# 圆周率及相关参数
x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # Semi-major axis
ee = 0.00669342162296594323  # Eccentricity squared

# 坐标转换函数
def _transformlng(longitude, latitude):
    # ...
    return ret

def _transformlat(longitude, latitude):
    # ...
    return ret

# 主循环
def loop():
    global ser1
    ser1 = serial.Serial("/dev/ttyS0", 9600)
    print("ttyDEV Open!!!")
    while True:
        line = str(ser1.readline(), encoding='utf-8')
        if line.startswith("$GNRMC"):
            global Longitude
            global Latitude
            rmc = pynmea2.parse(line)
            if re.match("^\d+?\.\d+?$", rmc.lat) is not None:
                print(rmc)
                latitude = rmc.latitude
                longitude = rmc.longitude

                # 坐标转换
                # ...

                # 打印经纬度信息
                print("longitude,latitude")
                print("" + str(mglng) + "," + str(mglat) + "")
                time.sleep(2)

# 清理函数
def destroy():
    ser1.close()
    print("ttydev Close!!!")

try:
    loop()
except KeyboardInterrupt:
    destroy()

运行示例程序程序后生成的坐标复制到高德地图API

sudo pip3 install pyserial
sudo pip3 install pynmea2
sudo pip3 install pynmeagps
wget https://www.waveshare.net/w/upload/a/a5/LXXX-GNSS.zip
sudo python3 SIM7600X-GNSS.py

SIMXXX longitude,latitude.png

114.0832857092161,22.53842762954979

我的位置

在世界贸易贸易广场的南侧窗边定位,定位和小编所在位置有1-2米的误差;不同的测试环境和转换算法,可能误差有所差异。
SIMXXX gaode.png

更多相关教程