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

来自Waveshare Wiki
跳转至: 导航搜索
第92行: 第92行:
  
 
运行示例程序程序后生成的坐标复制到高德地图API
 
运行示例程序程序后生成的坐标复制到高德地图API
 +
安装python3-venv包,如果还没安装的话
 +
sudo apt install python3-venv
 +
创建一个新的虚拟环境
 +
python3 -m venv myenv &&source myenv/bin/activate
 +
激活虚拟环境
 +
source myenv/bin/activate
 +
现在你可以在虚拟环境中安装requests
 +
 
  sudo pip3 install pyserial
 
  sudo pip3 install pyserial
 
  sudo pip3 install pynmea2
 
  sudo pip3 install pynmea2

2024年2月27日 (二) 15:41的版本

获取经纬度等位置信息

由于 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

安装python3-venv包,如果还没安装的话
sudo apt install python3-venv

创建一个新的虚拟环境

python3 -m venv myenv &&source myenv/bin/activate

激活虚拟环境 source myenv/bin/activate

现在你可以在虚拟环境中安装requests
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

更多相关教程